centos 7.3( Docker version 19.03.12)
离线本地仓库 192.168.10.10
客户机 192.168.10.11
一.先在正常网络下,使用docker pull正常拉取镜像。
docker pull registry
2.使用docker images,查看已拉取的镜像
docker images
3.将镜像保存为本地文件docker save -o registry.docker 111622000b9b #
在当前目录下会生成一个registry.docker的文件,将其copy至U盘上。
二、开始在离线机器192.168.10.10安装本地registry(私有仓库)
1. 将下载打包后的镜像拷贝到要安装私有仓库的服务器运行docker load -i ./registry.docker
2.如果镜像名称为空,可以使用以下命令修改#docker tag imageID 镜像名:版本号
docker tag 2d4f4b5309b1 registry:latest
3.修改配置文件,添加一句信任私有仓库
vi /etc/docker/daemon.json
{
"insecure-registries": ["192.168.10.10:5000"]
}
4.重启docker
systemctl restart docker
5.创建仓库存放仓库地址,并启动registry私有仓库
mkdir -p /opt/data/registry
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry --name private_registry registry
三、离线客户机192.168.10.11测试上传、拉取镜像。
准备的步骤和上面几乎一样
1.先在有正常网络的服务器下,使用docker pull正常拉取镜像,并保存打包并上传到需要测试的机器
docker pull nginx
docker pull centos
docker save -o nginx.docker 镜像ID #
在当前目录下会生成一个registry.docker的文件,将其copy至U盘上。
docker save -o centos.docker 镜像ID
最终上传到离线测试客户机是这样的
2.将下载打包后的镜像拷贝到要离线测试机后加载
docker load -i ./nginx.docker
docker load -i ./centos.docker
3.如果镜像名称为空,可以使用以下命令修改#docker tag imageID 镜像名:版本号
docker tag 4bb46517cac3 nginx:latest
docker tag 0d120b6ccaa8 centos:latest
4.镜像打标签并命名
注意:客户端打标签命名很严格,不然等下传不上去,下载不了,必须带上私有仓库地址
# docker tag 源镜像名字:版本 私有仓库地址/镜像名字:版本
docker tag nginx:latest 192.168.10.10:5000/nginx:latest
docker tag centos:latest 192.168.10.10:5000/centos:latest
# 查看确认镜像名字,并添加信任,不如后续会报错http: server gave HTTP response to HTTPS client
docker images
#docker修改配置文件,添加一句信任私有仓库
vi /etc/docker/daemon.json
{
"insecure-registries": ["192.168.10.10:5000"]
}
#重启docker
systemctl restart docker
5.上传镜像到离线私有仓库192.168.10.10
docker push 192.168.10.10:5000/nginx:latest
docker push 192.168.10.10:5000/centos:latest
6.最后登录192.168.10.10离线私有确认镜像情况
本地私有仓库设置的地址:
ls /opt/data/registry/docker/registry/v2/repositories/
7.到客户机删除镜像后测试从私有仓库那里拉去镜像
docker images
删除客户机所有镜像
docker rmi $(docker images -q)
#去私有仓库拉取镜像
docker pull 192.168.10.10:5000/centos:latest
docker pull 192.168.10.10:5000/nginx:latest