本地的registry制作
1. 环境的准备
克隆一台一样docker虚拟机
主机名称 | ip |
---|---|
docker1 | 192.168.80.201 |
docker2 | 192.168.80.202 |
2. 制作
再docker1上启动registry
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry
docker的配置文件:(docker1 docker2上边都要做)
vim /etc/docker/daemon.json
每一行结束需要(逗号)结尾,最后一行不用
{
"registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.80.201:5000"]
}
重启docker,docker1 2
systemctl restart docker
systemctl restart docker
push镜像
首先改镜像的tag,预配置文件的ip一样,再后边加上项目名,然后软件名称,版本号
docker tag nginx 192.168.80.201:5000/yq/nginx:v1
docker push 192.168.80.201:5000/yq/nginx:v1
异地pull
docker2上配置文件好了,重启,就可以pull
pull的跟push的名称版本号一样
docker pull 192.168.80.201:5000/yq/nginx:v1
3. 本地镜像加安全验证
push的时候需要安全验证,pull的时候不需要
生成密码:
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd -Bbn yq 123 > /opt/registry-auth/htpasswd
docker rm -f `docker ps -aq`
docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry --name register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
这个时候push需要登录密码验证了
docker login 192.168.80.201:5000
yq
123
docker tag nginx 192.168.80.201:5000/yq/nginx:v2
docker push 192.168.80.201:5000/yq/nginx:v2
4. docker重启之后,容器自动开启
方式1:
--restart=always
docker run -d --restart=always nginx
方式2:“live-restore”: true
docker server配置文件/etc/docker/daemon.json参考
{
"live-restore": true
}