docker cpコマンドを利用すると、Dockerホストからコンテナへファイルをコピーすることができます。その逆も可能です。
今回はhttpdイメージからApacheサーバとしてのコンテナを立ち上げ、ホスト側からコンテナへファイルのコピーをおこなってみます(環境:macOSにてDocker for Macを利用)。
ホスト側(つまりローカル)の適当なディレクトリにおいて、コピー用のファイルを作成します。
1 |
vi sample.html |
下記のように編集しました。
1 |
<h1>Hello Sample</h1> |
次にhttpdイメージからコンテナを起動します。
1 |
docker run -d -p 8080:80 httpd |
コンテナの起動を確認します。この段階でサーバが起動し「localhost:8080」にて「It works!」と表示されているのが確認できます。
1 2 3 4 |
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES aabade1747be httpd "httpd-foreground" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp frosty_wright |
ホストからコンテナへ
次に先ほど作成しておいた sample.html を「docker cp」コマンドを利用して、コンテナ内にコピーします。
1 |
docker cp ./sample.html aabade1747be:/usr/local/apache2/htdocs/ |
カレントディレクトリ(./)にあるsample.htmlを、CONTAINER IDがaabade1747beであるコンテナの「/usr/local/apache2/htdocs/」ディレクトリにコピーしています。
以上で「localhost:8080/sample.html」にて「Hello Sample」と表示されるのが確認できます。
コンテナからホストへ
逆にコンテナから、ホスト側へファイルをコピーしてみます。
1 |
docker cp aabade1747be:/usr/local/apache2/conf/httpd.conf ./ |
CONTAINER IDがaabade1747beであるコンテナの「/usr/local/apache2/conf/」ディレクトリにある「httpd.conf」ファイルを、ホスト側のカレントディレクトリ(./)にコピーしています。
httpd.confファイルを確認できました。
1 2 3 |
ls httpd.conf sample.html |