Docker-compose没有写volumes映射,为何容器内的目录被影射到host机器了?

下载了网上的一个mysql版本

git clone https://github.com/batlley/alpine-mysql.git

Dockerfile如下,没有创建/data/mysql 匿名卷


    FROM alpine:3.5
    MAINTAINER batlley
    WORKDIR /data
    COPY startup.sh /startup.sh
    RUN apk add --no-cache bash mysql mysql-client \
        && rm -rf /var/cache/apk/*
    COPY my.cnf /etc/mysql/my.cnf
    EXPOSE 3306
    CMD ["/startup.sh"]
   

我写了一个docker-compose.yml

    version: '2'
    services:
      mysql:
        image: alpine/mysql:latest
        restart: always
        hostname: local
        container_name: mysql
        volumes:
          - /etc/localtime:/etc/localtime
          - /var/run/docker.sock:/var/run/docker.sock
          - /etc/mysql:/etc/mysql
          #- /data/mysql:/data/mysql
        ports:
          - 3306:3306

开始没有注释掉- /data/mysql:/data/mysql,docker-compose up -d启动后,启动失败,后来用docker-compose up启动,发现报错

Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

后来我把 - /data/mysql:/data/mysql这行注释掉就不报错了。我用docker rm 删除了容器,并且将/data/mysql目录下的东西用rm -rf清空,重新docker-compose up启动,发现宿主机器的/data/mysql目录下居然又出现很多mysql-bin等文件,这很奇怪啊,Docker-compose没的volumes映射被注释掉了,Dockerfile文件里也没有匿名卷,为何/data/mysql目录下居然有很多mysql-bin等文件?

难道startup.sh文件有影响?不应该啊,这个是在容器内跑的脚本,不影响宿主啊,而且里面我看也没有创建影射关系的命令

阅读 2.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题