docker registry私服搭建
2016-01-29 11:57
766 查看
目前为止,docker官方的registry镜像分为两个版本,v2和v2以前的版本,我管它叫v1,v1使用python编写的,之后的v2用的go语言,而且它们的API也不一样,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服。
首先下载镜像
创建证书
复制domain.crt到指定目录,172.16.71.52.xip.io为私有仓库所在服务器的域名,5000为registry的端口号
建立登录认证
重启docker
run起来
先登录,再使用
检查下,image是否进入了我们搭建的私有仓库
以下是注意事项:
1.创建认证证书时common name应该用registry所在机器的域名,本人用IP测试没有成功。
2.docker run之前确保5000端口没有被占用,启动成功以后用docker logs看下有没有报错
3.push和pull之前要docker login一下
4.想要通过安全认证记得把生成的 domain.crt 复制到/etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt,其中172.16.71.52.xip.io为私服的域名,5000为registry的对外端口
5.v2的api变了,访问v1/search会报错404 not found,可以通过/v2/_catalog查看私有仓库的目录,v2的aip参见这里
参考
https://docs.docker.com/registry/deploying/
https://docs.docker.com/engine/reference/commandline/inspect/
https://docs.docker.com/registry/spec/api/
搭建docker内网私服(docker-registry with nginx&ssl on centos)
因为版本原因(docker1.8),在ssl认证上还需要把生成的根证书copy到docker指定目录(如搭建V2时描述的)
注意在其他主机访问私服时也要做以上操作。
registry(v2)
搭建环境:172.16.71.52 (contos7,docker1.8)首先下载镜像
docker pull resigtry:2
创建证书
mkdir -p certs && openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt
复制domain.crt到指定目录,172.16.71.52.xip.io为私有仓库所在服务器的域名,5000为registry的端口号
cp /certs/domain.crt /etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt
建立登录认证
mkdir auth docker run --entrypoint htpasswd registry:2 -Bbn 你的用户名 你的密码 > auth/htpasswd
重启docker
systemctl restart docker
run起来
docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2
先登录,再使用
docker login 172.16.71.52.xip.io:5000 docker tag redis 172.16.71.52.xip.io:5000/redis docker push 172.16.71.52.xip.io:5000/redis
检查下,image是否进入了我们搭建的私有仓库
# 找到外部挂载的目录 docker inspect --format {{'json .Mounts'}} registry # push进来的image都安静的躺在这里 cd /tmp/data/docker/registry/v2/repositories
以下是注意事项:
1.创建认证证书时common name应该用registry所在机器的域名,本人用IP测试没有成功。
2.docker run之前确保5000端口没有被占用,启动成功以后用docker logs看下有没有报错
3.push和pull之前要docker login一下
4.想要通过安全认证记得把生成的 domain.crt 复制到/etc/docker/certs.d/172.16.71.52.xip.io:5000/ca.crt,其中172.16.71.52.xip.io为私服的域名,5000为registry的对外端口
5.v2的api变了,访问v1/search会报错404 not found,可以通过/v2/_catalog查看私有仓库的目录,v2的aip参见这里
参考
https://docs.docker.com/registry/deploying/
https://docs.docker.com/engine/reference/commandline/inspect/
https://docs.docker.com/registry/spec/api/
registry(V1)
V1版本的registry搭建起来比较费劲(也有可能我没有找到优雅的方法),在网上找了一篇用nginx做SSL和登录认证的博文,感谢博主,可移步这里查看(亲测可用)搭建docker内网私服(docker-registry with nginx&ssl on centos)
因为版本原因(docker1.8),在ssl认证上还需要把生成的根证书copy到docker指定目录(如搭建V2时描述的)
cp /etc/pki/CA/cacert.pem /etc/docker/certs.d/172.16.71.43.xip.io:5000/ca.crt
注意在其他主机访问私服时也要做以上操作。
相关文章推荐
- docker容器的网络信息查看
- 在windows下的安装Docker的教程
- 8个你可能不知道的Docker知识
- 在Docker中自动化部署Ruby on Rails的教程
- 搭建基于Docker的PHP开发环境的详细教程
- 利用OpenVSwitch在多台主机上部署Docker的教程
- ubuntu14.04+docker的安装及使用
- Docker 清理命令集锦
- 再Docker中架设完整的WordPress站点全攻略
- 基于 Docker 开发 NodeJS 应用
- 使用Docker来加速构建Android应用的基本部署思路解析
- 在Docker上部署Python的Flask框架的教程
- 在Docker上开始部署Python应用的教程
- 详解在Python和IPython中使用Docker
- 使用IPython来操作Docker容器的入门指引
- OSX下brew安装docker(boot2docker)
- docker 设置TLS远程访问
- mesos + marathon + docker部署
- docker-registry server部署
- python3操作Docker Remote API