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

2020/04/19

author

masyus

本番環境をDockerのコンテナベース構築している場合、

コンテナを軽量にするため極力不要なアプリケーションをインストールしない

ようにしているかと思います。vi等のエディタも基本的にはローカル開発環境にだけあれば良いですし、ファイル容量が重いのでやはりインストール対象外にしているケースが大半でしょう。

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

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

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

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

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

docker container ls

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

2. volumeをマウントして編集する

Dockerコンテナ起動時にvolumeを指定してマウントし、マウントしたディレクトリを介してファイルをやりとりすることができます。volumeを作成してからマウントする流れになりますのでdocker container cpと比較すると初期設定が手間ですが、何度もファイル変更したいニーズがある場合は良いと思います。一度設定できればこちらのほうが手軽に編集できるため良いかもしれません。