【Docker】コンテナ内にvi等のエディタをインストールしていない状態で、コンテナ内ファイルを編集したい時の方法

masyus-work-eyecatch-docker

Dockerで構築する環境が、ローカルだけでなく本番でも同様のイメージを使うことを想定していた場合、極力不要なアプリケーションを入れないのが望ましい。たとえばvi等のエディタも、可能なら入れないほうがベターだろう。

 

そうやって構築した環境は、Dockerコンテナ内にsshして特定のファイルをいじりたい時にエディタが無いので困ることになるわけだが、今回はローカル環境下でDockerコンテナ内のファイルを追加・編集したい時の方法について書く。想定ホストOSはMacとする。

docker container cpで、ホストOSからDockerコンテナへファイルコピーする

いきなり結論を書くと、

docker container cp hoge.txt あなたのコンテナ名:/tmp/.

といったように、ホストOSにてあらかじめ準備したファイルをDockerコンテナ内へコピーさせる方法が手っ取り早い。ファイル新規追加も更新も、大抵これでいける。

 

上記であなたのコンテナ名と記載した箇所は

docker container ls

で表示されるCONTAINER IDもしくはNAMESという項目名を探して当て込む。

docker container cpの使い所

たとえば

Dockerでvolumeをマウントしていないディレクトリのファイルを変更したい場合

が挙げられる。

 

よくありそうな事例でいうと、エディタの無いDockerコンテナ環境下でApacheのvhosts設定を追加・変更したい場合など。(ただし、Apacheのディレクトリをマウントしていればこの限りではない)