docker 推送到私有注册表:如何不指定端口
docker push to private registry: how not to specify a port
根据 this docker instructions 部署私有注册表时,我必须在 CLI 中指定端口以像这样推送映像:
对于http(80
),命令为:docker push host.com:80/alpine
。
对于 https(443
),命令必须是:docker push host.com:443/alpine
。
如果我把端口映射到5000,命令是:docker push host.com:5000/alpine
.
想要的效果是像这样简单的推送:
docker push host.com/alpine
当我启动 registry-container 时,如何构造 docker run
完整命令来实现此目的?
默认端口是443,据我所知是不能改的。但是您可以在另一台主机上设置 NGINX(或 HAProxy)并将其配置为将您的所有请求代理到您的注册表,如下所示:
server {
listen *:443 ssl;
server_name registry.company.com;
proxy_set_header Host upload.expert;
location / {
proxy_pass http://private.registry.company.com:5000;
}
}
然后 docker push registry.company.com/alpine
根据 this docker instructions 部署私有注册表时,我必须在 CLI 中指定端口以像这样推送映像:
对于http(80
),命令为:docker push host.com:80/alpine
。
对于 https(443
),命令必须是:docker push host.com:443/alpine
。
如果我把端口映射到5000,命令是:docker push host.com:5000/alpine
.
想要的效果是像这样简单的推送:
docker push host.com/alpine
当我启动 registry-container 时,如何构造 docker run
完整命令来实现此目的?
默认端口是443,据我所知是不能改的。但是您可以在另一台主机上设置 NGINX(或 HAProxy)并将其配置为将您的所有请求代理到您的注册表,如下所示:
server {
listen *:443 ssl;
server_name registry.company.com;
proxy_set_header Host upload.expert;
location / {
proxy_pass http://private.registry.company.com:5000;
}
}
然后 docker push registry.company.com/alpine