docker push到私有仓库

本文详细指导了如何配置Docker Registry以支持HTTP和HTTPS访问,包括不加密的Nginx代理、docker-client配置修改、以及带用户名密码的仓库推送。重点讲解了从HTTP到HTTPS的迁移步骤和客户端设置技巧。
摘要由CSDN通过智能技术生成

参考官方文档:https://docs.docker.com/registry/spec/api/

1.安装docker-registry

2.配置nginx访问(不设置https加密)

upstream docker_registry_pool{
    server registry:5000; #nginx与registry都用docker,所以直接使用别名和docker内网端口
}

server
{
        listen       80;
        server_name  registry.xxx.com;

        location / {
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://docker_registry_pool;
        proxy_read_timeout      900;
    }
}

3.测试本地push

--注意,打tag时,直接用完整访问路径作为前缀

如:

docker tag  myservice:v1.1   localhost:5000/tang/myservice:v1.1   #把myservice:v1.1 打上带绝对路径的v1.1tag

push时:

docker push localhost:5000/tang/myservice:v1.1  

查看是否存在:curl后查看json字符串是是否包括myservice镜像

curl  http://registry.xxx.com/v2/_catalog

查看存在的tag:curl后查看json字符串是是否包括myservice镜像

curl  http://registry.xxx.com/v2/tang/myservice/tags/list

4.测试远程push(现启动时默认是https,所以会报错)

打上tag,目前是http请求

docker tag  myservice:v1.1   registry.xxx.comtang/myservice:v1.1   #把myservice:v1.1 打上带绝对路径的v1.1tag

push时:

docker push  registry.xxx.comtang/myservice:v1.1
 http: server gave HTTP response to HTTPS client #报错

5.修改配置(切记,一定是客户端,而且非服务端)支持http:两种方式,选择其中一种即可,不可重复,假如是80端口,也要写上,因为docker-client默认使用443端口。

切记,一定是客户端,而且非服务端,如在B机器推送或者在公司电脑推送到远程A服务器上

----5.1 方式一:修改docker客户端的配置

vim /usr/lib/systemd/system/docker.service

配置项后增加配置: --insecure-registry=registry.xxx.com:80,后面是你的域名或者ip,如果有端口也要带上,坑爹一定要指定加上80端口

ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES \
          --insecure-registry=registry.xxx.com:80 \
          --insecure-registry=你的ip:5000 

----5.2 方式二:添加docker客户端配置

修改 /etc/docker/daemon.json 文件(如果没有就创建新的),并写入如下内容:

{ 
	"insecure-registries":[
		"xxx.xxx.xxx.xxx:5000",
		"registry.xxx.com:80"
	] 
}

----5.3 如果是window客户端,

修改:C:\Users\左右手公用\AppData\Roaming\Docker\daemon.json

或者修改Docker Desktop配置

----5.4 修改后重启docker服务

#linux下
systemctl daemon-reload 

systemctl restart docker

6.再次测试远程push

重新打上tag,目前nginx配置的是80端口的http请求,一定要坑爹的显示加上80端口80!80!80!80!,因为docker-client默认使用443端口

docker tag  myservice:v1.1   registry.xxx.comtang:80/myservice:v1.1   #把myservice:v1.1 打上带绝对路径的v1.1tag

push时:

docker tag  myservice:v1.1   registry.xxx.comtang:80/myservice:v1.1   #把myservice:v1.1 打上带绝对路径的v1.1tag

成功!!!!

7.既然https是默认的,那就配置https吧

想一想,为什么我们打tag时不需要写上http或者https的标记,因为docker-client就是默认使用443端口,傲娇吧!

为了避免上面这些坑,其实建议nginx配置https的,那么docker-client发送https请求,nginx能接收处理

 

8.push带用户名密码的仓库

 

 

要登录私有仓库,您需要执行以下步骤: 1. 打开终端或命令提示符窗口。 2. 使用docker login命令,后面跟上私有仓库的地址。例如,如果私有仓库的地址是docker.wongoing.com,那么命令应该是:docker login docker.wongoing.com。 3. 输入您的用户名和密码,如果需要的话。这将是您在私有仓库上的凭据。 4. 按下Enter键以完成登录过程。 这样,您就成功登录到私有仓库了。接下来,您可以执行docker push命令将本地镜像推送到私有仓库中。例如,如果您要推送名为wgms-user-center的本地镜像到私有仓库,可以使用以下命令:docker push docker.wongoing.com/wgms/wgms-user-center。 请注意,如果您在登录之后修改了私有仓库的凭据,您可能需要重新执行docker login命令并输入新的凭据。此外,如果您在推送镜像之前进行了重启docker服务的操作,可能需要重新执行docker login命令以确保登录状态的有效性。这可以通过在终端或命令提示符窗口中执行docker login命令来完成。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [docker desktop(Windows)使用docker login远程登录Harbor私有镜像仓库解决自动访问https报错问题](https://blog.csdn.net/zlbdmm/article/details/121614632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值