11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker Toolboxでvolumesでマウントができない場合の対策

Posted at

Docker Toolbox とは

Windows環境でDockerを使用する場合、

  • Windows 10 Pro あるいは Enterprise -> Docker for Windows
  • Windows 10 Home(Docker for Windowsのシステム要件を満たしていないもの)-> Docker Toolbox

と使い分ける必要があります。
本記事は、後者のDocker Toolbox利用者向けの内容になります。

docker-compose.xmlのvolumes定義でマウント

Docker for WindowsやDocker for Macの場合は、docker-compose.xmlのvolumesに下記のように記述すると、
ホストのディレクトリをコンテナのディレクトリにマウントすることができます。(ホストのディレクトリ:コンテナのディレクトリ)。

docker-compose.xml
version: '3'
services:
  db:
   ~中略~
   environment:
   ~中略~
   volumes:
     - ./initdb:/docker-entrypoint-initdb.d
     - ./data:/var/lib/data

特に、コンテナ側に/docker-entrypoint-initdb.dを指定すると、
ホスト側に格納していおいた.sqlや.iniをコンテナの初回起動時に実行してくれるため、
DB作成直後のテーブル作成やレコード作成に活用することが多いですね。

Docker for WindowsやDocker for Macでは、この記述で期待通りマウントが行われますが、
Docker Toolboxでは、期待通りマウントが行われません。

例えば、/docker-entrypoint-initdb.d宛に初回起動時に実行されてほしいsqlのフォルダを指定しても、
コンテナの初回起動時のログに下記のように出力され、sql実行がignoringされてしまいます。
1.PNG
正しくマウントが行われていれば、コンテナの/docker-entrypoint-initdb.dディレクトリにsqlなどがコピー・実行されますが、
マウントに失敗するため、/docker-entrypoint-initdb.d配下にファイルが無く、何も実行されないのです。

マウントするための対策

原因は、Docker Toolboxでは、マウントできるホスト側のフォルダが限られているためです。
docker-compose.xmlでそのフォルダを指定する必要があります。

Docker Toolboxをインストールした際、VirtialBoxもインストールされたと思います。
VirtialBoxで、Default>右クリック>設定>共有フォルダーで、下記の設定が確認できます。
2.PNG
この「c/Users」が、マウントできるホストのフォルダです。

なので、docker-compose.xmlを下記のように書き換え、

docker-compose.xml
   volumes:
     - /c/Users/initdb:/docker-entrypoint-initdb.d

コンテナの再起動を行います。
(必要に応じて、コンテナの削除→起動を行ってください。)
すると、コンテナ起動時のログに、下記のように出力され、sqlが実行されたことが確認できます。
3.PNG
もちろん、コンテナに入ってもDBに入っても、期待通りマウントとsql実行が行われていることが確認できます。

最後に

解決のために、いろいろな記事を参考にさせて頂きました。ありがとうございました。

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?