一、搭建私服镜像仓库阶段
首先,搭建一个私服仓库
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
其次,使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:
version: '3.0'
services:
registry:
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
- REGISTRY_TITLE=我的镜像私有小仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
```
最后,我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
# 打开要修改的文件 vi /etc/docker/daemon.json # 添加内容:(注意格式,空格,排版,要不然不生效,同时与上一条配置要用逗号隔开) "insecure-registries":["http://192.168.***.***:8080"]这里填你自己的虚拟机IP地址 # 重加载 systemctl daemon-reload # 重启docker systemctl restart docker
最最后,执行touch docker-compose.yml,再执行docker-compose up -d
然后在浏览器通过端口192.168.***.***:8080进行访问验证成功。
二、推送镜像到私服阶段
先执行第一个操作,执行完以后再执行第二个操作。
三、推送阶段可能碰到的问题
[root@localhost ~]# docker push 192.168.***.***:8080/nginx:1.0
The push refers to repository [192.168.***.***:8080/nginx]
Get "http://192.168.***.***:8080/v2/": dial tcp 192.168.***.***:8080: connect: connection refused。
看到这里呢,不要慌,原因就是,刚刚搭建私服后,重启了docker和服务,所以再重新启动他们,再push即可
-->systemctl restart docker
-->docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
-->touch docker-compose.yml
-->docker-compose up -d
执行上述四步操作后,再进行push,push完之后可再次通过端口来访问浏览器私服进行验证(与验证私服搭建成功的端口一样)。