用docker使文件远程在两台服务器上传输
背景:
两台服务器处于不同内网,人员分处两地。需要从A服务器上传输重要大文件给B。B服务器存在多个依赖缺失无法通过zerotier进行内网穿刺
(否则可以直接在B上与A通过zerotier建立局域网传输)。
解决方法:
鄙人小白,只想到用docker来实现完成传递。现有的各种博客没找到比较清晰健全的实现,故整理鄙人经验如下:
1.去docker官网创建一个用户
记住用户名or邮箱,密码
举例为:
用户名:123
2.在A服务器上登录docker账户
docker login
3.在A服务器上创建一个容器
随便拉个基础的ubuntu或者centos
docker run -t -i ubuntu:18.04 /bin/bash
退出容器到服务器A
快捷键Ctrl+D
查看并记录该容器ID(记住前四位即可,在本例中假设为6f19)
docker ps -a
4.将需传输文件C从A传到该容器中
docker cp 文件C在服务器A的地址 容器ID:/在容器中存放的位置
(假设我们存在容器的/tmp中)
docker cp /A_path/C 6f19:/tmp/
5.进入容器查看传输结果
重容器并进入,可以用du -sh查看文件大小是否正确,以及ll,ls等命令确认
docker start 6f19
docker attach 6f19
du -sh
6.将容器打包成镜像
docker commit <容器名称/容器ID> <镜像名>
(假设我们将镜像名命名为C_send)
docker commit 6f19 C_send
查看并记录镜像ID (依旧只需要记前4位就行,假设为2383)
docker images
7.上传到公开仓库
1) 给要上传的image打个标签 (相当于一个软连接)
docker tag <镜像ID> docker的用户名/镜像名称:版本
docker tag 2383 123/C_send:1.0
2)上传
docker push 用户名/镜像名字:打标签时,自定义的版本号
docker push 2383 123/C_send:1.0
8.在B服务器拉取
- 在B服务器上登录docker账户123
- 拉取
docker pull 123/send_spec:1.0
完结,撒花~~~