一.背景
由于服务部署中如果手动分发脚本的话会很繁琐,而且容易出错,因此我们会将镜像上传到自己的私有仓库上然后通过docker自己去拉取最新镜像来实现服务的部署和更新,这里主要记录一下我在部署该服务的时候遇到过的一些问题,和介绍一下怎么进行镜像推送拉取。
二.Docker如何将本地镜像推送到私有仓库
1.首先看一下我们的docker目录,在配置文件中有没有配置私有库的配置信息,默认配置文件位置在/etc/docker/daemon.json,如果没有的话自己创建一个,在启动docker的时候会自己去查找该配置文件,如果没有自动加载的话需要自己reload。
2.打开改配置文件,执行vi /etc/docker/daemon.json,加入该配置参数,如果是新建的话直接把该语句复制进去就可以了,这是配置私有仓库的地址:
{
"insecure-registries":["10.0.0.66:5000"]
}
3.kill掉docker进程后,重启docker进程
dockerd & #这是tar包的启动方式,根据自己安装的方式重启docker就可以了
4.如果配置文件没有被读到,需要自己reload后再重启docker,执行
sudo systemctl daemon-reload
5.然后就可以对本地镜像打标签,ck:laster是本地镜像,10.0.0.66:5000/ck:0.1是私有仓库镜像,0.1是版本号自定义即可,执行
docker tag ck:latest 10.0.0.66:5000/ck:0.1
6.然后就可以推送镜像到私有仓库上,执行
docker push 10.0.0.66:5000/ck:0.1
然后打开10.0.0.66:8000(根据自己的实际情况),在自己的私有仓库上即可看到刚刚推送上去的镜像。
7.如果要拉取镜像的话,只需要执行
docker pull 10.0.0.66:5000/ck:0.1
同理在docker-compose.yml里面也只需要配置该镜像:10.0.0.66:5000/ck:0.1即可完成自动拉取。
三.实际部署遇到的问题
1.在推送镜像的时候没有配置镜像仓库,出现的问题如下,即/etc/docker/daemon.json文件,会导致镜像不知道要推送到哪里。
Error response from daemon: Get https://10.0.0.66:5000/v2/: http: server gave HTTP response to HTTPS client
2.配置完镜像仓库没有重新加载,导致配置不生效,即sudo systemctl daemon-reload 命令。