1、环境
192.168.47.129 作为私有镜像的宿主机
192.168.47.130 测试访问本地的私有仓库
宿主机全为centos7
2、下载镜像容器镜像
机器 192.168.47.129
下载镜像
docker pull registry
查看镜像
docker images
3、配置容器启动配置
cd /data
touch config.yml
vim config.yml
version: 0.1
log:
fields:
service: registry
storage:
delete:
enabled: true
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
保存
4、启动镜像容器
机器 192.168.47.129
–restart=always 表示自动启动容器
-v <宿主机目录>:<容器目录> 将宿主机的目录映射到容器上
–privileged=true 给容器加权限,这样上传就不会因为目录权限出错
/var/lib/registry 这个目录是docker私有仓库,镜像的存储目录
# 创建数据存储的文件夹 ,将容器的/tem/registry目录映射到/docker/registry
mkdir -p /docker/registry
# 启动容器,设定端口5000 ,然后映射文件夹,-v <宿主机目录>:<容器目录>
docker run -d -p 5000:5000 --name registry-ser --restart=always --privileged=true -v /opt/data/registry:/var/lib/registry -v /data/config.yml:/etc/docker/registry/config.yml registry
#--restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。
#--restart的参数说明
# always:无论容器的退出代码是什么,Docker都会自动重启该容器。
# on-failure:只有当容器的退出代码为非0值的时候才会自动重启。
#另外,该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker#会尝试自动重启该容器,最多5次。
# /var/lib/registry 为镜像仓库容器的镜像数据目录,将它映射到主机目录
# /etc/docker/registry/config.yml为镜像仓库的配置文件,将它映射到主机上的目录
#删除容器
docker rm -f registry-ser
5、开放注册https协议
机器 192.168.47.129
vim /etc/docker/daemon.json
# 如果配置文件为空即没有“{}”,添加
{"insecure-registries":["192.168.47.129:5000"]}
# 如果配置文件不为空即,有“{}”,在“{}”添加
"insecure-registries":["192.168.47.129:5000"]
重启docker守护进程
service docker restart
6、推送镜像到仓库
机器 192.168.47.129
# 必须要先将镜像的名称给变成 域名或ip/镜像名
docker tag centos7:latest 192.168.47.129:5000/centos7
# 推送镜像到本地仓库
docker push 192.168.47.129:5000/centos7
# 推送成功后就可以在/docker/register的目录下看到相关的镜像信息
7、从本地镜像仓库下载镜像
机器 192.168.47.129
# 删除本地上传的那个仓库,然后下载看看
docker rmi 192.168.47.129:5000/centos7
# 下载本地仓库的镜像
docker pull 192.168.47.129:5000/centos7
# 查看是否下载成功
docker images
8、远程机器访问私有机器
机器 192.168.47.130
按步骤4修改本地docker配置,并重启本机docker守护进程
# 下载私有仓库中的镜像到本地
docker pull 192.168.47.129:5000/centos7
# 查看是否下载成功
docker images
8、将代码同步到容器并发送到远程机器的上运行的方法
在本机建立数据卷容器,是本机的代码目录映射到容器的代码目录
运行另一个容器并将挂载这个数据卷容器,在运行的容器内执行cp
命令,将容器内的数据卷目录的内容copy到新的文件夹,将容器提交到本地镜像仓库,‘那么此镜像就包含的代代码片段
在远程机器上从本地镜像仓库中下载此镜像就可以使用了
9、删除镜像仓库中的镜像
docker镜像的删除要在registry启动配置文件中添加允许删除选项,使用api接口删除镜像索引,使用registry garbage-collect /etc/docker/registry/config.yml 进行垃圾回收,再在镜像文件存储文件将将镜像文件删除,使用docker restart 命令重启 registry 容器