【问题标题】:Docker MariaDB volume not found in container?在容器中找不到 Docker MariaDB 卷?
【发布时间】:2019-01-06 13:54:59
【问题描述】:

这个docker-compose.yml 文件可以正常工作:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: docker-test
    container_name: docker-test
    ports:
      - 9000:80
    volumes:
      - '/var/www/docker-test/:/srv/app/'      
  db:
    image: mariadb:10.4
    container_name: docker-test-db
    ports:
      - 33061:3306
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - '/docker-db-data/docker-test/:/var/lib/mysql/'

主机中的卷创建良好 (/docker-db-data/docker-test/) 但是当我“SSH”到容器时,我似乎找不到 /var/lib/mysql 例如,

[root@localhost docker]# docker exec -it docker-test bash
root@2d03e775f531:# ls /var/lib/mysql
ls: cannot access '/var/lib/mysql': No such file or directory

这是预期的吗?如果不是,它实际位于哪里?

【问题讨论】:

  • 您不会将该卷挂载到 app 容器中,因此如果您将 docker exec 装入它,您不应该期望看到它。
  • @DavidMaze 我明白了,我的印象是来自主机的/docker-db-data/docker-test/ 将与来自容器的/var/lib/mysql/ 实时同步。
  • 在你挂载到的特定容器中。如果你 docker exec docker-test-db ls /var/lib/mysql 你应该看到它。
  • @DavidMaze 你是对的!我错过了-db 前缀。您可以将其作为答案,我会接受。

标签: mysql docker containers mariadb virtualization


【解决方案1】:

volumes: 附加到特定容器。您的docker exec docker-test 命令附加到app: 容器,但您实际上想附加到您已命名为docker-test-dbdb: 容器。如果您在最后添加 -db,它将起作用:

docker exec docker-test-db ls /var/lib/mysql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多