Docker私有仓库详细搭建教程和遇到的坑

狂风中的少年 提交于 2020-01-21 15:54:22

7.1 私有仓库搭建与配置

公有仓库存储的都是公用镜像,jdk8啊,tomcat、mysql等等,私有仓库存放我们开发的应用,为了能在一个局域网共享这些镜像。

(1)拉取私有仓库镜像(如果有registry镜像,此步省略)

docker私有仓库本身就是一个镜像,先pull下来

docker pull registry

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WSCKUv9T-1579582134080)(Docker(1)].assets/image-20200121121718622.png)

(2)根据镜像创建容器

docker run -di --name=registry -p 5000:5000 registry(镜像名)

把容器的5000端口映射成宿主机的5000端口。完成这步私有仓库就构建好了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGzmm9Sf-1579582134081)(Docker(1)].assets/image-20200121121901258.png)

(3)打开浏览器 输入地址http://服务器ip地址:5000/v2/_catalog看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjr4ufOY-1579582134082)(Docker(1)].assets/image-20200121122045590.png)

(4)修改daemon.json

这一步是让docker信任这个私有仓库的地址,这样才能把docker本地的镜像上传到私有仓库。

添加配置

vi /etc/docker/daemon.json

先设置下镜像源,提高下载速度

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

然后添加以下内容,保存退出。

{
"insecure-registries":["你的ip地址:5000"]
} 

如果要写多个私服,在中括号中添加即可。
注意这里时json,键值对,逗号隔开,不写逗号重启不了docker!
在这里插入图片描述

(5)重启docker 服务生效

systemctl restart docker

此时发现启动失败!!!

查看资料得知:如果是配置了国内镜像,并且镜像文件为/etc/docker/daemon.json,则修改文件后缀为.conf即可正常启动docker 服务

​ 修改文件名

mv /etc/docker/daemon.json /etc/docker/daemon.conf

之后就能正常启动了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hHL0AMpZ-1579582134084)(Docker(1)].assets/image-20200121123653431.png)

7.2 镜像上传至私有仓库

(1)标记此镜像为私有仓库的镜像

用tag对要上传到私有仓库的镜像打个标签

docker tag 【要打标签的镜像】 【指定私服地址/镜像名】(这样写在私服中就是你的镜像名)
docker tag ascdc/jdk8 你的ip:5000/原镜像名

然后docker images一下会发现多了个镜像你的ip:5000/原镜像名,他其实就是原镜像的引用,为了上传镜像做准备。

如果此时直接docker push 你的ip:5000/原镜像名可能不行,因为刚才重启了docker服务,你这个registry容器是关闭的(开启的当我没说),所以要再次启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svUOHcLi-1579582134085)(Docker(1)].assets/image-20200121124359192.png)

(2)再次启动私服容器

docker start registry

在这里插入图片描述
(3)上传标记的镜像

docker push 你的ip:5000/原镜像名 (这样写在私服中就是你的镜像名)

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!