Docker 撰写相对路径与 Docker 卷

Docker Compose Relative paths vs Docker volume

我有一个用于网站的 docker 组合文件,其中包括用于各种目的的一堆其他容器,包括一个 mysql 将具有持久数据的数据库。目前撰写文件指定数据的相对路径,例如:

mysql:
  图片:mysql:5.7
  container_name:sqldb
  卷:
   - ./mysql_data/_data:/var/lib/mysql

和文件夹结构:

 --mysql_data
 --static_content
 docker-compose.yml

这意味着我可以随时通过复制整个文件夹将整个站点(包括持久化内容)移动到另一台服务器,然后 运行 docker-compose up。

但是读到 docker 卷听起来它是首选方法(加上使用 "docker run" 似乎不支持相对绑定安装路径,但在 compose 中工作)所以我'我想知道我是否需要更改此方法以使用卷?这种相对约束方法有什么内在的错误吗?如果我确实切换到卷,在移动容器时我是否必须手动移动卷(例如这种方法How to port data-only volumes from one host to another?)?

Docker

中的数据持久化

安装任何卷有四种可能的选择:

  1. 相对路径
  2. 绝对路径
  3. Docker 卷默认路径
  4. Docker 带绝对路径的卷

这是上面的例子:

version: '3'
services:
    sample:
        image: sample
        volumes:
            - ./relative-path-volume:/var/data-two
            - /home/ubuntu/absolute-path-volume:/var/data-one
            - docker-volume-default-path-volume:/var/data-three
            - docker-volume-absolute-path-volume:/var/data-four
volumes:
  docker-volume-default-path-volume: {}
  docker-volume-absolute-path-volume:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /home/path/of/your/folder

相对路径./relative-path-volume:/var/data-two

绝对路径/home/ubuntu/absolute-path-volume:/var/data-one

Docker 卷默认路径docker-volume-default-path-volume:/var/data-three

Docker 具有绝对路径的卷docker-volume-absolute-path-volume:/var/data-four

这适用于任何服务器,因为我们将卷设备 属性 自定义到相应的目录路径。