试用 Nexus OSS 3.0 的docker仓库 (一) : http://www.cnblogs.com/wzy5223/p/5410990.html
三. 创建docker私有仓库,docker (hosted)
访问Nexus的主页,https://192.168.31.135:8443
创建docker (proxy)仓库,内容如下面修改:
Name: docker_hosted
HTTPS: 8889
Enable Docker V1 API: true 勾选下面的复选框
Blob store: default
修改完成以后登陆docker仓库, 用户名密码: admin/admin123
docker login 192.168.31.135:8889
https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry
测试一个不安全的注册表
预计阅读时间: 4分钟尽管强烈建议您使用由已知CA颁发的TLS证书来保护您的注册表,但您可以选择使用自签名证书,或通过未加密的HTTP连接使用注册表。这些选择都涉及安全权衡和其他配置步骤。
部署一个普通的HTTP注册表
警告:对于基本身份验证,不可能使用不安全的注册表。
此过程将Docker配置为完全忽略注册表的安全性。这是非常不安全的,不推荐。它使您的注册表暴露于微不足道的中间人(MITM)攻击。只能使用此解决方案进行隔离测试或在严格控制的气隙环境中使用。
编辑该
daemon.json
文件,其默认位置/etc/docker/daemon.json
位于Linux或C:\ProgramData\docker\config\daemon.json
Windows Server上。如果您使用Docker for Mac或Docker for Windows,请单击Docker图标,选择 Preferences,然后选择+ Daemon。如果该
daemon.json
文件不存在,请创建它。假设文件中没有其他设置,它应该具有以下内容:{ "insecure-registries" : ["myregistrydomain.com:5000"] }
将示例中的不安全注册表的地址替换为示例中的地址。
在启用不安全的注册表后,Docker将执行以下步骤:
- 首先,尝试使用HTTPS。
- 如果HTTPS可用但证书无效,请忽略有关证书的错误。
- 如果HTTPS不可用,请回退到HTTP。
- 首先,尝试使用HTTPS。
重新启动Docker以使更改生效。
在每个想要访问注册表的引擎主机上重复这些步骤。
使用自签名证书
警告:将此与基本身份验证一起使用时,还需要将某些版本的Docker的证书信任到OS cert存储中(请参见下文)
这比不安全的注册表解决方案更安全。
生成您自己的证书:
$ mkdir -p certs $ openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt
请务必将该名称
myregistrydomain.com
用作CN。使用结果在启用TLS的情况下启动注册表。
指示每个Docker守护程序信任该证书。做到这一点的方式取决于你的操作系统。
Linux:将
domain.crt
文件复制到/etc/docker/certs.d/myregistrydomain.com:5000/ca.crt
每个Docker主机上。您不需要重新启动Docker。Windows服务器:
打开Windows资源管理器,右键单击该
domain.crt
文件,然后选择安装证书。出现提示时,请选择以下选项:商店地址 本地机器 将所有证书放入下列商店 选 单击浏览器并选择受信任的根证书颁发机构。
点击完成。重新启动Docker。
Docker for Mac:按照添加自定义CA证书的说明操作 。重新启动Docker。
适用于Windows的Docker:按照添加自定义CA证书的说明操作 。重新启动Docker。
解决不安全的注册表问题
本节列出了一些常见故障以及如何从中恢复。
失败...
无法配置Engine守护进程并尝试从未使用TLS的注册表中获取以下消息:
FATA[0000] Error response from daemon: v1 ping attempt failed with error:
Get https://myregistrydomain.com:5000/v1/_ping: tls: oversized record received with length 20527.
If this private registry supports only HTTP or HTTPS with an unknown CA certificate, add
`--insecure-registry myregistrydomain.com:5000` to the daemon's arguments.
In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag;
simply place the CA certificate at /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt
在使用身份验证时,Docker仍然抱怨证书?
在使用身份验证时,某些版本的Docker还要求您在操作系统级别信任该证书。
UBUNTU的
$ cp certs/domain.crt /usr/local/share/ca-certificates/myregistrydomain.com.crt
update-ca-certificates
红帽企业LINUX
cp certs/domain.crt /etc/pki/ca-trust/source/anchors/myregistrydomain.com.crt
update-ca-trust
ORACLE LINUX
$ update-ca-trust enable
重新启动Docker以使更改生效。
视窗
打开Windows资源管理器,右键单击证书,然后选择 安装证书。
然后,选择以下选项:
- 商店位置:本地机器
- 请检查下列商店中的所有证书
- 单击浏览器,然后选择受信任的根证书颁发机构
- 点击完成
将CA证书添加到Windows后,重新启动Docker for Windows。
注册表,本地,图像,标签,存储库,分发,不安全这时候我们就可以向仓库提交docker镜像了,首先创建一个docker镜像为nexus3,并修改标签为私有私有仓库地址:
docker tag nexus3 ${NEXUS_IP_ADDRESS}:8889/nexus3
然后就可以向docker私有仓库提交镜像了:
docker push ${NEXUS_IP_ADDRESS}:8889/nexus3
登陆nexus3仓库浏览页面可以看到nexus3镜像已经上传
最后其它客户端可以用下面的命令搜索和下载docker镜像
docker search ${NEXUS_IP_ADDRESS}:8889/nexus3
docker pull ${NEXUS_IP_ADDRESS}:8889/nexus3
四. 创建docker仓库群组,docker (group)
内容如下面修改:
Name: docker_group
HTTPS: 9999
Enable Docker V1 API: true 勾选下面的复选框
Blob store: default
并将前面创建的代理仓库:"docker" 和 私有托管仓库 "docker_hosted" 添加到Members列表下面:
查看"docker_group" 下的组件,有 "hello-world" 和 “nexus3”
登陆“docker_group”:
docker login ${NEXUS_IP_ADDRESS}:9999
然后可以用下面的命令搜索和下载docker镜像
docker search ${NEXUS_IP_ADDRESS}:9999/hello-world
docker pull ${NEXUS_IP_ADDRESS}:9999/nexus3
参考资料:
http://www.sonatype.com/download-oss-sonatype
http://books.sonatype.com/nexus-book/3.0/reference/index.html
https://support.sonatype.com/hc/en-us/articles/217542177