Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 如何通过反向代理将docker图像推送到artifactory_Nginx_Docker_Continuous Integration_Artifactory - Fatal编程技术网

Nginx 如何通过反向代理将docker图像推送到artifactory

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

将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 (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