docker registry 搭建(含CA认证)
环境说明
终端 | 操作系统 | 其他 |
---|---|---|
服务端 | Centos7 | IP:10.192.3.230 |
客户端A | boot2docker | IP:192.168.99.100 |
服务端配置
- 安装docker
yum install -y docker-io
- 下载docker registry镜像(使用版本2)
docker pull docker.io/registry:2
- 生成秘钥,此处关键点在于CA中的服务名称不能乱写,后续配置要用到。
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/docker.key -x509 -days 365 -out /certs/docker.crt
- 启动docker registry
docker run -it --rm -p 5000:5000 --name registry -v /certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.crt -e REGISTRY_HTTP_TLS_KEY=/certs/docker.key docker.io/registry:2
宿主机配置
宿主机如果要实现访问私服,需要将CA证书添加到自身的CA认证库中。
cp /certs/docker.crt /etc/pki/ca-trust/source/anchors/docker.crt
再修改/etc/hosts文件配置服务与IP的映射关系
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.192.3.230 CA证书中的服务名
客户端A配置
- 安装boot2docker
略 - 启动boot2docker
1 . docker-machine start default
2 . docker-machine ssh default - 修改hosts文件,添加以下内容。
10.192.3.230 docker
10.192.3.230是服务端IP,此处根据实际情况修改。 - 拷贝秘钥
1 . 将服务端docker.crt文件拷贝到/etc/docker/certs.d/docker:5000/docker.crt - 添加秘钥至系统
- 再修改/etc/hosts文件配置服务与IP的映射关系
执行以下命令
cat /etc/docker/certs.d/docker:5000/docker.crt > /usr/local/etc/ssl/certs/ca-certificates.crt
- 再修改/etc/hosts文件配置服务与IP的映射关系
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.192.3.230 CA证书中的服务名
客户端使用
- 上传本地镜像到私服
1 . 创建准备上传的镜像文件
docker tag centos:6.6 docker:15000/centos:6.6
此处镜像名称标识上传路径,所以要与hosts文件中配置的一致
2.上传镜像到私服
docker push docker:15000/centos:6.6
在私服中镜像名为centos,不包含docker:15000 - 下载私服的镜像
docker pull docker:15000/centos:6.6
此处docker:15000表示下载路径,要与hosts文件中配置一致 - 查询私服的镜像
curl https://docker:15000/v2/_catalog
坑
- 每次重启boot2docker,hosts文件和ca-certificates.crt文件要重新修改。(有待完善)
- docker registry所在系统不建议用Centos6
- docker registry版本建议使用2,不建议用最新.