はじめに
一般的に、Dockerコンテナは特定の期間 – コマンドの実行にかかる時間だけ実行されます。コンテナ内で利用可能なデータは、実行中のみコンテナ内からアクセスできます。
Dockerボリュームを使用すると、ファイルに簡単にアクセスし、より長期間保存することができます。例えば、Nginxウェブサーバーがあり、監査のためにログを保存したい場合、Dockerボリュームを使用してコンテナからのログをホストマシンに保存できます。
このチュートリアルでは、Dockerコンテナの内部とホストマシンの間でデータを共有する方法を学びます。
前提条件
このチュートリアルでは、以下の前提条件が必要です。
- Ubuntu 18.04サーバー:簡単に役立つチュートリアルに従って、Ubuntu 18.04イメージを使用して新しいCloudSigmaサーバーを作成できます.
- Docker – UbuntuにDockerをセットアップする方法に関するチュートリアルを使用してDockerをインストールし、慣れ親しむことができます。
ステップ 1 – ボリュームのバインドマウント
次のコマンドを使用して、現在のユーザーのホームディレクトリにlogsという名前のディレクトリを作成し、それをNginxコンテナの/var/log/nginxにバインドマウントできます:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
このコマンドの詳細情報は以下の通りです:
--name=nginxは、参照しやすくするためにコンテナに名前を付けます。-d引数はプロセスをデタッチし、バックグラウンドで実行します。-v hostPath:containerPathは、ホストのパスとコンテナのパスをマッピングしてマウントをバインドします。-p hostPort:containerPort引数は、コンテナのポートをホストのポートにマッピングします。nginx行の最後にあるのは、コンテナを起動するために使用するイメージの名前です。
ステップ 2 – ホスト上のデータへのアクセス
これで、サーバー上でNginxコンテナが実行され、サーバーのポート5000がNginxのポート80にマッピングされました。次のURLを使用して、ウェブブラウザでポートを開くことができます:
|
1 |
http://serverIP:5000/ |

In the ~/logs directory, you will see access.log and error.log files. You can see the logs by using the cat command:
|
1 |
cat access.log |
|
1 2 3 |
Output: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
ホストマシンのログディレクトリ~/logsを確認して、Nginxのログファイルを見つけることもできます。さらに、logsフォルダに変更を加えると、それらはコンテナの/var/log/nginxフォルダにも反映されます。
まとめ
このチュートリアルでは、Dockerコンテナの内部とホストマシンの間でデータを共有する方法を学びました。これは、デバッグのためにログの分析が不可欠な開発環境において重要です。
Dockerに関するその他のリソースについては、当社のブログで以下を確認できます:
- パブリッククラウド上のUbuntuにDockerをインストール&操作する方法
- CentOS 7へのDockerのインストールとセットアップ
- Dockerリソースのクリーンアップ – イメージ、コンテナ、ボリューム
- CloudSigmaでDockerを実行する方法(CloudInitを使用)更新版
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。