「これで幸せになれる!」dockerのコンテナとホスト間でファイル共有する方法

dockerのコンテナ内でファイルを編集する時、ホスト側で使用しているatomなどのエディタが利用できたら便利ですよね。とりあえずホストとコンテナ間で共有フォルダを設定したら良い感じになりました。ので、方法をメモします。

共有フォルダを設定するdocker runコマンド

共有フォルダを指定してdocker runするだけでOKでした。

#docker run -v ホスト側フォルダ:コンテナ側フォルダ ドッカーのイメージ /bin/bash

#以下、例
docker run -v /vagrant:/share centos:latest /bin/bash

あとはコンテナに入って/var/www/html以下にシンボリックリンクを貼るなりなんなりすれば夢の開発環境が出来上がります。

ポートフォワードしつつ共有フォルダを設定し、さらにCentOS7のsystemctlコマンドを使えるようにするdocker runコマンド

コンテナにApacheを導入してWebアプリを動かしたりしたいですよね。そのためにはポートフォワードしないといけないし、コンテナのOSがCentOSだとそのままじゃSystemctlコマンドが使えないから何もできないし。。という課題を諸々解決してくれる私的便利コマンドを用意しました。とりあえずこれを実行すれば幸せになれます。やったね!

docker run -p 80:80 -v /vagrant:/share -d --privileged centos:latest /sbin/init

#オプションの説明
# -p 80:80 ...80番ポートにポートフォワードする。
# -v /vagrant:/share ...ホストの/vagrantフォルダとコンテナの/shareフォルダを共有
# -d ...コンテナを起動するだけでアタッチはしない(コンテナには入らない)
# --privileged ...コマンドに拡張権限を渡す。なんかよくわかんないけどこのオプションでsystemctlが使えるようになる。

まとめ

最初はdockerの利点がわからず導入する意図が見出せなかったのですが、実際に使ってみると色々見えてくるものですね。AWSのインスタンスにDockerを仕込んでDockerイメージをやり取りするだけで、デプロイとか簡単にできるようになるのかな?ちょっと試してみようかと思います。