docker离线搭建仓库

要在Docker中搭建本地仓库,可以按照以下步骤进行操作:

  1. 首先安装 Docker。根据不同的操作系统选择合适的版本并完成安装过程。

  2. 打开命令行工具(如Terminal或PowerShell),运行以下命令来创建一个新的容器并将其设置为本地仓库:

  3. 下载仓库镜像 链接:https://pan.baidu.com/s/1f3pxuWbM3gZC8nbAdF3-Kw?pwd=pwyr
    提取码:pwyr

    docker run -d --name registry -p 5000:5000 registry:latest

  4. 这会从官方的Registry镜像创建一个名为"registry"的容器,并将主机上的5000端口与容器内部的5000端口关联起来。

  5. 等待片刻后,使用以下命令确认容器正常运行:

复制代码
复制代码
   `docker ps`

应该能看到类似于 "CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES" 的输出结果,表示容器已经成功创建并处于运行状态。
4. 现在就可以通过访问 http://localhost:5000 来查看本地仓库了。默认情况下,所有的镜像都存放在 /var/lib/registry/ 目录下。
5. 若需要向本地仓库推送镜像,可以使用以下命令标记镜像并指定本地仓库的URL:

复制代码
复制代码
   `docker tag <image_id> localhost:5000/<repository>:<tag>`
  1. 最后,使用以下命令将标记好的镜像推送到本地仓库:

    复制代码
    复制代码
    `docker push localhost:5000/<repository>:<tag>`
  2. 当然,也可以使用以下命令拉取本地仓库中的镜像:

    复制代码
    复制代码
    `docker pull localhost:5000/<repository>:<tag>`


    错误分析

  3. 运行镜像报错:

  4. 当docker运行镜像时候,出现如下错误:

  5. docker: Error response from daemon: driver failed programming external connectivity on endpoint registry (c0e59dbe36afb92f8662abd10026ccf32b333033074be3054ab490147a6b3dce): (iptables failed: iptables --wait - t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.17.0.2:5000 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).

  6. 这个错误通常是由于iptables规则的问题导致的。Docker使用iptables来管理网络流量,包括将容器的端口映射到宿主机上。当Docker尝试设置这些规则时,可能会因为某些原因失败。

    为了解决这个问题,你可以尝试以下几个步骤:
    重启Docker服务:重启Docker服务可以解决网络相关的问题。

复制代码
    `sudo systemctl restart docker`

**推送镜像到仓库不支持HTTP:**
  1. 出现这个错误信息 "Get "https://192.168.136.129:5000/v2/": http: server gave HTTP response to HTTPS client" 意味着你尝试通过 HTTPS 协议去访问一个只支持 HTTP 协议的 Docker 仓库。

    这通常发生在以下几种情况:

  2. Docker 客户端被配置为默认使用 HTTPS 与仓库进行通信,而你的私有仓库实际上配置为只接受 HTTP 连接。

  3. 你可能正在使用一个公共的 Docker 仓库镜像(如 Docker Hub),但错误地配置了私有仓库的地址。

  4. 如果你的私有仓库支持 HTTPS,你需要检查是否已正确安装和配置了 SSL 证书。

  5. 如果你的私有仓库不支持 HTTPS,你需要在 Docker 客户端中禁用对 HTTPS 的强制使用。

  6. 你可以通过设置 Docker 守护进程的配置来禁用对 HTTPS 的强制使用。这通常涉及到编辑 /etc/docker/daemon.json 文件(如果不存在,则创建它),并添加或修改以下配置:

    复制代码
    复制代码
    `{
    "insecure-registries": ["192.168.136.129:5000"]
    }`

    然后重启 Docker 以使更改生效。然后就可以发布成功了

相关推荐
不会就选b20 分钟前
linux之进程管理(二)--替换
linux·运维·服务器
倔强的石头10626 分钟前
【Linux指南】动静态库系列(二):从源码复用到目标文件复用:为什么需要把 .o 打包成库
linux·运维·服务器
步步精BBJconn35 分钟前
从GPU服务器到数据中心:AI服务器高压连接器的应用与发展趋势
大数据·运维·服务器·人工智能·科技·物联网
java_logo2 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
码农学院3 小时前
基于运维监控体系的网络品牌推广方案:从架构设计到技术实现
运维·网络
大耳朵-小飞象12 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
极客侃科技12 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
生活爱好者!15 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
java_logo16 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程