エディタをインストールしていないDockerコンテナ内でファイルを追加・編集する方法

2020/04/19

author

masyus

本番環境をDockerのコンテナベース構築している場合、コンテナを軽量にするため極力不要なアプリケーションをインストールしないようにしているかと思います。vi等のエディタも基本的にはローカル開発環境にだけあれば良いですし、ファイル容量が重いのでやはりインストール対象外にしているケースが大半でしょう。

基本的に本番環境にデプロイしたコンテナへ直接入って何か作業することは無いと思いますが、たとえば本番環境用のコンテナイメージ内で動作するアプリケーションの設定を微調整するためにローカル開発環境へダウンロードし、コンテナを立ち上げて中の設定ファイルを編集、動作検証したい要請はあります。今回はそのようなケースを想定して解説します。

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

簡単に実現する方法としては下記です。

docker container cp setting.yaml コンテナ名:/tmp/.

ホストOSにてあらかじめ準備した設定ファイルをDockerコンテナ内へコピーさせる方法が手っ取り早いかと思います。cpなのでファイル新規追加・更新それぞれ対応可能です。上記でコンテナ名と記載した箇所は

docker container ls

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

他にも方法はあるか?

たとえばDockerコンテナ起動時にvolumeを指定してマウントし、マウントしたディレクトリを介してファイルをやりとりすることもできます。volumeを作成してからマウントする流れになりますのでdocker container cpと比較するとやや手間ですが、一度に大量のファイルを取り扱いたい場合はこちらのほうが良いかもしれません。