2017-10-06 165 views
0

在使用Docker 17.05.0-ce的Ubuntu 16.04上,嘗試使用主機目錄映射(卷)設置percona-mysql docker映像。以下是圖像:在定義卷(-v)時,在Ubuntu上運行後,Docker percona(mysql mariadb)容器停止運行

docker pull percona/percona-server:latest

,這裏是容器運行命令:

docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -v /home/myuser/db/files:/var/lib/mysql -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603

的問題是,容器立即停止此命令後 - 但如果我不使用-v ...參數(卷映射)然後容器啓動沒有問題。如何解決這個問題呢?

此問題可能也可能在mysql或mariadb圖像上。

回答

0

解決方案

鍵入以下主機上的命令:

cd /home/myuser/db 
sudo chown 1001:0 files 

然後再次運行容器和多數民衆都:)

  1. 運行的失敗之後,我期待在日誌中:docker logs percona並看到mysql沒有權限寫入目錄/var/lib/mysql
  2. 我沒有量運行容器:docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603
  3. 我登錄到容器:docker exec -it percona /bin/bash
  4. I型:cd /var/lib
  5. 執行ls -l我看到後不久的mysql目錄下面一行:drwxr-xr-x 5 mysql root 4096 Oct 6 14:39 mysql。這意味着所有者是mysql,組是root
  6. 我得到id -u mysql MySQL用戶UID(I得到)
  7. 我檢查由groups mysql該MySQL有一組(根目錄)。因此,要獲得根GID I型id -g mysql(我得到)
  8. chown命令允許設定文件UID:GID即使存在這些犯規的用戶,所以我們並不需要在主機上創建用戶mysql(!)。因此,在主機上運行chown ...之後,文件夾files具有與容器中的mysql期望的完全相同的用戶和組。