【初心者向け】実際に動かしながらDockerを学ぶ〜後編〜2019-02-24【初心者向け】実際に動かしながらDockerを学ぶ〜後編〜Dockerこんにちは。takapy(@takapy0210)です。よるマウント(推奨)tmpfsを使用したデータ管理コンテナにマウントしてみる最後にはじめに本記事は下記記事の続編です。www.takapy.workwww.takapy.work本記事では、Dockerのネットワーク、Dockerのデータ管理などについてまとめてみようと思います。Dockerのネットワーク準備として、docker-machineでDockerホストを1台起動させておきます。networkコマンドで確認できます。デフォルトでは下記3つのネットワークが構成されています。localブリッジネットワーク単一のDockerホスト内で構築されるネットワークです。比較的小規模なネットワークを構成する際によく用いられます。コンテナ起動時にデフォルトで設定されるのもこのブリッジネットワークです。ブリッジネットワークの詳細情報を確認してみます。]~~~上記から、コンテナに割り当てられているIP帯域は172.17.0.0/16だということが分かります。ブリッジネットワークに接続されたコンテナは、このIP帯が割り当てられます。今回のnw-vm1にはデフォルトゲートウェイとして172.17.0.1が割り当てられていることが分かります。試しにalpineLinuxのコンテナを2つ起動し、そこからpingで通信できるか確認してみます。/bin/shこれで、alpine1のコンテナがブリッジネットワークに接続されます。}~~~このalpineコンテナには172.17.0.2/16のIPアドレスが割り当てられてることが分かります。2つ目のコンテナを起動します。alpine1コンテナにattachして、alpine2→alpine1にpingを飛ばしてみます。msalpine1と通信できていることが確認できました。今度はコンテナ名でpingを飛ばしてみます。'alpine1'上記のように、DNSが存在しないため名前解決はできません。名前解決させたい場合に必要なのがユーザ定義のブリッジネットワークです。Ctrl+Q」でコンテナを停止させることなくシェルを抜けて、Dockerホストに切り替えておきましょう。ネットワーク名で作成できます。localここで作成したブリッジネットワークに、alpine1とalpine2のコンテナを接続してみます。alpine2上記以外にも、例えば最初からmy_nwに接続した状態でコンテナを起動することもできます。ネットワークオプションを追加します。alpinemy_nwにどのようなコンテナが紐づいているか確認してみます。}~~~作成したalpine1〜alpine3のコンテナが接続されていることが確認できます。コンテナ名で通信できるか確認してみます。ms無事できました!!最後にコンテナをネットワークから切断してみます。現在alpine2が接続されているネットワークはbridgeとmy_nwの2つです。}~~~ここからbridgeネットワークを切断させるには、disconnectを使用します。alpine2Dockerのデータ管理コンテナで扱う動的なデータは、起動中のコンテナの読み書き可能なレイヤーに置くこともできますが、下記のようなデメリットがあります。コンテナ間でデータ共有できない書き込みのパフォーマンスがよくないコンテナが破棄されたタイミングでデータも破棄されてしまう。そこでコンテナでは、下記のようなホスト上のディレクトリをマウントしてデータ管理する手法が一般的となっています。volumeを使用したデータ管理volumeを利用したマウントは、同一のディレクトリやファイルを複数コンテナにマウントすることができたり、コンテナが破棄されてもデータが破棄されることはありません。(明示的に破棄することもできます)volumeを使用するとホスト上のDockerエリアにディレクトリが生成されますが、ホスト上でこれらのファイルを編集したり移動したりすることは推奨されておらず、あくまでコンテナ上でファイルを管理するための機能して提供されています。mountを使用したデータ管理volumeとの違いとしては、ユーザの管理しているファイルやディレクトリをコンテナにマウントできるという点です。こちらも同一のディレクトリやファイルを複数のコンテナにマウントすることができます。基本的には、マウント元のファイルやディレクトリは事前に用意しておき、そのパスを指定してコンテナにマウントします。プロジェクトのソースコードや設定ファイルをマウントしておくことにより、ホスト上で開発しながらその動作をコンテナで確認することができます。mountを使用したデータ管理tmpfsを使用したデータ管理ホストのメモリ領域をファイルシステムとしてコンテナにマウントします。コンテナが停止した場合にはデータも合わせて破棄されてしまいます。用途としては、永続的なデータではなく一時的に保持したいデータを置く場所に使ったりします。(キャッシュやワンタイムパスワード)volumeを使用したデータ管理volumeの作成docker-machineで仮想環境を作成して、その中で確認していきます。ボリューム名で行えます。lsコマンドで確認できます。