使用 Docker 进行跨服务器文件打包与传输的完整实战指南
在日常运维和开发中,我们常常需要将服务或网站从一台服务器迁移到另一台服务器。传统方法可能涉及打包代码、安装依赖、配置环境等复杂流程。而使用 Docker,我们可以将整个运行环境打包成一个镜像文件,在其他服务器上“一键还原”,大大提高效率与一致性。本文将带你一步一步完成:
[*]创建网页内容
[*]使用 Docker 构建镜像
[*]导出镜像文件
[*]通过 scp 传输到另一台服务器
[*]在目标服务器上导入并运行容器
[*]成功访问服务页面
🖥️ 实验环境
[*]A服务器(源服务器):构建镜像并导出文件
[*]B服务器(目标服务器):接收镜像并运行服务
[*]操作系统:Ubuntu / CentOS / Debian 任意一款
[*]安装好 Docker(docker --version 确保可用)
第一步:在 A 服务器上准备项目文件
1.1 创建项目目录
mkdir mynginxcd mynginx1.2 创建一个简单的 HTML 页面
echo "<h1>Hello from Docker!</h1>" > index.html你可以用 cat index.html 查看文件内容。
第二步:编写 Dockerfile
创建一个名为 Dockerfile 的文件:
vi Dockerfile写入以下内容(注意必须是英文):
FROM nginx
COPY index.html /usr/share/nginx/html/index.html保存并退出。
这段 Dockerfile 指定以官方 nginx 镜像为基础,把我们的 index.html 复制到它的默认网页目录中。
第三步:构建 Docker 镜像
在当前目录下执行:
docker build -t mynginx:v1 .成功后可以看到 Successfully tagged mynginx:v1,并可用以下命令确认:
docker images第四步:导出镜像文件
使用 docker save 将镜像打包成 .tar 文件:
docker save -o mynginx.tar mynginx:v1此文件就是我们要传输的“服务快照”。
第五步:将镜像传输到 B 服务器
使用 scp 命令:
scp mynginx.tar root@<B服务器IP>:/root/首次连接会提示 fingerprint 验证,输入 yes 并回车即可,然后输入密码。
第六步:在 B 服务器上导入镜像并运行
6.1 登录 B 服务器
ssh root@<B服务器IP>6.2 导入镜像
docker load -i mynginx.tar6.3 运行容器并映射端口
docker run -d -p 8080:80 mynginx:v1这表示将容器的 80 端口映射到宿主机的 8080 端口。
第七步:放行端口(如有防火墙)
使用 iptables 放行:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT或者使用 ufw(Ubuntu):
ufw allow 8080/tcp第八步:访问服务页面
在浏览器中访问:
http://<B服务器IP>:8080你将看到:
Hello from Docker!说明服务已经成功打包、传输、还原并运行 🎉
总结
步骤内容
1创建网页和 Dockerfile
2构建镜像
3导出为 .tar 文件
4使用 scp 传输到目标服务器
5导入镜像并运行
6成功访问服务页面
通过 Docker,我可以将一个完整的运行环境“快照”,迁移到任意服务器中,实现一次构建、多地部署,非常适合运维迁移、环境隔离、快速部署等场景。
页:
[1]