安装Docker Registry,它可以用来存储和管理自己的镜像
docker pull registry:2.4.1
运行Registry容器
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry
-d 是后台启动容器。
-p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。
-v 将容器 /var/lib/registry目录映射到宿主机的/myregistry,用于存放镜像数据。
在pull或者push镜像时报拒绝连接的错误
由于docker1.3版本后pull ,push等操作都是采用https请求,为了不考虑创建证书,所以我们可以添加一个不安全的http连接
创建或者修改/etc/docker/daemon.json 文件,并在其中写入
{ "insecure-registries": ["192.168.102.2:5000"] }
其中为安装了Registry的机器ip地址。需要注意的是在安装registry的节点和客户端需要访问私有Registry的节点都需要执行此步操作。
修改文之后执行以下命令重启节点docker。
systemctl daemon-reload systemctl restart docker
通过 docker tag重命名镜像,使之与registry匹配
docker pull hello-world
docker tag hello-world 192.168.105.2:5000/hello-world
docker push 192.168.105.2:5000/hello-world
此时hello-world就被push到了本地的镜像仓库,方便其他节点pull其他节点下载镜像
docker pull hello-world 192.168.105.2:5000其他节点上传镜像
docker push 192.168.105.2:5000/hello-world配置带用户权限的docker registry v2
到上面为止,registry已经可以使用了。如果想要控制registry的使用权限,使其只有在登录用户名和密码之后才能使用的话,还需要做额外的配置。registry的用户名密码文件可以通过htpasswd来生成:
mkdir /opt/registry-var/auth/ docker run --entrypoint htpasswd registry:2.4.1 -Bbn yoho 111111 >> /opt/registry-var/auth/htpasswd
上面这条命令是为yoho用户名生成密码为111111的一条用户信息,存在/opt/registry-var/auth/htpasswd文件里面,文件中存的密码是被加密过的。使用带用户权限的registry时候,容器的启动命令就跟上面不一样了,将之前的容器停掉并删除
docker container stop registry-center(容器name,可以通过docker ps查看) docker container rm -v registry-center
创建带用户认证的registry
docker run -d -p 5000:5000 --restart=always --name registry-center -v /myregistry:/var/lib/registry -v /opt/registry-var/auth:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry这时,如果直接想查看仓库信息、pull或push都会出现权限报错。必须先使用docker login 命令来登录私有仓库:
docker login 192.168.105.2:5000
转载于:https://www.cnblogs.com/MessChenly/p/9040129.html