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 ログイン パスワードを忘れた場合とパスワードを忘れた場合の解決策

推薦する

Oracle Rownum 書き込みに似た MySQL の詳細な例

Rownum は、Oracle での独自の書き込み方法です。Oracle では、rownum を使用...

Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

債券とは何かNIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1...

Linux スワップ パーティション (詳細説明)

目次リナックス1. SWAPとは2. swappiness は何を調節しますか? 3. スワップ操作...

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...

インデックススキャンを使用したMySQLソート

目次sakilaをインストールするインデックススキャンソートテーブル構造インデックススキャンをソート...

背景画像の配置におけるbackground-position属性の自己理解

最近、プロジェクトではラベルやボタンなどの断片的な画像をたくさん使用する必要があります。また、CSS...

Linux ipcsコマンドの使用

1. コマンドの紹介ipcs コマンドは、Linux のプロセス間通信機能の状態を報告するために使用...

node.jsのコアモジュールとは

目次グローバルオブジェクトグローバルオブジェクトとグローバル変数プロセスコンソール一般的なツールユー...

WeChatアプレットの手動および自動追跡の実装の詳細説明(Taro)

どの企業もユーザーベースを拡大したいのであれば、ユーザーの操作データを収集・分析する必要があり、その...

border-radius 値の設定に関する質問

問題記録今日はプログレスバーに似た小さなコンポーネントを完成させるつもりでした。プロトタイプは次のよ...

axiosリクエストをvueでカプセル化する方法

実際、Vueでaxiosをカプセル化するのは非常に簡単ですまず、srcパスにhttpフォルダを作成し...

vue-cli 3 で vue-bootstrap-datetimepicker 日付プラグインを使用する方法

需要背景最近、Vue を使用してフロントエンド エンジニアリング システムと組み合わせ、以前のデモを...

JavaScript を使用してページに動的な検証コードを実装する例

導入:現在、プログラム攻撃を防ぐために、ユーザーがログインまたは登録するときに多くの動的検証テクノロ...

Vueでjsonpを使用する方法

目次1. はじめに2. インストール3. 使用4. vueファイルの使用1. はじめに最近、手書き入...

mysqlは複数の主キーを設定する操作を実装します

ユーザーテーブル、ID番号は一意である必要があります、携帯電話番号、電子メールアドレスは一意である必...