Docker - 无法启动mysql权限错误

时间:2016-01-03 17:14:31

标签: mysql macos permissions docker volumes

我遇到了docker和mysql的问题。我已经基于 phusion / baseimage 构建了一个图像。我想创建一个图像,其中/ var / lib / mysql目录与我的主机(OS X)共享,因为我不想将我的数据存储在容器上。

当目录/ var / lib / mysql未共享时,一切正常。当我共享这个目录时,mysql服务无法启动。在日志中有关于启动时权限问题的信息。

来自/ var / lib的 ls -la 的结果是:

[...]
drwxr-xr-x  1 lc      staff    170 Jan  3 16:55 mysql
[...]

mysql 用户应该是所有者。我试着这样做:

sudo chown -R mysql:mysql mysql/

但是这个命令没有返回任何错误,也没有改变所有者。

我还尝试将我的用户(从容器)添加到mysql组:

lc@cbe25ac0681e:~$ groups lc
lc : lc sudo mysql

但它也没有用。有谁知道如何解决这个问题?

我的docker-compose.yml文件:

server:
  image: lukasz619/light-core_server
  ports:
    - "40080:80"
    - "40022:22"
    - "40443:443"
    - "43306:3306"
  volumes:
     - /Users/lukasz/Workspace/database/mysql:/var/lib/mysql

这是我的Dockerfile:

FROM phusion/baseimage

RUN apt-get update
RUN apt-get install -y apache2

# Enable SSH
RUN rm -f /etc/service/sshd/down
RUN /etc/my_init.d/00_regen_ssh_host_keys.sh

# public key for root
ADD public_key.pub /tmp/public_key.pub
RUN cat /tmp/public_key.pub >> /root/.ssh/authorized_keys && rm -f /tmp/public_key.pub

EXPOSE 80
CMD ["/sbin/my_init"]
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

2 个答案:

答案 0 :(得分:0)

当我们说用户在容器和主机之间共享时,它不是相当为真;它是实际共享的UID。这意味着容器中名为mysql的用户很可能与主机上的用户mysql具有不同的UID。

我们可以尝试通过使用图像来设置权限来解决此问题:

docker run --user root lukasz619/light-core_server chown -R mysql:mysql /var/lib/mysql

这可能有效,具体取决于您设置图像的方式。运行中间的VM还有一个复杂的问题。

答案 1 :(得分:0)

问题是OS X ..我运行了这个docker-composer.yml

server:
  image: lukasz619/light-core_server
  ports:
    - "40080:80"
    - "40022:22"
    - "40443:443"
    - "43306:3306"
  volumes:
      - /var/mysql:/var/lib/mysql

只能在boot2docker和容器之间共享目录(和 chown ),但不能在Os X和容器之间正常共享。