天将奔烈

日々の記録や学習内容を書いていきます

DockerでVolumeを使ってめっちゃ便利にする。

dockerのコンテナ内で作成されたファイルなどは、コンテナを終了すると全て破棄される。

いやいや困るぜ。。。。

それにコンテナ内でソース弄って反映させて、ローカルにいちいちコピーするとかめっちゃ手間じゃん。

dockerって不便なんじゃね?? って思ってた時が私にもありました。

docker volumeを使ってファイルあるいはディレクトリをマウントすれば上記の問題は全て解決される。 そう、全てだ。

しかもやり方はめっちゃ簡単。

コンテナ起動時に起動時に

# docker run -v {hostのファイル} : {コンテナのマウント先} -it {イメージ名}

#実際にやるとこんな感じ
docker run -v /Documents/local_file:/home/ -it hoge

そう-vのオプションをつけてホストファイルとコンテナのパスを指定するだけだ。楽勝だぜ。

これでコンテナ内で操作したファイルが消えたり、コンテナ内で変更したソースをローカルにコピーしたり する必要もない。 マウントすれば、変更したファイル内容はローカル→コンテナ コンテナ→ローカルの双方で連携される。(どちらで操作してもホスト側で操作しているのと同義) ディレクトリをマウントしている場合は、コンテナ側のディレクトリ内で作成した新規ファイルもローカルに出現する。

注意点は、hostのファイルパスは絶対パスじゃないといけない。 相対パスだとエラーになるから気をつけていこう。