Docker仓库用于镜像的存储,是镜像分发、部署的关键。
Docker官方提供了公有仓库Docker Hub,国内也有一些公有仓库,我们也可以自己搭建私有的Docker仓库。
1.Docker Hub
Docker默认使用官方的公有仓库Docker Hub,搜索、下载镜像无需账号,上传镜像则需要账号认证。
相关命令
# 登录Docker Hub
docker login
# 上传镜像
docker push IMAGE:VERSION
# 搜索镜像
docker search IMAGE
# 下载镜像
docker pull IMAGE
# 从Docker 中国官方镜像加速服务器下载镜像
docker pull registry.docker-cn.com/library/openjdk:11-jre
2.私有仓库
某些场景下,由于网络、安全、网速等原因,公有仓库并不合适,我们需要构建自己的私有仓库。Docker官方提供了docker-registry组件,方便我们快速构建私有镜像。需要注意的是docker-registry现在已经更新到v2版本,并且使用了新的项目名称docker-distribution
。
2.1 镜像方式构建私有仓库
Docker官方提供了docker-registry的镜像,直接使用该镜像是最简单的方式。使用以下命令,Docker会自动从Docker Hub拉取docker-registry的镜像,然后启动docker-registry服务,docker-registry默认监听5000端口。
docker run -d -p 5000:5000 --restart always --name docker-registry registry
如果需要设置环境变量,可以使用-e
设置参数。
2.2 RPM包方式构建私有仓库
EPEL中已经包含docker-registry的包,通过yum工具可以直接安装。
yum install -y docker-distribution
启动服务、查看服务状态
systemctl start docker-distribution && systemctl status docker-distribution
2.3 构建安全的私有仓库
To be continued...
2.4 使用私有仓库
查看Registry中所有镜像信息(以下示例中,假定私有仓库的ip地址为192.168.100.101)
curl http://192.168.100.101:5000/v2/_catalog
上传镜像
docker push 192.168.100.101:5000/<image>:latest
从私有仓库下载镜像
docker pull 192.168.100.101:5000/<image>:latest
从私有仓库pull镜像并启动
docker run -it 192.168.100.101:5000/<image>:latest
2.5 说明
为了安全起见,docker默认不允许不安全的私有仓库,如果要使用上述私有仓库,需要修改部分配置。
/etc/docker/daemon.json
{ "insecure-registries": ["172.18.20.54:8000"] }
/lib/systemd/system/docker.service中添加EnvironmentFile属性
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
EnvironmentFile=-/etc/docker/daemon.json
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
完成上述修改后,docker需要重启才能生效。