Docker私有仓库概述
Docker私有仓库介绍
Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署在本地云环境中,用于组织内部开发、测试以及生产环境中的容器镜像管理。由于业务敏感性需要,一般在组织内部会创建私有的仓库,内部各个组织单位可以共享,外部访问需要认证授权,因此可以保证数据的安全性。
有哪些私有仓库
以下是一些常见的Docker私有仓库:
- Harbor:作为一个企业级的Docker Registry服务,Harbor提供了安全、可信赖的镜像存储和管理功能。它支持RBAC权限控制、镜像复制、镜像签名、漏洞扫描等功能。
- Docker Trusted Registry (DTR):由Docker官方推出的企业级Docker私有仓库服务,与Docker Engine紧密集成,支持高度的安全性和可靠性。
- Portus:一个开源的Docker镜像管理和认证服务,提供用户管理、团队管理、镜像审核等功能,与Docker Registry兼容。
- Nexus Repository Manager:虽然主要是用于构建和管理Java组件,但也可以用作Docker私有仓库。它具有强大的存储管理和权限控制功能。
- GitLab Container Registry:GitLab集成了容器注册表功能,允许您存储、管理和分发Docker镜像。这是GitLab自带的功能,无需额外部署。
- AWS Elastic Container Registry (ECR):如果使用AWS云服务,可以考虑使用AWS ECR作为私有仓库。它与AWS的其他服务集成紧密,对AWS用户来说是一个方便的选择。
本篇使用Harbor搭建Docker私有仓库。
Docker Harbor简介
Harbor是一个开源的企业级Docker Registry服务,它提供了一个安全、可信赖的仓库来存储和管理Docker镜像。Harbor翻译为中文名称为"庇护;居住;“。可以理解为是Docker镜像的"居住环境"或者是镜像的"庇护所”。Harbor最初由VMware公司开发,旨在解决企业级Docker镜像管理的安全和可信任性问题。VMware于2016年发布,在2017年,VMware将Harbor开源,这使得更广泛的社区和组织可以自由地使用和贡献代码。Harbor是一个成熟、功能丰富且安全可靠的企业级Docker Registry服务,为企业容器化应用的部署和管理提供了强大的支持。
Harbor官网地址:Harbor (goharbor.io)
Github开源地址:https://github.com/goharbor/harbor
部署并配置Harbor仓库
Harbor下载
这里下载当前最新的版本harbor-offline-installer-v2.12.1.tgz,开源项目地址https://github.com/goharbor/harbor/releases。
提供两种下载方式:
- 通过wget命令下载
- 通过github下载地址下载
通过Linux命令wget下载
wget https://github.com/goharbor/harbor/releases/download/v2.12.1/harbor-offline-installer-v2.12.1.tgz
GitHub下载
下载地址:https://github.com/goharbor/harbor/releases 下载离线版本
下载成功后,把包通过 远程连接工具,如electerm 、xftp 、上传到服务器。
解压
解压文件
[root@localhost soft]# tar -zxvf harbor-offline-installer-v2.12.1.tgz
harbor/harbor.v2.12.1.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl
启动Harbor
修改配置文件
复制harbor.yml.tmpl 文件并重命名为harbor.yml 。修改该文件设置hostname、端口、数据库密码等配置项。
cd harbor && cp harbor.yml.tmpl harbor.yml
vi harbor.yml修改配置文件:
#修改hostname的值,如果没有域名就使用本机IP地址
hostname: 192.168.42.133
# hostname: hub.hauxc.dev.com
#配置启动端口号
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 5000
# 如果没有申请证书,需要隐藏https
#https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
#启动成功后,admin用户登录密码
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: Harbor@hau123
启动harbor
配置文件修改成功后,执行 install.sh 脚本进行安装harbor
./install.sh
启动报错:
[Step 0]: checking if docker is installed ...
Note: docker version: 26.1.3
[Step 1]: checking docker-compose is installed ...
/opt/harbor/common.sh: line 119: docker-compose: command not found
✖ Failed to parse docker-compose version.
可以看到,该服务器安装的 docker 没有安装 docker-compose 插件。
安装docker-compose
进入docker-compose 官网下载执行文件,地址: https://github.com/docker/compose 下载成功后,把可执行文件加入Linux 系统命令目录。
cp docker-compose-linux-x86_64 /usr/local/bin/
重命名:
mv docker-compose-linux-x86_64 docker-compose
添加可执行权限:
chmod +x /usr/local/bin/docker-compose
执行命令查看是否安装成功:
docker-compose --version
如果需要卸载,直接删除即可:
rm -f /usr/bin/docker-compose
再次启动
./install.sh
提示安装成功。接下来就可以访问Harbor了。访问IP+端口:http://192.168.42.133:5000
访问成功,由于Harbor是通过docker管理的,所以启动非常方便。如果首页访问成功说明Docker私有仓库已经部署成功了。
Cannot connect to the Docker daemon
如果安装过程报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
,可能是因为docker运行状态异常,可以先检查docker是否启动。
[root@localhost harbor]# ./install.sh
[Step 0]: checking if docker is installed ...
Note: docker version: 26.1.3
[Step 1]: checking docker-compose is installed ...
Note: Docker Compose version v2.27.0
[Step 2]: loading Harbor images ...
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@localhost harbor]#
# 检查docker运行状态
[root@localhost harbor]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: https://docs.docker.com
[root@localhost harbor]#
# docker未运行,使用命令启动
[root@localhost harbor]# systemctl start docker
[root@loc