有时候使用 Docker Hub 这样的公共仓库可能不方便,可以创建一个私有仓库供内部使用。docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。
本文将介绍如何搭建和使用私有仓库,具体操作步骤如下:
服务器信息
192.168.227.200 私有仓库服务器
192.168.227.195 远程调用服务器
一、搭建私有仓库
1.docker push http 问题:
docker registry使用的是https传输协议,所以使用docker pull命令下载远程镜像时,docker registry没有使用https协议传输命令的时候就会报错误。
2.解决docker push http 问题,在/etc/sysconfig/docker文件下添加“--insecure-registry 192.168.227.200:5000”
# vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.227.200:5000 --log-driver=journald --signature-verification=false'
3.下载registry 镜像并且启动registry 容器
# docker run -d -p 5000:5000 --name registry --restart=on-failure:5 -v /opt/data/registry:/tmp/registry registry
4.创建成功了之后我们可以使用命令查看registry仓库里的镜像,可以看到目前还是空的,没有镜像
# curl -X GET http://192.168.227.200:5000/v2/_catalog{"repositories":[""]}
5.上传镜像到registry仓库
5.1 查看本地镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry latest d1fd7d86a825 4 months ago 33.3 MB
5.2 修改镜像名
# docker tag d1fd7d86a825 192.168.227.200:5000/centos
5.3上传
# docker push 192.168.227.200:5000/centos
The push refers to a repository [192.168.227.200:5000/centos]
Get https://192.168.227.200:5000/v1/_ping: http: server gave HTTP response to HTTPS client
6、验证registry仓库里的镜像是否上传成功
# curl -X GET http://192.168.227.200:5000/v2/_catalog
{"repositories":["centos"]}
二、使用远程仓库
1、配置daemon.json
# vi /etc/docker/daemon.json
{
"insecure-registries": ["192.168.227.200:5000"]
}
2、重启docker服务
# service docker restart
3、下载远程镜像
# docker pull 192.168.227.200:5000/centos:latest
4、验证远程镜像是否下载成功
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.227.200:5000/centos latest d1fd7d86a825 4 months ago 33.26 MB
网友评论