docker私有仓库的搭建以及使用

在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。这一篇介绍registry、harbor两种私有仓库搭建。

一:registry 私有镜像的搭建

1.拉取registry镜像

docker pull registry

2.运行并启动registry容器

docker run -di --name=myregistry -p 5000:5000 registry

3.打开浏览器 输入下面地址查看是否成功

http://私有仓库ip:端口/v2/_catalog  #显示{"repositories":[]},表示搭建成功

4.在daemon.json文件添加j键值对,表示让docker信任私有仓库地址,不然无法推送镜像

#修改daemon.json文件命令
vi /etc/docker/daemon.json
#按i表示进入编辑模式,添加下面的配置
{"insecure-registries":["私有仓库ip:端口"]}
#添加完成后,按esc键退出编辑模式,输入冒号(:),然后输入‘wq’,保存并退出

5.重启docker

#重启docker服务
systemctl restart docker
#启动私有仓库容器
docker start registry

到这里,私有仓库就搭建完成了

二:将镜像上传到私有仓库

1.标记镜像为私有仓库的镜像

docker tag 镜像 私有仓库ip:端口/取的镜像名
#自定义repository 不能有大写字母

2.推送已经标记的镜像

docker push 私有仓库ip:端口/标记后的镜像名

docker私有镜像仓库 设置账号密码 docker从私有仓库获取镜像_docker私有镜像仓库 设置账号密码

3.查看效果

http://私有仓库ip:端口/v2 #显示{"repositories":["镜像名"]},说明成功了

三:从私有仓库中拉取镜像

docker pull 私有仓库ip:端口/镜像名

如果私有仓库和客户端不在同一台服务器上,则需要进行以下配置:

#修改docker配置文件
vi /usr/lib/systemd/system/docker.service
#添加如下内容
--add-registry=私有仓库:端口 --insecure-registry=私有仓库:端口 \
#重新加载docker配置文件
systemctl daemon-reload
#重启docker
systemctl restart docker

注:如果本地存在同名的镜像需要先伤处镜像后再拉取

扩展

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry  -v /data/config.yml:/etc/docker/registry/config.yml --name myregistry registry
#第一个-v 是挂载的私有镜像存放的目录,挂载到本机后即使容器被删除,私有库中的镜像不会丢失
#第二个-v 是挂载 config.yml 配置文件,如果想要支持删除私有库中的镜像,需要修改该配置文件

挂载到本机后即使容器被删除,私有库中的镜像不会丢失
#第二个-v 是挂载 config.yml 配置文件,如果想要支持删除私有库中的镜像,需要修改该配置文件