Docker撰写命名卷:在主机上查找卷

Mak*_*sim 7 volume docker docker-compose

我有一个docker-compose.yml:

version: '2'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
Run Code Online (Sandbox Code Playgroud)

当我运行它docker-compose up -d然后docker inspect -f '{{ (index .Mounts 0).Source }}' ef8be254a08b为正在运行的db容器获取指定主机上的卷位置的Source时,如果我ls是目录(ls /var/lib/docker/volumes/test_db_data/_data: No such file or directory),我总是得到"没有这样的文件或目录" .如何才能获得卷的真实位置?

Mak*_*sim 7

所以我得到了答案.重点是Mac上的Docker 仍然在VM中运行.因此,系统路径仍然相对于VM而不是Mac.所有容器都存储在VM中并位于~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

进入VM使用:

screen  ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Run Code Online (Sandbox Code Playgroud)

然后,您可以看到在docker inspect {container_id}以下位置给出的Source文件夹的内容:

ls /var/lib/docker/volumes/test_db_data/_data
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你搞清楚这一点.今天花了我4个小时,并没有更接近理解为什么我无法达到它. (2认同)