搭建Docker私有仓库主要有以下几种方式:
使用Docker官方提供的Registry镜像:Docker官方提供了一个用于构建私有镜像仓库的Registry镜像,只需将镜像下载并运行容器,然后暴露5000端口即可使用。可以通过修改Docker的配置文件daemon.json,在其中添加私有镜像仓库地址来实现。
在Docker官方网站中直接创建:在Docker的官方网站(https://hub.docker.com/)中,可以创建属于自己的账户,然后在Repository中创建自己的仓库。这种方式比较简单,但需要网络连接,且对于大规模使用可能存在一些限制。
使用第三方工具Harbor:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,提供了丰富的功能,如用户管理、镜像复制、访问控制等。此外,它还提供了图形化界面,方便用户进行操作和管理。使用Harbor需要下载并安装,同时需要Docker Compose的支持。
自行搭建本地仓库:除了使用官方或第三方的工具外,还可以自行搭建本地仓库。这种方式需要一定的技术能力和资源投入,但可以根据实际需求进行定制和优化。自行搭建本地仓库时,可以考虑使用开源的镜像仓库软件,如Nexus Repository等。
需要注意的是,在搭建Docker私有仓库时,需要考虑到安全性、可用性和扩展性等方面的问题。例如,可以添加证书加密功能和用户登录认证来提高安全性;通过负载均衡和容错机制来提高可用性;根据实际需求进行扩展和优化等。
总的来说,选择哪种方式搭建Docker私有仓库取决于具体需求和实际情况。如果只需要简单地存储和管理镜像,可以考虑使用Docker官方提供的Registry镜像或第三方工具Harbor;如果需要更多的定制和优化,可以考虑自行搭建本地仓库或使用其他开源的镜像仓库软件。
使用registry搭搭建Docker私有仓库的步骤如下:
1)拉取私有仓库镜像:使用命令docker pull registry
来拉取私有仓库的镜像。私有仓库本身就是一个镜像,通过该命令可以从Docker Hub或其他镜像仓库中获取。
2)启动私有仓库容器:使用命令docker run -d -p 5000:5000 --restart=always --name registry registry
来启动私有仓库容器。这将创建一个名为registry的容器,将容器内的5000端口映射到主机的5000端口,并设置为总是重启。
另外,如果你希望将上传的镜像存放到本地的指定路径,可以使用-v参数来指定本地路径,例如:docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
。
启动成功后,可以使用
docker ps
查看
3)测试私有仓库:在浏览器中输入http://<your-server-ip>:5000/v2/_catalog
,将替换为你的服务器IP地址,如果能够正常访问,说明私有仓库搭建成功。
注意:如果你的私有仓库没有使用https,需要在Docker客户端上修改/etc/docker/daemon.json
文件(如果文件不存在则新建),添加私有仓库地址到"insecure-registries"列表中,然后重启Docker服务。例如,在daemon.json文件中添加以下内容:
{
"insecure-registries": ["<your-server-ip>:5000"]
}
然后,使用命令systemctl restart docker
重启Docker服务。
当配置了这个选项后,Docker 在与这些指定的镜像仓库通信时,将不再验证 TLS 证书,从而绕过了 Docker 的安全机制。
4)上传镜像到私有仓库:首先,使用docker tag
命令将本地镜像标记为私有仓库的镜像,然后使用docker push
命令将镜像上传到私有仓库。例如:
docker tag <image-id> <your-server-ip>:5000/<image-name>:<image-version>
docker push <your-server-ip>:5000/<image-name>:<image-version>
# 例如
docker tag e8f7073d1aa1 192.168.56.102:5000/mynginx:1.0
docker push 192.168.56.102:5000/mynginx:1.0
将<image-id>
替换为你要上传的镜像的ID,<your-server-ip>
替换为你的服务器IP地址,<image-name>
和<image-version>
分别替换为镜像的名称和版本号。
5)已上传到私有仓库中的镜像,可以使用docker pull
拉取
docker pull <仓库地址>/<镜像名称>:<标签>
以上步骤完成后,你就成功搭建了一个Docker私有仓库,并可以将镜像上传到该仓库中。其他机器可以通过拉取私有仓库中的镜像来使用该镜像。
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。以下是使用Harbor搭建私有仓库的一般步骤:
1) 环境准备:准备一台具有足够磁盘空间的虚拟机或物理机,建议关闭防火墙和SELinux,并确保时间同步服务已配置。
2)安装Docker和Docker Compose:在目标机器上安装Docker和Docker Compose。可以从Docker官网下载并安装Docker,然后使用pip或下载二进制文件来安装Docker Compose。
3)下载并解压Harbor安装包:从Harbor的GitHub仓库下载最新版本的离线安装包。使用wget命令下载,并使用tar命令解压。
wget https://github.com/goharbor/harbor/releases/download/vX.X.X/harbor-offline-installer-vX.X.X.tgz
tar xvf harbor-offline-installer-vX.X.X.tgz
其中,vX.X.X应替换为实际的版本号。
官网地址:https://github.com/goharbor/harbor/releases
例如,安装版本v2.10.0
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar xvf harbor-offline-installer-v2.10.0.tgz
4) 配置Harbor:解压后,在目录下会生成一个harbor.yml.tmpl
文件(复制harbor.yml.tmpl
并重命名为harbor.yml
)。修改此harbor.yml
以满足你的需求,例如设置hostname、端口、数据库密码等。
- hostname一定要设置,如果没有域名,先设置为本机ip地址
- 默认文件配置了https,如果没有请先注释
5) 安装Harbor:在解压的目录下运行./install.sh
脚本开始安装。安装过程中会检查环境、配置文件等,并下载所需的Docker镜像。
安装完成后,会出现如下信息
[+] Running 10/10
? Network harbor_harbor Created 0.2s
? Container harbor-log Started 0.0s
? Container harbor-portal Started 0.1s
? Container registry Started 0.1s
? Container redis Started 0.1s
? Container harbor-db Started 0.1s
? Container registryctl Started 0.1s
? Container harbor-core Started 0.0s
? Container harbor-jobservice Started 0.0s
? Container nginx Started 0.0s
? ----Harbor has been installed and started successfully.----
[root@localhost harbor]#
6) 访问Harbor:安装完成后,使用配置的IP地址和端口(或域名)访问Harbor。默认用户名是admin
,密码是Harbor12345
。登录后可以创建项目、上传和下载镜像等。
例如,在浏览器中输入:http://192.168.56.120/
进入默认项目library,点击右上角的推送命令,可以看见各种方式的推送命令
1)配置 Docker 客户端
修改 Docker 守护进程的配置,将你的仓库地址添加到不安全注册表的列表中。这可以通过编辑 /etc/docker/daemon.json
文件来实现(如果文件不存在,则创建一个):
{
"insecure-registries": ["192.168.56.120"]
}
然后重启 Docker 守护进程:sudo systemctl restart docker
注意:这里的 192.168.56.120 是你的 Docker 仓库的 IP 地址。如果你使用的是域名,请替换为相应的域名。
2)使用 docker 进行登录和推送
在推送镜像之前要做一次登录
docker login 192.168.56.120 -u admin -p Harbor12345
Docker 客户端会将认证信息存储在 ~/.docker/config.json 文件中(对于 Linux 和 macOS 用户)或 Windows 用户的相应配置位置。只要这个文件中的认证信息没有过期或被手动删除,你就可以继续使用 Docker 客户端与仓库进行交互,而无需重新登录。
然后,先使用docker tag
把镜像按照约定格式命名,再使用docker push
推送
docker tag 237f00d92168 192.168.56.120/library/mynginx:1.1
docker push 192.168.56.120/library/mynginx:1.1
登录Harbor可以看见镜像已经推送上来了
3)使用docker pull 拉取镜像
docker pull <仓库地址>/<镜像名称>:<标签>
# 例如
docker pull 192.168.56.120/library/mynginx:1.1
注意:在生产环境中,建议使用HTTPS来保护镜像传输的安全,并考虑备份和恢复策略以防止数据丢失。此外,随着Harbor版本的更新,安装和配置过程可能会有所变化,建议参考官方文档进行操作。