docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

コンテナにネットワークインターフェースを追加する

1 デフォルトのネットワークモードでコンテナを実行する

# docker run --name tst_add_inf -it tst_img /bin/bash

このようにして、ホストマシン上のイメージ tst_img を通じて tst_add_inf という名前のコンテナを作成します。このコンテナは、デフォルトでネットワーク インターフェイス eth0 を作成します。

2 コンテナのPIDを取得する

# docker 検査 -f '{{.State.Pid}}' tst_add_inf

上記で取得したコンテナの PID は、ホスト マシンの名前空間内のコンテナ プロセス 1 のプロセス PID です。

3 コンテナにネットワークインターフェースeth1を追加する

(1)vethピアデバイスのペアを作成する

# ip link add veth0 type veth peer name veth1 

作成後、「ip link list」を通じて新しく作成された 2 つのデバイスを確認できます。

(2)ブリッジにベスエンドを追加する

# brctl addif docker0 veth0
# ip リンク veth0 を設定 

(3)vethのもう一方の端を容器に取り付ける

# ln -s /proc/$pid/ns/net /var/run/netns/$container_id
# ip リンクセット veth1 netns $pid

(4)コンテナの新しく追加されたネットワークインターフェースを構成する

新しいインターフェースの名前を eth1 に変更し、IP アドレスを変更します。

# ip netns exec $pid ip link set dev veth1 name eth1
# ip netns exec $pid lp link eth1 を設定する

コンテナが起動したら、「docker network connect」で実行できますが、これはプロセスがすでに実行されているため、新しいものを見逃す可能性があることを意味します。

この質問は、docker と複数のネットワーク インターフェイスに関する検索です。必要なバージョンではありませんが、ここにいくつかの情報を残しておきます。

Docker 1.12 では、Docker コンテナに複数のネットワーク インターフェイスを追加できますが、まずコンテナを作成し、コンテナを起動する前に 2 番目 (およびそれ以降) のネットワーク NIC を接続する必要があります。

$docker create --network=network1 --name container_name コンテナイメージ:latest
$docker ネットワーク接続 ネットワーク2 コンテナ名
$docker start コンテナ名

まずネットワークを作成する必要があります:

$docker ネットワーク作成 --driver=bridge ネットワーク1 --subnet=172.19.0.0/24
$docker ネットワーク作成 --driver=bridge ネットワーク2 --subnet=172.19.1.0/24

さらに、docker run で --network=host パラメータを使用して、Dockerhost ネットワーク インターフェースでコンテナを起動することもできます。

$docker run --net=ホスト コンテナイメージ:最新

翻訳元: http://stackoverflow.com/questions/34110416/start-container-with-multiple-network-interfaces

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerコンテナのセルフスタートを実装する方法
  • Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例
  • Docker 実践: 新しいイメージからコンテナを起動するときのエラー解決
  • Dockerコンテナの起動後にポートマッピングを追加する
  • Docker コンテナで Flume を実行し、実行ログを出力せずに起動する
  • Docker 学習ノート: コンテナの表示、起動、終了、削除の方法
  • Dockerでスタートアップコンテナに入る方法
  • Docker イメージを作成してコンテナを起動する 2 つの方法の違い (要約)
  • DockerはDockerfileを使用して、sshサービスの自動起動をサポートするコンテナイメージを作成します。

<<:  VueでJSXを使用する方法

>>:  MySql ログイン パスワードを忘れた場合とパスワードを忘れた場合の解決策

推薦する

Nginx での SSL 証明書のインストールと展開手順の概要

目次問題の説明:インストール手順1. 準備2. サーバーにリモート接続する3. 証明書と秘密鍵ファイ...

React コンポーネントのコンストラクタとスーパーの知識ポイントのまとめ

1. Reactでクラス宣言する際のヒント 上記のように、Child クラスは class キーワー...

IE6 での背景画像キャッシュ

IE6 での CSS 背景画像のちらつきバグ (IE6 の背景画像キャッシュの問題) IE6 は、背...

Ubuntu 18.04 Linux システムに JDK と Mysql をインストールする方法

プラットフォームの展開1. JDKをインストールするステップ1. OracleJDKをダウンロードす...

Linux ncコマンドの概要

NC のフルネームは Netcat (Network Knife) で、作成者は Hobbit &a...

64 ビット CentOs7 ソース コードのインストール mysql-5.6.35 プロセス共有

インストールプロセス中に問題が発生しないように、まず依存パッケージをインストールします。 [root...

Windows Server 2012 リモート デスクトップ ライセンス サーバーがライセンスを提供できず、リモート セッションが切断される

本日、会社の内部サーバーにログインしたところ、リモートアクセスができませんでした。エラー メッセージ...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

Centos6にMysql5.7をインストールする方法

環境セントロス6.6 MySQL 5.7インストールシステムがインストールされている場合は、まずアン...

Dockerコンテナが外部ネットワークにpingできない問題を解決する

今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...

MySQL のグループ分けの例

mysql のような php switch case ステートメント。 xxフィールドを選択、ケース...

Vue は Tencent Map を統合して API を実装します (デモ付き)

目次執筆の背景プロジェクトの説明事前準備注記執筆の背景以前のプロジェクトではTencent Maps...

Linux コマンドラインで他のユーザーと通信する方法

Linux のコマンドラインで他のユーザーにメッセージを送信するのは簡単です。これを行うコマンドは多...

MySQL に配列を保存するサンプルコードと方法

多くの場合、ストアド プロシージャを作成するときに配列がよく使用されますが、MySQL ではストアド...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...