将主机目录从 yaml/compose 文件挂载到 docker 容器
Mounting a host directory to a docker container from yaml/compose file
我的部分配置是这样的
mymicroservice:
image: service_img
networks: myoverlay
volumes:
- /Users/abcdUser/mountme:/opt/company/
当我部署 docker 群服务堆栈时,我的机器目录被挂载到 /opt/company
,这就完成了工作。
但是,我想在单独的 volumes:
下指定源目录,然后在那边指定那个名称。我认为这是可能的,但我找不到语法。
所以我想要以下内容但无法做到:
mymicroservice:
image: service_img
networks: myoverlay
volumes:
- myownvolume:/opt/company/
volumes:
- myownvolume: /Users/abcdUser/mountme
我想澄清一下,这里的myownvolume
只是指向目录/Users/abcdUser/mountme
,我并不是要创建一个docker卷。或者还有其他更好的方法吗?
这不可能。您必须使用绑定安装语法或卷语法。 compose 配置顶层的卷不允许您混合使用两者。有关类似问题,请参阅 。
可以这样做,但不能使用标准设置。默认卷驱动程序不允许您正在查找的格式。您需要使用需要外部安装的 docker 插件。考虑下面的 yaml
version: '2'
services:
one:
image: alpine
working_dir: /one/
command: sleep 600
volumes:
- data:/one/
two:
image: alpine
working_dir: /two/
command: sleep 600
volumes:
- data:/two/
volumes:
data:
driver: local-persist
driver_opts:
mountpoint: /data/local-persist/data
当你安装了 local-persist 插件时,上面的方法就可以工作了。 https://github.com/CWSpear/local-persist
您可以在
上找到其他可用的插件
https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins
此外,如果卷条目的重复对您来说是个问题,那么您可以在 YAML 中使用锚点
version: '3'
services:
alpines:
image: alpine
command: sleep 200
volumes: &common_volumes
- ./data:/data
- ./config:/config
alpine2:
image: alpine
command: sleep 200
volumes: *common_volumes
$ docker-compose config
services:
alpine2:
command: sleep 200
image: alpine
volumes:
- /home/vagrant/so/volumes2/data:/data:rw
- /home/vagrant/so/volumes2/config:/config:rw
alpines:
command: sleep 200
image: alpine
volumes:
- /home/vagrant/so/volumes2/data:/data:rw
- /home/vagrant/so/volumes2/config:/config:rw
version: '3.0'
我的部分配置是这样的
mymicroservice:
image: service_img
networks: myoverlay
volumes:
- /Users/abcdUser/mountme:/opt/company/
当我部署 docker 群服务堆栈时,我的机器目录被挂载到 /opt/company
,这就完成了工作。
但是,我想在单独的 volumes:
下指定源目录,然后在那边指定那个名称。我认为这是可能的,但我找不到语法。
所以我想要以下内容但无法做到:
mymicroservice:
image: service_img
networks: myoverlay
volumes:
- myownvolume:/opt/company/
volumes:
- myownvolume: /Users/abcdUser/mountme
我想澄清一下,这里的myownvolume
只是指向目录/Users/abcdUser/mountme
,我并不是要创建一个docker卷。或者还有其他更好的方法吗?
这不可能。您必须使用绑定安装语法或卷语法。 compose 配置顶层的卷不允许您混合使用两者。有关类似问题,请参阅
可以这样做,但不能使用标准设置。默认卷驱动程序不允许您正在查找的格式。您需要使用需要外部安装的 docker 插件。考虑下面的 yaml
version: '2'
services:
one:
image: alpine
working_dir: /one/
command: sleep 600
volumes:
- data:/one/
two:
image: alpine
working_dir: /two/
command: sleep 600
volumes:
- data:/two/
volumes:
data:
driver: local-persist
driver_opts:
mountpoint: /data/local-persist/data
当你安装了 local-persist 插件时,上面的方法就可以工作了。 https://github.com/CWSpear/local-persist
您可以在
上找到其他可用的插件https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins
此外,如果卷条目的重复对您来说是个问题,那么您可以在 YAML 中使用锚点
version: '3'
services:
alpines:
image: alpine
command: sleep 200
volumes: &common_volumes
- ./data:/data
- ./config:/config
alpine2:
image: alpine
command: sleep 200
volumes: *common_volumes
$ docker-compose config
services:
alpine2:
command: sleep 200
image: alpine
volumes:
- /home/vagrant/so/volumes2/data:/data:rw
- /home/vagrant/so/volumes2/config:/config:rw
alpines:
command: sleep 200
image: alpine
volumes:
- /home/vagrant/so/volumes2/data:/data:rw
- /home/vagrant/so/volumes2/config:/config:rw
version: '3.0'