他人亦已歌

发布于     更新于
利用 docker 传输文件

我们之中有人想把他自己的担子卸下来,或者稍微谈谈他的感触。 他得到的回答,不论是什么,通常都会使他受伤。 因为他的话虽然是从日日夜夜反刍的个人悲痛之深渊中,由意象慢慢形成,经热情与痛苦的火焰熬练,如实表达了,但对于听众,却毫无分量。 听众只把它看成一种普通的感情,一种大量制造的、在市场中心贩卖的伤心故事。

《瘟疫》 卡谬

利用 Docker 传输文件


想要给服务器重装系统,所以需要备份文件。将服务器的网站文件保存到本地。服务器本身配置很低,所以直接下载速度很慢。

0. 将要备份的文件压缩为 zip

zip -q -r www.zip /var/www
zip -q -r nginx.zip /etc/nginx
# 解压
unzip -o -d / www.zip

1. 利用 rsync 来同步

同步服务器到本地

rsync -azP [email protected]:~/www.zip ~/rsyncDesk/

走的还是服务器公网的带宽,故而同步速度只有 100 多 kB/s 。太慢了

2. 利用 docker

在腾讯云服务器,将压缩包打包为 docker 镜像

a 在服务器登录腾讯云镜像仓库

sudo docker login --username=10000xxx ccr.ccs.tencentyun.com

b 创建 Dockerfile

FROM alpine
WORKDIR /app
COPY ./www.zip .

c 打包和推送

sudo docker build -t www .
sudo docker tag www ccr.ccs.tencentyun.com/namespace/dockersync:www
sudo docker push ccr.ccs.tencentyun.com/namespace/dockersync:www

d 拉取到本地

sudo docker pull ccr.ccs.tencentyun.com/namespace/dockersync:www

e 从 docker 镜像解压

参照方法

docker create $image  # returns container ID
docker cp $container_id:$source_path $destination_path
docker rm $container_id
docker create ccr.ccs.tencentyun.com/namespace/dockersync:www
docker cp 20321b6c9985:/app ./app
docker rm 20321b6c9985

f 制作镜像压缩包

参考:https://support.huaweicloud.com/usermanual-swr/swr_01_0006.html

  • 执行如下命令查看镜像。
docker images

查看需要导出的镜像及tag。

  • 执行如下命令制作镜像压缩包。
docker save [OPTIONS] IMAGE [IMAGE...]

示例:

docker save nginx:latest > nginx.tar
ls -sh nginx.tar
# 108M nginx.tar

docker save php:5-apache > php.tar.gz
ls -sh php.tar.gz
# 372M php.tar.gz

docker save --output nginx.tar nginx
ls -sh nginx.tar
# 108M nginx.tar

docker save -o nginx-all.tar nginx
docker save -o nginx-latest.tar nginx:latest

构建:

新建 Dockerfile

FROM scratch
COPY ./ ./

打包:

docker build -t test:v2 ./
docker save test:v2 > test-scratch.tar.gz

PS 重装之后,可以再从镜像仓库将打包的文件拉取下来。