Docker tool-boxでwindowsホストディレクトリをマウントする
①Docker machine
②Docker tool-box
と色々ある。私のような初学者だとdockerコマンドもいちいちググって実行するが、このホストディレクトリのマウントはかなり苦労したので備忘録として残す。
なお、これから記載する方法は
・Windows10 Home or Pro
・Docker tool-box
に限る。これ以外では通用しないことがあるのでご注意いただきたい。
失敗例から見ていきます。
通常下記の通り進めるとマウントできる(らしい)
docker run時のオプションとして-v /c/Users/[host directory]:/[container directory]を入れる.
すると,ホストのC:Users/[host directory]が,コンテナの/[container directory]にマウントされる.
docker run -v /c/Users/[host directory]:/[container directory] [container]
# 例として docker run -v /c/Users/Host/test:/test ubuntu /bin/bash
何が起こるかというと、上記のコマンドを行うとdocker runなので当然コンテナができる。
しかし…
# 作成されたコンテナを使用するためコンテナ起動 $ docker start [container ID] # 起動したコンテナに入る $ docker attach [container ID] You cannot attach to a stopped container, start it first
You cannot attach to a stopped container, start it first
は?
いやなんで入れないねんwってことで永遠と作成されたコンテナに入れません。docker ps -aで見ると確かに作成されているのは確認できるのに…
どうやらVirtualBoxとの連携バグからこうなるらしい(クソOracleめ)
そこで!大量のネットの情報を試しに試してたどり着いたのが以下の方法
# 事前にsrcディレクトリに適当にtest.txtを作成 # ホストユーザーのsrcディレクトリをubuntuイメージでマウント $ docker run -it -v //c/Users/#HOSTUSER/src:/src ubuntu /bin/bash # コンテナinするので確認 $ [container ID]# cd src $ [container ID]:/src# ls test.txt
ポイントは/をcの前に二重にすること!
これだけのために色んなサイト見ましたが、//cと記載あるのは少なかった
しかし、気づきましたが、Winows環境での開発は少ないのでもはやMacに乗り換えるのが必須かもしれません。
なぜならネット上の多くの情報がMac環境下での情報であり、Win環境は海外サイトを漁らないと出てこないことが多いからです…
そもそもdocker for windowsのHyper-Vとかクソ重い仮想マシンも使いにくい…
以上