背景:docker-registry 是自己的镜像库,相当于maven的私服,我们的项目要push到我们的docker私库
一、Docker Registry安装
官方在Docker Hub上提供了Docker Registry的镜像。我们可以直接使用该镜像构建一个Registry容器来搭建我们的Registry私有仓库。
# docker search registry
# docker run -d -p 5000:5000 -v /docker/registry/data:/var/lib/registry --privileged=true --restart=always --name registry registry:latest
# docker ps
打开浏览器访问http://{IP}:5000/v2/,出现下图表示安装成功
二、Docker Registry使用
- 制作私有仓库镜像
- 先从官方Docker Hub上拉取busybox镜像。
- # docker pull busybox
# docker images
- 修改该镜像的tag
- # docker tag docker.io/busybox:latest 192.168.232.25:5000/busybox:latest
# docker images
- # docker tag docker.io/busybox:latest 192.168.232.25:5000/busybox:latest
- 推送该镜像到Registry私有仓库
- docker push {ip}:5000/busybox:latest
如果出现:
The push refers to a repository [192.168.232.25:5000/busybox]
Get https://192.168.232.25:5000/v1/_ping: http: server gave HTTP response to HTTPS client
因为Docker与Docker Registry交互默认使用https,然而此处搭建的Docker Registry只提供http服务,所以当和Registry私有仓库交互时会失败,为了解决这个问题需要在启动Docker时配置Registry不安全选项。
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"http://68cdf6cf.m.daocloud.io"
],
"insecure-registries":["192.168.232.25:5000"]
}
- 重启Docker,并重启registry容器
- # systemctl restart docker
# docker start registry
- # systemctl restart docker
- 重新推送busybox镜像到Registry私有仓库,并成功。
- # docker push {ip}:5000/busybox:latest
三、从私有仓库拉取镜像
- 在Docker Client终端拉取Registry私有仓库镜像。
-
docker pull {ip}:5000/busybox:latest
-
报相同的错误,请进行相同的配置,并重启Docker。然后重新拉取busybox镜像。