
Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了。
如果是在内网环境中,可以之间使用,如果是外网访问内网,可以借助花生壳等做个内网穿透。
/Users/miuye/Public/registry 是我个人的挂载的本地目录,push到该仓库的镜像会保存在该路径下。
安装完成后,可以通过访问 http://127.0.0.1:5000/v2 进行验证,看到如下图片就说明成功了。
以httpd作为实验对象推送到私有仓库中。
推送完后可以通过访问 http://127.0.0.1:5000/v2_catalog 进行验证
报错:http: server gave HTTP response to HTTPS client
原因:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。
解决办法 :
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面加参数--insecure-registry 192.168.1.66:5000
【注意:192.168.1.66是我私有仓库所在主机的ip,需要改成自己的仓库ip或者域名】
修改好后重启docker 服务
加入以下内容:(注意ip改成自己的)
修改好后重启docker 服务
4.1 在push端添加host后通过域名进行push
2、pull端添加hosts后通过域名进行pull
docker.service 和 daemon.json 也修改为对应域名
这样push和pull的时候如果仓库ip发生了变化,只需要修改hosts即可。
参考链接:
https://www.cnblogs.com/huanchupkblog/p/10843800.html
https://www.cnblogs.com/programmer-tlh/p/10996443.html
如有不对,烦请指出,感谢!
环境准备环境:两个装有Docker的Ubuntu虚拟机
虚拟机一:192.168.112.132 用户开发机
虚拟机二:192.168.112.136 用作私有仓库
此处我们准备了两个虚拟机,分别都安装了Docker,其中132机器用作开发机,136机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。
搭建私有仓库
首先在136机器上下载registry镜像
$ sudo docker pull registry
下载完之后我们通过该镜像启动一个容器
$ sudo docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:
$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
可以看到我们启动了一个容器,地址为:192.168.112.136:5000。
测试
接下来我们就要 *** 作把一个本地镜像push到私有仓库中。首先在132机器下pull一个比较小的镜像来测试(此处使用的是busybox)。
$ sudo docker pull busybox
接下来修改一下该镜像的tag。
$ sudo docker tag busybox 192.168.112.136:5000/busybox
接下来把打了tag的镜像上传到私有仓库。
$ sudo docker push 192.168.112.136:5000/busybox
可以看到push失败,具体错误如下:
2015/01/05 11:01:17 Error: Invalid registry endpoint https://192.168.112.136:5000/v1/: Get https://192.168.112.136:5000/v1/_ping: dial tcp 192.168.112.136:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flagsimply place the CA certificate at /etc/docker/certs.d/192.168.112.136:5000/ca.crt 11
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改132机器的配置)Ubuntu下配置文件地址为:/etc/init/docker.conf,在其中增加–insecure-registry 192.168.112.136:5000如下所示:
$ sudo vi /etc/init/docker.conf
修改完之后,重启Docker服务。
$ sudo restart docker
重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。
$ sudo docker push 192.168.112.136:5000/busybox
可以看到镜像已经push到私有仓库中去了。
接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像。
$ sudo docker pull 192.168.112.136:5000/busybox
到此就搭建好了Docker私有仓库。上面搭建的仓库是不需要认证的,我们可以结合nginx和https实现认证和加密功能。
镜像保存在Registry的仓库中,默认的Registry是由Docker公司运营的公共Registry服务,即Docker Hub,网址为: https://hub.docker.com/ 。可以把Docker Hub看成类似于Github一样的网址。
1、登录「docker」
命令:docker login,显示Login Succeeded说明成功,没登录的话,需要输入用户名username和密码password。
2、创建镜像
使用docker-compose来创建镜像,在yml文件中还要定义项目所依赖的容器(redis和mysql)
命令:docker-compose up -d
docker-compose.yml文件如下:
3、查看镜像
命令:docker images
说明:
REPOSITORY:该镜像所属的仓库名称
TAG:镜像的标签(见下面介绍)
IMAGE ID:镜像ID
CREATED:镜像创建的时间
SIZE:镜像的大小
4、tag标签(镜像的标签)
标签介绍
作用:一个仓库中可以有多个镜像。为了区分一个仓库中不同的镜像,Docker提供了标签(tag)的功能,每个镜像在列出来时都会带有一个标签,如:16.04、18.04、quantal或者precise等。
每个标签对组成特定镜像的一些镜像层进行标记(比如,标签16.04就是对所有ubuntu 16.04镜像的层的标记)
同一个仓库中,可以同时存在多个相同的镜像(IMAGE ID相同),只要标签(TAG)不同就可以了
命令:docker tag jeecg-boot-system:latest xiaoxiaoyuyu123/aids:jeecg-boot-system
说明:
jeecg-boot-system:latest(本地仓库名称+标签)
xiaoxiaoyuyu123/aids:jeecg-boot-system(私服仓库地址+标签)
5、上传到私有仓库
命令:docker push xiaoxiaoyuyu123/aids:jeecg-boot-system
说明:
xiaoxiaoyuyu123/aids:jeecg-boot-system(私服仓库地址+标签)
1、先登录私服地址,然后从上面pull下来镜像
命令:docker pull xiaoxiaoyuyu123/aids:jeecg-boot-system
2、上传服务器yml文件,使用docker-compose来启动镜像
命令:docker-compose -f ./docker-compose-server.yml up
docker-compose-server.yml文件如下:
好啦, 关于Docker镜像仓库的使用分享就到这啦~
Webfunny专注于微信小程序、H5前端、PC前端线上应用实时监控,实时监控前端网页、前端数据分析、错误统计分析监控和BUG预警,第一时间报警,快速修复BUG!支持私有化部署,容器化部署,可支持千万级PV的日活量!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)