Docker 镜像打包迁移
· 阅读需 3 分钟
有 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 等工具监控容器的性能和资源使用情况。