搭建 Docker 私有仓库 Registry-v2
2016-12-21 16:13
1081 查看
搭建 Docker 私有仓库 Registry-v2
从 docker v1.12 开始,docker 就不支持从 HTTP 仓库下载镜像,建立私有仓库必须走 HTTPs 加密协议。本文收集了网上中文、官方资料,总算搞定了自己签名证书的私有仓库。背景
官方资料说 dockerd 加参数--insecure-registry可使用 HTTP 协议,其实新版本根本不支持(localhost 例外),而自己签名又写的很简略1。官方的部署简要指南,就是 localhost 的使用,或使用受信机构签名证书2。搭建Docker私有仓库Registry-v23 基本正确,但一些细节需要进一步说明。
1、复制一个 Docker Registry 虚拟机
使用 VirtualBox 复制一台安装了 Docker 的虚拟机(选修改网卡mac)配置网络和主机名, 例如:
192.168.56.51和
myregistrydomain.com
2、安装配置 Registry 机器
1、编辑 /etc/hosts , 添加 registry 域名。例如myregistrydomain.com:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.56.51 myregistrydomain.com
2、创建证书(不受信任,仅测试用)
$ mkdir -p certs $ mkdir -p certs && openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt
输入正确的 [CN] com
3、让客户端信任你的证书
$ mkdir /etc/docker/certs.d/myregistrydomain.com:5000/ -p $ cp certs/domain.crt /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt $ service docker restart
4、下载启动 registry
$ mkdir data $ docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/certs:/certs \ -v `pwd`/data:/var/lib/registry \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2
5、 本地测试
$ docker tag hello-world myregistrydomain.com:5000/hello-world $ docker push myregistrydomain.com:5000/hello-world $ docker pull myregistrydomain.com:5000/hello-world
6、远程浏览器测试
https://192.168.56.51:5000/v2/ 返回 {} https://192.168.56.51:5000/v2/_catalog 返回 {"repositories":["hello-world"]}
3、客户机配置
1、拷贝客户端证书$ mkdir certs $ scp root@192.168.56.51:certs/domain.crt certs
2、让客户端 docker 信任你的证书
$ mkdir /etc/docker/certs.d/myregistrydomain.com:5000/ -p $ cp certs/domain.crt /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt $ service docker restart
3、加入主机名到 /etc/hosts
192.168.56.51 myregistrydomain.com
4、测试
例如,你的机器上有一个镜像 nginx
docker pull myregistrydomain.com:5000/hello-world docker tag nginx myregistrydomain.com:5000/nginx docker push myregistrydomain.com:5000/nginx docker pull myregistrydomain.com:5000/nginx
小结
搭建私有 Registry 镜像服务最好有自己的域名和守信的CA证书,这样就可以按官方手册安装。使用自己的签名比较繁琐,要点包括:每台机器需要修改 /etc/host
生成自己的签名
让 docker 客户端信任自己签名
总算在多台机器之间可以交换镜像了!!!
【参考】
Using self-signed certificates https://docs.docker.com/registry/insecure/ ↩
a80b
Deploying a registry server https://docs.docker.com/registry/deploying/ ↩
搭建Docker私有仓库Registry-v2 http://ju.outofmemory.cn/entry/228928 ↩
相关文章推荐
- docker registry V2私有仓库搭建
- docker registry-v2 搭建私有仓库
- docker registry-v2 搭建私有仓库
- 使用Docker Registry搭建Docker私有仓库-极简
- 详解Docker私有仓库Registry的搭建验证
- 第6章 Docker私有仓库Registry的搭建验证
- docker私有仓库registry的本地搭建
- 在 ubuntu 搭建需要签名认证的私有 docker registry 仓库
- Docker私有仓库Registry的搭建验证
- 搭建私有镜像仓库--registry V2
- Docker私有仓库Registry的搭建验证
- Docker私有仓库Registry搭建(localhost 可行但跨主机有问题)
- Docker私有仓库Registry 搭建
- 基于Docker搭建Registry私有镜像仓库
- Docker私有仓库Registry的搭建验证
- docker基础:私有仓库repository搭建(1):registry
- docker 搭建私有仓库registry (多用户)
- docker-registry 搭建私有仓库服务器
- Docker 搭建私有仓库(registry、harbor)
- Docker Registry Server 搭建,配置免费HTTPS证书,及拥有权限认证、TLS 的私有仓库