今回は、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
dockerホストの8081ポートはapache1サーバで利用し、8082ポートはapache2サーバで利用します。
3.ブラウザからアクセスし、文字列を確認します。
現在はデフォルト状態なので、
apache1,2どちらに接続しても「It works!」という表示になります。
本記事の最後では、この文字列を任意のものに修正します。
【apahce1】
【apache2】
4.Dockerホストでindex.htmlを用意します。
apache1サーバに接続した際に表示される文字列を「apache1 server text」としています。
cd /var/tmp/;pwd vi index.html cat index.html
5.Dockerホストのindex.htmlをapache1サーバに転送します。
Dockerホスト上で以下コマンドを実行します。
docker cp index.html apache1:/usr/local/apache2/htdocs/
6.apache1サーバにブラウザでアクセスします。
「apache1 server text」と表示されていればOKです。
※キャッシュが残っている可能性があるため、「Ctrl+F5」で更新してみてください。
7.同じ要領でapache2サーバにもindex.htmlを転送します。
index.htmlは事前に「apache2 server text」と修正しております。
これで、apache1,apache2サーバともにindex.htmlファイルを修正することができました。
以下は補足事項です。
8.apache1 ,2にログインし、コンテナ内部からindex.htmlファイルを確認します。
【apache1】
【apache2】
■docker cp コマンドの書式について
以下の通りです。
※Linux上のcpコマンドと書式自体はあまり変わらないです。
docker cp 送信元 送信先
送信元も送信先も「コンテナ名:パス」という表記が使えます。
※手順5参照
以上です。