Docker for Mac 17.03 と Kitematic (Beta) 0.13 を使用する上で、GUIだけでは共有フォルダを設定できなかったようなので、そのときの設定の手順を備忘として記録します。ここでは、 Oracle VM VirtualBox ではなく、 HyperKit を使用している場合を想定しています。
この記事で説明しているのは、Dockerの基本的なコマンドをターミナルで実行することだけです。Dockerイメージは、既に取得済みであることを前提としています。
まずは、コンテナにマウントしたいホストOS(macOS)側のディレクトリが、Dockerデーモンにファイル共有として設定されていることを確認します。ファイル共有の設定は、 Docker メニュー > Preferences > File Sharing
から確認できます。
次に、どのイメージからコンテナを起動するのかを確認するために、ホストOSのターミナルで docker images
を実行して、既に取得済みであるDockerイメージの一覧を取得します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins latest 8d383af9763f 8 days ago 713 MB
ghost latest f7f74cd3ef27 9 days ago 331 MB
nginx latest 6b914bbcb89e 10 days ago 182 MB
momoto/workspace latest b7edec7e4c13 13 months ago 469 MB
kitematic/hello-world-nginx latest 03b4557ad7b9 21 months ago 7.91 MB
ここで確認できたDockerイメージをもとにコンテナを起動します。コンテナの起動は docker run
のコマンドを使って行いますが、このときに実行するコマンドのオプションに、ホストOSのどのディレクトリを、コンテナ内のどのディレクトリへとマウントさせるのか、を指定します。
$ docker run -d -p 3000:80 -v ~/Workspace:/var/shared --privileged --name workspace momoto/workspace:latest /sbin/init
ここで docker run
のオプションを網羅的に説明することはしませんが、上の例で使用しているオプションには、次のような意味があります。
-
-d
コンテナをデタッチモードで起動します。デアタッチモードでない場合、フォアグラウンドモードになります。 -
-p
hostPort:containerPort
という形式で、ホストからコンテナへポートフォワードするポート番号を指定します。共有フォルダとは直接、関係ありません。 -
-v
host-src:container-dest
という形式で、共有フォルダを指定します。 -
--privileged
Privilegedモードで起動します。コンテナ内からホストのすべてのデバイスにアクセスできるようになります。コンテナでsystemctlを使用したいときに必要です。 -
--name
任意のコンテナ名を指定します。
docker run
が正常に実行されると、コンテナのプロセスが起動されて、GUIのKitematicの画面からコンテナを確認できるようになります。
Kitematic の画面でも共有フォルダが設定されていることを確認できます。