1. Dockerをインストールする
インストールが完了したことを示す「完了」メッセージが表示されます。 2. Dockerサービスを開始する サービスdocker開始 3. Dockerの起動を設定する chkconfig docker オン 4. 基本情報ビュー docker バージョン 5. アンインストールする場合、コマンドは次のようになります。 docker run を使用して Docker コンテナを作成する場合、--net オプションを使用してコンテナのネットワーク モードを指定できます。Docker には次の 4 つのネットワーク モードがあります。 --net=host を使用して指定されるホスト モード。 以下ではDockerの各ネットワークモードを紹介します。 1 ホストモード 形式: ご存知のとおり、Docker は、プロセスを分離するための PID 名前空間、ファイル システムを分離するためのマウント名前空間、ネットワークを分離するためのネットワーク名前空間など、Linux の名前空間テクノロジを使用してリソースを分離します。ネットワーク名前空間は、ネットワーク カード、ルーティング、Iptable ルールなど、他のネットワーク名前空間から分離された独立したネットワーク環境を提供します。 Docker コンテナには通常、独立したネットワーク名前空間が割り当てられます。ただし、コンテナの起動時にホスト モードを使用すると、コンテナは独立したネットワーク名前空間を取得せず、ホストとネットワーク名前空間を共有します。コンテナは独自のネットワーク カードを仮想化したり、独自の IP を構成したりはせず、ホストの IP とポートを使用します。 2 コンテナモード 形式: ホストモードを理解すれば、このモードも簡単に理解できます。このモードでは、新しく作成されたコンテナーがネットワーク名前空間をホストと共有するのではなく、既存のコンテナーと共有することを指定します。新しく作成されたコンテナは、独自のネットワーク カードを作成したり、独自の IP を構成したりするのではなく、指定されたコンテナと IP、ポート範囲などを共有します。同様に、ネットワークを除いて、ファイル システムやプロセス リストなど、2 つのコンテナーの他の側面は分離されたままです。 2 つのコンテナのプロセスは、lo ネットワーク カード デバイスを介して通信できます。 3 なしモード 形式: このモードは前の 2 つとは異なります。このモードでは、Docker コンテナには独自のネットワーク名前空間がありますが、Docker コンテナに対してネットワーク構成は実行されません。つまり、この Docker コンテナには、ネットワーク カード、IP、ルーティングなどの情報が含まれていません。 Docker コンテナのネットワーク カードを追加し、IP を構成する必要があります。 4 ブリッジモード ブリッジモードは、Docker のデフォルトのネットワーク設定です。このモードでは、ネットワーク名前空間を割り当て、コンテナごとに IP アドレスなどを設定し、ホスト上の Docker コンテナを仮想ブリッジに接続します。以下ではこのモードに焦点を当てます。 4.1 ブリッジモードトポロジ Docker サーバーを起動すると、ホスト上に docker0 という仮想ブリッジが作成され、このホスト上で起動された Docker コンテナはこの仮想ブリッジに接続されます。仮想ブリッジは物理スイッチと同様に動作し、ホスト上のすべてのコンテナーがスイッチを介してレイヤー 2 ネットワークに接続されます。次のステップはコンテナにIPを割り当てることです。DockerはRFC1918で定義されたプライベートIPセグメントからホストマシンとは異なるIPアドレスとサブネットを選択し、docker0に割り当てます。docker0に接続されたコンテナは、このサブネットから空いているIPを選択します。たとえば、Docker は通常、ネットワーク セグメント 172.17.0.0/16 を使用し、172.17.42.1/16 を docker0 ブリッジに割り当てます (docker0 は、ホスト上で ifconfig コマンドを使用して確認できます。これはブリッジの管理インターフェイスと見なすことができ、ホスト上の仮想ネットワーク カードとして使用されます)。単一マシン環境でのネットワーク トポロジは次のようになり、ホスト アドレスは 10.10.101.105/24 です。 Docker が上記のネットワーク構成を完了するプロセスは、おおよそ次のようになります。 1. ホスト上に仮想ネットワーク カード veth ペア デバイスのペアを作成します。 Veth デバイスは常にペアで表示されます。これらはデータ チャネルを形成します。データは 1 つのデバイスから入力され、別のデバイスから出力されます。したがって、2 つのネットワーク デバイスを接続するために、veth デバイスがよく使用されます。 2. Docker は、veth ペア デバイスの一方の端を新しく作成されたコンテナーに配置し、eth0 という名前を付けます。もう一方の端はホスト内に配置され、veth65f9 のような名前が付けられ、このネットワーク デバイスは docker0 ブリッジに追加され、brctl show コマンドで表示できます。 3. docker0 サブネットからコンテナに IP を割り当て、docker0 IP アドレスをコンテナのデフォルト ゲートウェイとして設定します。 4.2 ブリッジモードでのコンテナ間の通信 ブリッジ モードでは、同じブリッジに接続されたコンテナーは相互に通信できます (セキュリティ上の理由から、DOCKER_OPTS 変数で --icc=false を設定することで、それらの間の通信を禁止することもできます。これにより、--link のみが 2 つのコンテナーの通信を有効にできます)。 このルールは、docker0 ネットワーク カードから送信されていない、送信元アドレスが 172.17.0.0/16 のパケット (つまり、Docker コンテナーから生成されたパケット) の送信元アドレスを、ホスト ネットワーク カードのアドレスに変換します。分かりにくいかも知れませんので、例を挙げて説明しましょう。ホストに eth0 という名前のネットワーク カードがあり、IP アドレスが 10.10.101.105/24、ゲートウェイが 10.10.101.254 であるとします。 IP 172.17.0.1/16 のホスト上のコンテナから Baidu (180.76.3.151) に ping を実行します。 IP パケットはまずコンテナからデフォルト ゲートウェイ docker0 に送信されます。パケットが docker0 に到達した後、ホストにも到達します。次に、ホストのルーティング テーブルが照会され、パケットはホストの eth0 からホストのゲートウェイ 10.10.105.254/24 に送信される必要があることがわかります。その後、パケットは eth0 に転送され、eth0 から送信されます (ホストの ip_forward 転送がオンになっている必要があります)。このとき、上記の Iptable ルールが有効になり、パケットに対して SNAT 変換が実行され、送信元アドレスが eth0 のアドレスに変更されます。このように、外部から見ると、このパケットは 10.10.101.105 から送信されており、Docker コンテナは外部からは見えません。 次に、Iptable ルールの変更を確認し、追加のルールを見つけます。 このルールは、ホスト eth0 が受信した宛先ポート 80 の TCP トラフィックに対して DNAT 変換を実行し、トラフィックを上記で作成した Docker コンテナである 172.17.0.5:80 に送信します。したがって、外部からコンテナ内のサービスにアクセスするには、10.10.101.105:80 にアクセスするだけで済みます。 ユーザー定義モード ユーザーは、Docker ネットワーク ドライバーまたはその他のネットワーク ドライバーを通じてネットワークをカスタマイズできます。複数のコンテナを同じネットワークに接続できます。カスタム ネットワークに接続すると、コンテナは互いの IP アドレスとホスト名を介して相互に通信できるようになります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード
>>: js シンプルで粗雑なパブリッシュとサブスクライブのサンプルコード
ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...
序文最近、職場でこの要件に遭遇し、リモート接続を確立するのに 1 時間以上かかりました。ローカル コ...
WeChat 8.0 アップデートの主な特徴は、アニメーション絵文字のサポートです。送信するメッセー...
目次1. 基礎知識: 2. DHCPサーバーの設定: 1. サーバーのIPを確認する2. DHCP ...
具体的なupgradeスクリプトは次のとおりです。インデックスを動的に削除する アップグレードが存在...
目次1. レシピ集1.1 プロジェクトの背景1.2 テクノロジースタック1.3 開発環境1.4. プ...
1. コンポーネント First.js にはサブコンポーネントがあります。 './Admin...
システム提供のMySQLをアンインストールする1. MySQLがシステムにインストールされているかど...
今日は、Taobao、JD.comなどのショッピングモールでよく使われている、小さな画像の上にマウス...
目次開発環境用のDocker-ceをインストールする開発環境用のDocker-composeをインス...
1. InnoDBストレージエンジンを使用する必要がありますCPU と IO のパフォーマンスが向上...
1: nginx のインストール方法については詳しく説明しません。Baidu で検索してください。 ...
序文この記事は主に、MySQL で浮動小数点型を文字型に変換するときに発生する問題を紹介します。これ...
1. less依存関係をインストールします: npm install less less-loade...
VirtualBox をインストールした後、CentOS 7 をインストールします。ここでは詳細には...