自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Docker】docker cpコマンドについて

今回は、docker cp コマンドについてです。

 

■やりたいこと

apacheサーバ(コンテナ)を2台用意し、
それぞれのindex.htmlを修正することで任意の文字列をブラウザ上に表示させたい。

■手順概要

index.htmlを修正する際、
事前にDockerホスト上にindex.htmlを用意しておき、Dockerホスト上のindex.htmlファイルをdocker cpコマンドを利用してapacheサーバに転送(コピー)します。

■手順

1.apacheサーバを2台用意します。

docker run -itd --name apache1 -p 8081:80 httpd:2.4
docker run -itd --name apache2 -p 8082:80 httpd:2.4

2.起動状態を確認します。

docker ps -a

f:id:guri2o1667:20210520105741p:plain

dockerホストの8081ポートはapache1サーバで利用し、8082ポートはapache2サーバで利用します。

3.ブラウザからアクセスし、文字列を確認します。

現在はデフォルト状態なので、
apache1,2どちらに接続しても「It works!」という表示になります。
本記事の最後では、この文字列を任意のものに修正します。

【apahce1】

f:id:guri2o1667:20210520110308p:plain

【apache2】

f:id:guri2o1667:20210520110326p:plain

4.Dockerホストでindex.htmlを用意します。

apache1サーバに接続した際に表示される文字列を「apache1 server text」としています。

cd /var/tmp/;pwd
vi index.html
cat index.html

 

f:id:guri2o1667:20210520110745p:plain

5.Dockerホストのindex.htmlをapache1サーバに転送します。

Dockerホスト上で以下コマンドを実行します。

docker cp index.html apache1:/usr/local/apache2/htdocs/

f:id:guri2o1667:20210520111151p:plain

6.apache1サーバにブラウザでアクセスします。

「apache1 server text」と表示されていればOKです。
※キャッシュが残っている可能性があるため、「Ctrl+F5」で更新してみてください。

f:id:guri2o1667:20210520111423p:plain

7.同じ要領でapache2サーバにもindex.htmlを転送します。

index.htmlは事前に「apache2 server text」と修正しております。

f:id:guri2o1667:20210520111632p:plain

f:id:guri2o1667:20210520111653p:plain

f:id:guri2o1667:20210520111739p:plain


これで、apache1,apache2サーバともにindex.htmlファイルを修正することができました。

以下は補足事項です。

8.apache1 ,2にログインし、コンテナ内部からindex.htmlファイルを確認します。

【apache1】

f:id:guri2o1667:20210520112259p:plain

【apache2】

f:id:guri2o1667:20210520112433p:plain

■docker cp コマンドの書式について

以下の通りです。
※Linux上のcpコマンドと書式自体はあまり変わらないです。

docker cp 送信元 送信先


送信元も送信先も「コンテナ名:パス」という表記が使えます。
※手順5参照

以上です。