阿里云 ECS 免费搭建 无认证的私有 Docker 仓库

本文详细介绍在Ubuntu系统上安装配置Docker,并搭建无认证私有Docker仓库的全过程,包括镜像的上传、下载及镜像管理。

一、Docker 安装和配置

这里服务器系统以 Ubuntu 为例,CentOS,MacOS等系统请移步:《其他系统Docker安装教程》

  • ubuntu 系统安装 Docker 命令:

    sudo apt-get install -y docker.io
    
  • 配置对外开放IP:0.0.0.0,执行下面命令,按图修改

    vim /lib/systemd/system/docker.service 
    

    修改内容如下图:
    在这里插入图片描述
    修改配置后,执行下面两条命令重启 Docker 服务

    systemctl daemon-reload 
    service docker restart
    
  • 配置阿里云 Docker 镜像源
    详情请参考☞:【Docker镜像加速】之 阿里云 解决 docker pull 镜像速度慢的问题

    vim /etc/docker/daemon.json
    

    新增以下内容,如图所示:

    {
    	"registry-mirrors": ["https://6kx4zyno.mirror.aliyuncs.com"]	# 配置阿里云加速器
    }
    

    每次修改配置后,记得重启 Docker 服务

    systemctl daemon-reload 
    service docker restart
    

二、无认证私有 Docker 仓库搭建步骤

有权限认证的私有仓库搭建请移步:《阿里云免费搭建 需认证的私有 Docker 仓库》

2.1 第一步:在服务器上,拉取registry镜像

  • 拉取命令如下,如图

    docker pull registry
    

    在这里插入图片描述

2.2 第二步:在服务器上,启动registry仓库

  • 启动 registry 容器,命令如下

    docker run -dit --restart always\
    				--name my_registry\
    				-p 8888:5000\
    				-v /my_registry/registry:/var/lib/registry registry
    

    注意: registry 内部对外开放端口是5000,默认情况下,镜像存放在容器的/var/lib/registry目录下(官网 Dockerfile 中可以查看),这样如果容器被删除,则存放于容器中的镜像也会丢失。

  • 测试仓库是否搭建成功
    在本地打开终端用curl 服务器IP:8888/v2/_catalog 或 在浏览器中直接输入服务器IP:8888/v2/_catalog,即可查看当前搭建仓库中存放的镜像列表(注意服务器需开启端口8888入站规则),如图:
    在这里插入图片描述

三、无认证私有仓库的上传与下载

  • 上传镜像
    利用 docker tag 命令给需要上传的镜像打标签
    docker tag IMAGE_ID 服务器IP:端口/IMAGE_NAME
    利用 docker push 上传刚刚 tag 的镜像
    docker push 服务器IP:端口/IMAGE_NAME
    注意: 如果push出现类似https的错误,请在/etc/docker/daemon.json文件里添加"insecure-registries":["服务器IP:端口"],重新尝试;
    在这里插入图片描述

  • 下载镜像
    拉取私有仓库镜像命令如下:
    docker pull 服务器IP:端口/IMAGE_NAME

  • 删除镜像步骤

  1. 查询镜像名称:
    curl <仓库地址>/v2/_catalog
    curl -XGET http://127.0.0.1:8888/v2/_catalog
    # 返回响应
    {"repositories":["python3"]}
    
  2. 查询镜像tag(版本):
    curl <仓库地址>/v2/<镜像名>/tags/list
    curl  http://127.0.0.1:8888/v2/python3/tags/list
    # 返回响应
    {"name":"python3","tags":["latest"]}
    
  3. 查询镜像digest_hash: 注意 Docker-Content-Digest 的值
    curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET <仓库地址>/v2/<镜像名>/manifests/<tag>
    curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET  http://127.0.0.1:8888/v2/python3/manifests/latest
    # 返回响应
    HTTP/1.1 200 OK
    Content-Length: 527
    Content-Type: application/vnd.docker.distribution.manifest.v2+json
    Docker-Content-Digest: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
    Docker-Distribution-Api-Version: registry/2.0
    Etag: "sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649"
    X-Content-Type-Options: nosniff
    Date: Fri, 19 Jul 2020 19:09:44 GMT
    
  4. 删除镜像API:
    curl -I -X DELETE "<仓库地址>/v2/<镜像名>/manifests/<镜像digest_hash,即上面查询的sha256值>"
    curl -I -XDELETE http://127.0.0.1:8888/v2/python3/manifests/sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
    # 返回响应
    HTTP/1.1 202 Accepted
    Docker-Distribution-Api-Version: registry/2.0
    X-Content-Type-Options: nosniff
    Date: Fri, 19 Jul 2020 19:10:56 GMT
    Content-Length: 0
    
### 使用阿里云镜像仓库Docker的影响及优缺点 使用阿里云镜像仓库可以显著提升 Docker 的使用体验,特别是在国内网络环境下。以下是具体的影响及其优缺点分析: #### 一、影响 1. **镜像速度** 阿里云镜像仓库提供加速服务,能够有效减少因国际网络延迟导致的镜像下载缓慢问题[^3]。对于需要频繁官方或第三方镜像的用户来说,这将极大提升开发效率。 2. **镜像存储与管理** 阿里云镜像仓库支持私有和公有镜像的存储,用户可以根据需求选择是否公开自己的镜像[^4]。此外,它还提供了版本控制功能,便于团队协作时对不同版本镜像进行管理和分发。 3. **安全性增强** 通过设置访问凭证(如固定密码)以及权限控制策略,可以保护镜像资源不被未经授权的用户访问[^2]。这对于企业级应用尤为重要。 4. **集成生态** 阿里云镜像仓库阿里云其他服务(如 ECS、ACK 等)深度集成,方便用户在云端快速部署容器化应用。同时支持 Serverless 场景下的自动化部署[^2]。 #### 二、优点 1. **高效性** 利用阿里云提供的镜像加速服务,大幅缩短了镜像下载时间,尤其适合大规模集群环境下的节点初始化操作[^3]。 2. **灵活性** 用户不仅可以上传自定义镜像,还能直接从公共仓库中获常用镜像,并结合阿里云特有的区域特性优化传输路径[^1]。 3. **可靠性** 阿里云采用多副本存储机制保障数据安全,即使某个数据中心发生故障也能确保服务可用性[^4]。 4. **成本节约** 相较于自行搭建私有仓库,使用阿里云镜像仓库减少了硬件采购和运维投入,降低了总体拥有成本(TCO)[^2]。 #### 三、缺点 1. **依赖外部服务** 如果业务完全依赖于阿里云镜像仓库,则可能面临供应商锁定风险。一旦更换服务商,迁移工作量较大[^1]。 2. **网络稳定性要求高** 尽管阿里云在国内有较好的网络覆盖,但仍然可能存在某些偏远地区或特定时间段内访问不稳定的情况[^3]。 3. **学习曲线** 对于初次接触阿里云平台的开发者而言,理解其镜像仓库相关概念(如命名空间、实例等)以及配置流程可能会有一定难度[^4]。 ```python # 示例:登录阿里云镜像仓库并推送镜像 import subprocess def push_image_to_aliyun(username, password, image_name, repository): login_command = f"docker login --username={username} {repository}" tag_command = f"docker tag {image_name} {repository}/{image_name}" push_command = f"docker push {repository}/{image_name}" try: subprocess.run(login_command, shell=True, check=True) subprocess.run(tag_command, shell=True, check=True) subprocess.run(push_command, shell=True, check=True) print("镜像推送成功") except Exception as e: print(f"镜像推送失败: {e}") # 调用示例 push_image_to_aliyun("justin@1703206802674361", "your_password", "my_app:v1", "registry.cn-shanghai.aliyuncs.com/my_namespace") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值