Docker镜像在Ubuntu上如何共享
导读:在 Ubuntu 上共享 Docker 镜像的常用方式 离线导出导入 tar 包:用 docker save 导出镜像为 .tar,通过 U 盘、内网传输或任意文件通道拷贝到目标机器,再用 docker load 导入。适合无公网、隔离网...
在 Ubuntu 上共享 Docker 镜像的常用方式
- 离线导出导入 tar 包:用 docker save 导出镜像为 .tar,通过 U 盘、内网传输或任意文件通道拷贝到目标机器,再用 docker load 导入。适合无公网、隔离网络或需要快速交付镜像的场景。
- 推送到镜像仓库:将镜像推送到 Docker Hub 或公司内网的 私有仓库(Registry),其他机器用 docker pull 获取。适合团队协作与持续交付。
- 在宿主机上共享数据而非镜像:多个容器共享数据应使用 Docker 卷(Volume) 或 绑定挂载(Bind Mount),这是容器与宿主机之间共享文件的主流做法。
- 在容器之间共享文件:可在创建新容器时使用 –volumes-from 复用已有容器的卷,实现容器间文件共享。
方式一 离线导出与导入 tar 包
- 在源机器导出镜像(推荐使用更可移植的 镜像名:标签 形式):
docker save -o myapp.tar myapp:latest - 将 myapp.tar 拷贝到目标 Ubuntu 机器(任意方式:scp、U 盘、内网共享等)。
- 在目标机器导入镜像:
docker load -i myapp.tar - 验证导入结果:
docker images | grep myapp - 说明:
- 使用镜像名:标签便于后续维护;如需更严格的一致性,可在导出前记录 DIGEST 并在拉取/导入后核对。
- 该方式会保留镜像的层与标签信息,便于直接运行。
方式二 推送到镜像仓库
- 登录仓库(Docker Hub 示例):
docker login - 为镜像打标签(示例推送到 Docker Hub 的 yourname 命名空间):
docker tag myapp:latest yourname/myapp:latest - 推送镜像:
docker push yourname/myapp:latest - 在目标机器拉取并运行:
docker pull yourname/myapp:latest docker run --rm yourname/myapp:latest - 说明:
- 团队或内网建议使用自建 私有 Registry,流程相同,只需将仓库地址替换为内网域名或 IP。
- 通过 DIGEST 拉取可确保获取完全一致的内容(不可变标识)。
方式三 在宿主机上共享数据 多个容器共用
- 使用 Docker 卷(推荐):
# 创建卷 docker volume create app_data # 容器 A 写入数据 docker run -d --name app1 -v app_data:/data myapp:latest # 容器 B 读取同一数据 docker run -d --name app2 -v app_data:/data myapp:latest - 使用 绑定挂载(将宿主机目录直挂到容器):
mkdir -p /host/shared docker run -d --name app3 -v /host/shared:/shared myapp:latest - 行为提示:
- 绑定挂载到容器非空目录时,容器中原目录内容会被隐藏,仅显示宿主机挂载目录的内容。
- 卷由 Docker 管理,默认位于宿主机的 /var/lib/docker/volumes/,更适合生产数据持久化与共享。
方式四 在容器之间共享文件 复用卷
- 基于已有容器共享其卷到新容器:
# 假设 container1 已存在并挂载了卷 docker run -d --name container2 --volumes-from container1 myapp:latest - 说明:
- 新容器将挂载与 container1 相同的卷集合,适合“主从”或“边车”模式的文件共享。
常见问题与建议
- 权限与安全:
- 挂载目录时注意 用户/组 ID 映射与目录权限,避免因权限不足导致容器无法读写。
- 避免使用 –privileged 解决权限问题(仅在确有必要时使用,且应限定最小权限)。
- 传输效率:
- 离线导出大镜像时,可使用压缩工具(如 gzip)减小 .tar 体积,传输后再导入。
- 一致性保障:
- 关键环境建议通过 DIGEST 指定或校验镜像版本,避免标签漂移带来的不一致。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker镜像在Ubuntu上如何共享
本文地址: https://pptw.com/jishu/764219.html
