通过Docker官方提供的镜像Registry 创建本地私有仓库,创建方式和启动一个普通镜像的方式是一样。
1.在私有仓库服务器快速创建镜像仓库,运行如下代码:
docker run -p 5000:5000 registry:2.0
运行上述命令后,会从DockerHub上拉取registry镜像并在本地启动Registry服务,并监听5000端口。
2.列出本地镜像
docker images
可以看到registry的镜像和很多个本地镜像
3.下载一个ubuntu:16.04镜像,并且标记为私有仓库的版本,这里将ubuntu 16.04标记为localhost:5000/ubuntu:1604。
docker pull ubuntu:16.04
- docker tag ubuntu:16.04 localhost:5000/ubuntu:16.04
再次查看镜像可以看到多了一个标记为localhost:5000/ubuntu:1604的镜像
- 将本地镜像推送到本地仓库中
- docker push localhost:5000/ubuntu:16.04
- 查看本地仓库中的镜像列表
- curl http://localhost:5000/v2/ubuntu/tags/list
结果如下:
- 从本地仓库拉取一个镜像,在这之前先执行如下命令移除本地ubuntu:16.04镜像,保证从本地仓库拉取的镜像不是从缓存中获取。
- docker rmi -f ubuntu:16.04
- Docker rmi -f localhost:5000/ubuntu:16.04
之后再查看镜像,只剩下registry这个镜像
拉取本地仓库中的镜像
- docker pull localhost:5000/ubuntu:16.04
之后查看镜像如下:
最后正常启动
但是在生产中直接暴露docker registry的5000端口不太安全,通常使用反向代理的方法让docker registry使用https安全协议,并且加一些认证,使得docker registry更加安全。
可以通过nginx实现反向代理的搭建,并且在nginx中开启https安全协议,使用户在连接和使用docker registry时通过nginx在TLS安全传输层上进行数据的传输,而docker registry本身不对外暴露5000端口,只是从nginx中获取到用户发送来的操作指令。