跳到主要内容

Docker 镜像打包迁移

· 阅读需 3 分钟
素明诚
Full stack development

有 Docker Hub 的情况

构建镜像

docker build -t myapplatest .

这条命令会根据当前目录下的 Dockerfile 创建一个名为 myapp 的镜像,并标记为 latest

上传镜像到 Docker Hub

docker push myapplatest

在执行此命令前,需要使用 docker login 命令登录到 Docker Hub。

在另一台机器上下载并运行镜像

docker pull myapplatest
docker run -d -p 80808080 myapplatest

这里假设你的应用需要映射 8080 端口。

使用 Harbor 作为 Docker 镜像仓库的配置步骤

首先,你需要确保 Docker 客户端可以通过 HTTPS 与 Harbor 通信。如果你的 Harbor 实例使用了自签名证书,你可能需要将这个证书添加到你的系统信任的证书存储中,或者临时允许 Docker 客户端信任自签名证书。

将证书复制到 Docker 证书目录

sudo mkdir -p /etc/docker/certs.d/my-harbor-instance.com
sudo cp ~/path/to/your/certificate.crt /etc/docker/certs.d/my-harbor-instance.com/

重启 Docker 服务

sudo systemctl restart docker

这样 Docker 就配置好了可以安全地与你的 Harbor 实例通信。

登录到 Harbor

使用你的 Harbor 凭证登录

docker login my-harbor-instance.com -u your-username -p your-password

如果登录成功,你应该会看到一个消息说 “Login Succeeded”。然后往上推镜像就可以了。

没有 Docker Hub 的情况

如果没有 Docker Hub 或其他 Docker 仓库,你可以通过导出和导入镜像文件的方式手动传输镜像。

在源机器上导出镜像

docker save -o myapp.tar myapplatest

这条命令会将 myapplatest 镜像保存为一个名为 myapp.tar 的文件。

将镜像文件传输到目标机器 你可以使用 SCP、FTP 或任何其他文件传输方法将 myapp.tar 文件从源机器传输到目标机器。

scp myapp.tar user@target-machine/path/to/destination

在目标机器上导入镜像

docker load -i /path/to/destination/myapp.tar

运行镜像

docker run -d -p 8080:8080 myapplatest

实际开发的时候要注意

  • 使用合规的仓库例如Harbor来存储
  • 使用详细的版本标签而非仅仅使用 latest 标签,可以帮助更好地管理镜像版本并支持回滚操作
  • 集成到 CI/CD 管道中自动构建 Docker 镜像,并在代码提交后自动触发这些构建、测试、部署
  • 镜像优化,使用 Docker 的多阶段构建来减少镜像大小,只在最终镜像中保留必要的文件和依赖。
  • 使用 Prometheus、Grafana 等工具监控容器的性能和资源使用情况。