日志.Docker 关于备份的一些小事

本文最后更新于:2020年6月12日 下午

常用指令和关系

Docker 常用指令和关系


镜像(Image)

容器的基石(环境模板),本身只是个层叠的只读文件系统。

仓库

# 上传
docker push user/imageName

# 拉取
docker pull user/imageName

tar 包

# 保存,fileName 前面记得加路径,不然默认存当前目录
docker save -o \xxx\xx\fileName user/imageName

# 载入与其简写
docker load --input fileName
docker load < fileName

容器(Container)

类似一个轻量级的沙盒。当沙盒结束时,所作过的修改都会消失。
镜像是只读的,容器从镜像启动,只是在镜像的上层创建了一个可写层,而镜像本身没有变化。

备份

# 创建新的镜像后,备份镜像即可
docker commit containerId user/imageName:version

数据卷

数据卷 ≠ 数据卷容器

  • 数据卷:
    1. 可供容器使用的特殊目录。可是通过 voluem create 创建的文件,或者主机的目录或者文件。
    2. 数据的修改会立马生效,无论是容器内操作还是本地操作。
    3. 数据卷的更新,不会影响镜像。
    4. 会一直存在,知道没有容器使用。
  • 数据卷容器:
    1. 需要在多个容器之间共享一些持续更新的数据。
    2. 一个正常的容器,存在的目的就是提供数据卷给其他数据,因为数据卷无法直接被多个容器挂载。
# 列出所有数据卷
docker volume ls

# 命令解析
# --volume-from     从指定的容器挂载数据卷
# -v                将主机目录挂载到容器内部目录
# tar               将数据卷备份或恢复到主机目录

# 变量名
# containerName    数据卷容器名
# imagesName       启动镜像
# localDir         被挂载的本地路径
# containerDir     挂载到容器的路径
# volumeDir        数据卷的挂载目录

# 备份
docker run --volumes-from containerName -v localDir:containerDir imagesName tar cvf /containerDir/backup.tar /volumeDir

# 恢复
docker run --volumes-from containerName -v localDir:containerDir imagesName tar xvf /containerDir/backup.tar

参考资料