如何在 docker-compose 版本 2 上设置套接字?
How to setup sockets on docker-compose version 2?
使用:
- ubuntu:14.04
- docker 1.10.3
- docker-撰写 1.6.2
我可以在 docker-compose 版本 1 上设置套接字,方法如下:
container_name_1:
container_name: container_1
image: <- image ->
volumes:
- "/root:/home/app"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/bin/docker:/usr/bin/docker:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:ro"
container_name_2:
container_name: container_2
image: <- image ->
volumes:
- "/root:/home/app"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/bin/docker:/usr/bin/docker:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:ro"
然而,当我尝试使用版本 2 语法时它不起作用:
version: '2'
services:
mysql:
image: mysql
ports:
- "3000:3306"
container_name: mysql_container
environment:
- MYSQL_ROOT_PASSWORD=<-- password -->
- MYSQL_DATABASE=<-- database -->
volumes_from:
- data
data:
image: ubuntu
container_name: data_container_name
volumes:
- /var/lib/mysql
do_something:
image: <-- image -->
container_name: action_container
volumes_from:
- data:/var/lib/mysql
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker:ro
- /usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro
- /usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:ro
depends_on:
- data
- mysql
volumes:
data_container_name:
driver: local
我得到的错误是:
ERROR: Unknown volumes_from type '/usr/bin/docker' in '/usr/bin/docker:/usr/bin/docker:ro'
我在该位置有一个 docker 可执行文件,它在使用版本 1 格式时有效。
有什么想法吗?
volumes_from
syntax in version 2提到:
volumes_from:
- service_name
- service_name:ro
- container:container_name
- container:container_name:rw
/usr/bin/docker
既不是容器也不是服务名称。
volumes_from:
- data:/var/lib/mysql <=== works
- /usr/bin/docker:/usr/bin/docker:ro <=== won't work
您需要 use volumes:
才能挂载 paths:
- /var/run/docker.sock:/var/run/docker.sock
使用:
- ubuntu:14.04
- docker 1.10.3
- docker-撰写 1.6.2
我可以在 docker-compose 版本 1 上设置套接字,方法如下:
container_name_1:
container_name: container_1
image: <- image ->
volumes:
- "/root:/home/app"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/bin/docker:/usr/bin/docker:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:ro"
container_name_2:
container_name: container_2
image: <- image ->
volumes:
- "/root:/home/app"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/usr/bin/docker:/usr/bin/docker:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro"
- "/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:ro"
然而,当我尝试使用版本 2 语法时它不起作用:
version: '2'
services:
mysql:
image: mysql
ports:
- "3000:3306"
container_name: mysql_container
environment:
- MYSQL_ROOT_PASSWORD=<-- password -->
- MYSQL_DATABASE=<-- database -->
volumes_from:
- data
data:
image: ubuntu
container_name: data_container_name
volumes:
- /var/lib/mysql
do_something:
image: <-- image -->
container_name: action_container
volumes_from:
- data:/var/lib/mysql
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker:ro
- /usr/lib/x86_64-linux-gnu/libapparmor.so.1:/usr/lib/x86_64-linux-gnu/libapparmor.so.1:ro
- /usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:/usr/lib/x86_64-linux-gnu/libapparmor.so.1.1.0:ro
depends_on:
- data
- mysql
volumes:
data_container_name:
driver: local
我得到的错误是:
ERROR: Unknown volumes_from type '/usr/bin/docker' in '/usr/bin/docker:/usr/bin/docker:ro'
我在该位置有一个 docker 可执行文件,它在使用版本 1 格式时有效。
有什么想法吗?
volumes_from
syntax in version 2提到:
volumes_from:
- service_name
- service_name:ro
- container:container_name
- container:container_name:rw
/usr/bin/docker
既不是容器也不是服务名称。
volumes_from:
- data:/var/lib/mysql <=== works
- /usr/bin/docker:/usr/bin/docker:ro <=== won't work
您需要 use volumes:
才能挂载 paths:
- /var/run/docker.sock:/var/run/docker.sock