docker私有镜像仓库搭建(可供本地及私有环境使用)
文章目录
- 注意:若不想了解持久化内容的童鞋请查看顺序如下: 一、三、五、六、七、八、九
- docker私有镜像仓库搭建(可供本地及私有环境使用)
- 一.安装Docker Registry并运行容器
- 1.1:各个参数解释
- 二.docker镜像持久化--扩展内容(不需要此步骤的请直接下一步)
- 三.导入镜像到镜像仓库服务器
- 四.docker容器持久化--扩展内容(不需要此步骤的请直接下一步)
- 五.推送tomcat到Registry仓库
- 六.验证是否推送到镜像仓库
- 七.好tomcat成功,我们在测试一个mysql的镜像推送
- 7.1获取mysql镜像id
- 7.2推送mysql到Registry仓库
- 7.3验证是否推送到镜像仓库(注意,这里我的服务器没有详细配置host内容,所以localhost和127.0.0.1是一样的!!!!)
- 八.镜像仓库拉取验证
- 8.1语法扩展:
- 8.2遇到问题:
- 8.3删除镜像
- 九.私有镜像仓库拉取并测试
一.安装Docker Registry并运行容器
sudo docker run -d -v /skyfans/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
1.1:各个参数解释
-d | 容器后台运行 |
-v /skyfans/registry:/var/lib/registry | 默认情况下,会将仓库存放于容器内的/var/lib/registry目录下,这里指定本地目录挂载到容器。 |
-p 5000:5000 | 端口映射 |
–restart=always1 | 在容器退出时总是重启容器,主要应用在生产环境(请注意实际环境是否添加此参数) |
–privileged=true | 在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误 |
–name registry | 指定容器的名称 |
二.docker镜像持久化–扩展内容(不需要此步骤的请直接下一步)
我测试的镜像是我由其他机器上导出的镜像,所以这里介绍了持久化的内容,算是扩充内容。不需要此步骤的请直接下一步!!!
语法:docker save 镜像id > 某一路径
注意修改你的路径及镜像id
docker save 929f330b6f97 >/skyfans/tomcat.tar
三.导入镜像到镜像仓库服务器
docker load < /skyfans/tomcat.tar
四.docker容器持久化–扩展内容(不需要此步骤的请直接下一步)
语法:docker export 容器id > 某一路径
导入持久化的镜像到本机
哟么有发现,导入后的镜像没有仓库:标签,都显示为none
我们来给他们个仓库:标签。
重命名镜像语法:docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
docker tag 929f330b6f97 tomcat:skyfans
五.推送tomcat到Registry仓库
语法:docker tag 镜像Id 仓库IP:端口/命名
sudo docker tag 929f330b6f97 127.0.0.1:5000/tomcat
推送到仓库
sudo docker push 127.0.0.1:5000/tomcat
使用中遇到的问题
Get https://127.0.0.1:5000/v1/_ping: Tunnel Connection Failed
解决方案:
修改daemon.json文件vim /etc/docker/daemon.json
添加:{ “insecure-registries”:[“127.0.0.1:5000”]}
vim /etc/docker/daemon.json
添加如下内容:
"insecure-registries":["127.0.0.1:5000"]
六.验证是否推送到镜像仓库
curl http://localhost:5000/v2/_catalog|python -m json.tool
看到了,成功情况如下:
七.好tomcat成功,我们在测试一个mysql的镜像推送
7.1获取mysql镜像id
docker images
7.2推送mysql到Registry仓库
sudo docker tag f991c20cb508 127.0.0.1:5000/mysql
sudo docker push 127.0.0.1:5000/mysql
7.3验证是否推送到镜像仓库(注意,这里我的服务器没有详细配置host内容,所以localhost和127.0.0.1是一样的!!!!)
curl http://localhost:5000/v2/_catalog|python -m json.tool
mysql也进来了!~~
八.镜像仓库拉取验证
好,既然我们弄好了我们的私有镜像仓库,那接下来我们来测试下是否可以,并是否可以拉取下来吧。干这事之前,我们需要先把原有的镜像干掉。我们已干掉mysql的镜像为例!!!!
8.1语法扩展:
docker rm 容器id(或tag或REPOSITORY),删除容器
docker rmi 镜像ID(或tag),删除镜像
8.2遇到问题:
docker rmi f991c20cb508
报错,删除不掉镜像文件
问题分析,查看镜像id
由于存在同名id镜像,删除命令不知道该删除哪个。。。换种方式,本来想用tag进行删除,但是一看,我擦,tag名字也一样,这坑。
8.3删除镜像
好吧,那我就使用REPOSITORY进行删除看下
docker rmi docker.io/mysql
可算是删除掉了。。所以大家在创建镜像时,一定要注意给好不同的tag!!!
继续,把另外一个也干掉,否则,我们怎么知道是否会拉取下来并成功呢。
docker rmi 127.0.0.1:5000/mysql
这下全没了,验证下
docker images
好,已经删除了,那我们开始从我们的私有镜像仓库拉取下来mysql的镜像
九.私有镜像仓库拉取并测试
docker pull 127.0.0.1:5000/mysql
查看拉取情况:
docker images
OK,到这里我们的镜像仓库已经完活了,并且测试了是否可以拉取到本地!!