Nginx 如何通过反向代理将docker图像推送到artifactory
将docker映像推送到artifactory[artifactory Pro Power Pack 3.5.2.1(版本30160)](用作docker注册表)时出现问题 我有docker版本:Nginx 如何通过反向代理将docker图像推送到artifactory,nginx,docker,continuous-integration,artifactory,Nginx,Docker,Continuous Integration,Artifactory,将docker映像推送到artifactory[artifactory Pro Power Pack 3.5.2.1(版本30160)](用作docker注册表)时出现问题 我有docker版本: $ sudo docker version Client version: 1.5.0 Client API version: 1.17 Go version (client): go1.3.3 Git commit (client): a8a31ef/1.5.0 OS/Arch (c
$ sudo docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.3.3
Git commit (client): a8a31ef/1.5.0
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.3.3
Git commit (server): a8a31ef/1.5.0
我关注了这个链接和这个链接
我在artifactory中创建了一个名为docker local
的docker注册表,并为其启用docker支持。
我的artifactory没有一个选项,我可以说DockerV1或v2,就像在中一样,所以我假设它使用DockerV1
Artifactory为我生成了以下内容:
<distributionManagement>
<repository>
<id>sdpvvrwm812</id>
<name>sdpvvrwm812-releases</name>
<url>http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/docker-local</url>
</repository>
<snapshotRepository>
<id>sdpvvrwm812</id>
<name>sdpvvrwm812-snapshots</name>
<url>http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/docker-local</url>
</snapshotRepository>
</distributionManagement>
我生成了ssl密钥,如中所示,并将其放置在2个目录中
/etc/ssl/certs/sdpvvrwm812.ib.tor.company.com.crt;
/etc/ssl/private/sdpvvrwm812.ib.tor.company.com.key;
我不知道如何ping新的docker注册表,但是
sudo docker login -u adrianus -p AT65UTJpXEFBHaXrzrdUdCS -e adrian@company.com http://sdpvvrwm812.ib.tor.company.com
给出此错误:
来自后台程序的FATA[0000]错误响应:v1 ping尝试失败,原因是
错误:获取:拨号tcp
172.25.10.44:443:连接被拒绝。如果此专用注册表仅支持具有未知CA证书的HTTP或HTTPS,请添加
——将不安全的注册表sdpvvrwm812.ib.tor.company.com
添加到守护程序的
论据。对于HTTPS,如果您可以访问注册表的
CA证书,不需要标志;只需放置CA证书
at/etc/docker/certs.d/sdpvvrwm812.ib.tor.company.com/ca.crt
但是证书/etc/docker/certs.d/sdpvvrwm812.ib.tor.company.com/ca.crt
存在,所以发生了什么
sudo curl -k -uadrianus:AP2pKojAeMSpXEFBHaXrzrdUdCS "https://sdpvvrwm812.ib.tor.company.com"
给出此错误:
curl: (35) SSL connect error
我确实通过以下方式启动docker客户端:
sudo docker -d --insecure-registry https://sdpvvrwm812.ib.tor.company.com
可能是因为我的docker注册表是http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/docker-本地
和docker及nginx正在寻找http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/docker-本地
/v1
如何让docker将图像推送到artifactory有什么线索吗?部分是为maven准备的。Artifactory 3显示Docker repos的maven代码片段有点像facepalm(在Artifactory 4中修复,欢迎升级),所以请忽略它
对于Docker,通常不能使用/artifactory/repoName。这是Docker限制,您的注册表必须是主机名:端口,没有任何附加路径
这正是您必须配置反向代理的原因。您在nginx配置中所做的是将所有请求转发到sdpvvrwm812.ib.tor.company.com:443/v1
到http://sdpvvrwm812.ib.tor.company.com:8081/artifactory/api/docker/docker-local/v1
,这是正确的做法
请注意,证书的位置应该是/etc/docker/certs.d/sdpvvrwm812.ib.tor.company.com/
,而不是/etc/ssl/certs/
我发现其他博客给出了放置证书的不同位置。到目前为止,包括你的方法在内,没有一个有效。我正在尝试购买证书,而不是生成证书,并将尝试这样做。如果这些证书有效,我们将接受此答案。
sudo docker -d --insecure-registry https://sdpvvrwm812.ib.tor.company.com