使用Docker Swarm定义共享主机卷
我正在尝试使用以下docker-stack.yml文件将我的服务部署到我的Docker Swarm版本17.06-ce。 我想使用卷映射我的Windows主机上的C:/logs
目录到我的容器内的/var/log
目录。
version: '3.3' services: myapi: image: mydomain/myimage ports: - "5000:80" volumes: - "c:/logs:/var/log/bridge"
当我删除卷部分,我的容器开始罚款。 添加卷后,容器甚至不会尝试启动即
-
docker container ps --all
不显示我的容器。 -
docker events
不显示容器试图启动。
下面的命令适用于我,所以我知道我的语法是正确的:
docker run -it -v "c:/logs:/var/log/bridge" alpine
我已经几次阅读过卷文档了。 我的音量的语法是否正确? 这是一个支持的情况? 这是一个Docker错误?
当你在版本2中运行它时,Docker运行将起作用,并且使用docker-compose,我们可以运行自定义卷装载。
在版本3中,我们必须使用具有默认卷path或自定义path的命名卷。
这是docker – 与默认音量组成
version: "3.3" services: mysql: image: mysql volumes: - db-data:/var/lib/mysql/data networks: - overlay deploy: mode: replicated replicas: 2 endpoint_mode: dnsrr volumes: db-data:
卷被挂载到默认的/ var / lib / docker / volumes / repo / _data
我们可以select将自定义path安装到卷上
version: "3.3" services: mysql: image: mysql volumes: - db-data:/var/lib/mysql/data networks: - overlay deploy: mode: replicated replicas: 2 endpoint_mode: dnsrr volumes: db-data: driver: local driver_opts: o: bind type: none device: /home/ubuntu/db-data/
用于服务,存储和堆栈文件的卷