命名卷的docker-compose.yml语法
用于指定命名卷的主机路径的命名卷的docker-compose.yml语法,docker,docker-compose,docker-volume,Docker,Docker Compose,Docker Volume,用于指定命名卷的主机路径的docker compose.yml语法是什么 docker-compose.yml: 我查过了,但找不到。老实说,我不知道任何人是如何使用这些东西的。在相同的参考文档中,您可以查看示例docker-compose.yml的完整扩展版本 有关命名卷装载,请参见db部分 db: image: postgres:9.4 volumes: - db-data:/var/lib/postgresql/data networks:
docker compose.yml
语法是什么
docker-compose.yml:
我查过了,但找不到。老实说,我不知道任何人是如何使用这些东西的。在相同的参考文档中,您可以查看示例docker-compose.yml的完整扩展版本 有关命名卷装载,请参见db部分
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
constraints: [node.role == manager]
组合卷的常见场景是使用默认命名卷,该卷映射到本地卷驱动程序并将卷放置在/var/lib/docker/volumes中。这不是您想要的,但对于许多人来说,这是一个简单的选择:
version: '3'
volumes:
myvolume:
othervolume:
services:
myservice:
volumes:
- myvolume:/volume/path
映射主机卷的常用方法是直接指定路径,卷上不需要名称。再说一次,这不是你想要的,但它很容易实现。这是盖下的绑定安装:
version: '3'
services:
myservice:
volumes:
- ./path:/volume/path
如果您希望将命名卷和主机卷放在一起,您需要的是配置为使用绑定装载的命名卷。如果目录不预先存在,那么这样做的缺点是失败,但好处是docker可以初始化一个空目录到映像的内容
version: '3'
volumes:
myvolume:
driver: local
driver_opts:
type: none
o: bind
device: /host/path/to/volume
services:
myservice:
volumes:
- myvolume:/container/volume/path
注意,绑定挂载的缺点是,它将由容器管理的文件(使用容器中的uid/gid)放置在主机上其他用户可能使用的路径中,主机上通常使用不同的uid/gid。结果是主机上或容器内部出现权限问题。您需要在两者之间对齐uid/gid以避免出现这种情况。谢谢,但这并不能回答我的问题。如何在最高作用域设置命名卷的路径?不必指定命名卷的路径。您可以使用
docker volume create myvol
创建命名卷,然后在装载时使用此命名卷。您如何知道容器uid/gid是什么?@thor84没有像id
这样的Linux命令在容器内和主机上的工作方式相同。是的,但由于“权限被拒绝”错误,我无法让容器保持足够长的时间来尝试该操作:(@Thor84no)您可以使用不同的命令启动容器,例如tail-f/dev/null
@zhkzyth任何不立即出错的命令都可以保持容器运行,但在发布时,您希望应用程序在前台运行。
version: '3'
volumes:
myvolume:
driver: local
driver_opts:
type: none
o: bind
device: /host/path/to/volume
services:
myservice:
volumes:
- myvolume:/container/volume/path