温馨提示×

CentOS中Docker镜像如何共享

小樊
44
2025-12-13 11:31:25
栏目: 智能运维

CentOS中Docker镜像共享的常用方式

CentOS 环境中,镜像共享通常有三种做法:推送到公共或私有镜像仓库、导出为归档文件传输、将现有系统打包为镜像再导入。下面给出可直接执行的步骤与要点。

方式一 通过镜像仓库共享(推荐)

  • 使用公共仓库 Docker Hub
    • 登录并打标签:docker logindocker tag my-centos-image <你的用户名>/my-centos-image:tag
    • 推送:docker push <你的用户名>/my-centos-image:tag
    • 他人拉取:docker pull <你的用户名>/my-centos-image:tag
    • 适合对外公开分发或团队协作。
  • 部署本地私有仓库 Registry v2
    • 启动:docker run -d -p 5000:5000 --name registry registry:2
    • 为本机镜像打标签并推送:docker tag my-centos-image localhost:5000/my-centos-imagedocker push localhost:5000/my-centos-image
    • 其他主机拉取:docker pull <仓库主机>:5000/my-centos-image
    • 如需外网访问,可结合内网穿透或反向代理,Registry 默认建议使用 HTTPS
  • 自建或企业仓库
    • 可部署 Harbor 等私有仓库,支持权限、审计与 Web 管理,适合企业内部分发与治理。

方式二 导出为归档文件共享(离线/跨网)

  • 保存为 tar 归档:docker save -o my-centos-image.tar my-centos-image
  • 传输到目标机器后导入:docker load -i my-centos-image.tar
  • 适合无公网/离线环境、或需要快速拷贝镜像的场景。

方式三 将现有 CentOS 系统打包为镜像再导入(不推荐用于生产)

  • 在源主机打包系统根文件系统(注意排除虚拟与缓存目录):
    • tar --numeric-owner --exclude=/proc --exclude=/sys --exclude=/mnt --exclude=/var/cache --exclude=/usr/share/{foomatic,backgrounds,perl5,fonts,cups,qt4,groff,kde4,icons,pixmaps,emacs,gnome-background-properties,sounds,gnome,games,desktop-directories} --exclude=/var/log -zcvf /mnt/CentOS7-BaseImage.tar /
  • 在目标主机导入:docker import /mnt/CentOS7-BaseImage.tar centos7:imported
  • 说明:该方法更偏向“把系统目录变成镜像”,可能缺少 Docker 所需的元数据与初始化逻辑,生产环境建议使用 Dockerfile 构建标准化镜像。

防火墙与网络要点

  • 放行端口(示例为本地仓库端口 5000):sudo firewall-cmd --permanent --add-port=5000/tcp && sudo firewall-cmd --reload
  • 若通过 HTTP 提供服务(如简易文件共享),放行 80/tcpsudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload
  • 使用 Registry 对外服务时,建议配置 TLS/HTTPS 与访问控制,避免明文传输与未授权推送。

0