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

推薦する

Linuxはnode.jsを完全に削除し、yumコマンドで再インストールします。

最初のステップ組み込みのパッケージ管理機能で一度削除する yum 削除 nodejs npm -y ...

Docker を使用した nextcloud パーソナル ネットワーク ディスクの構築に関するチュートリアル

目次1. はじめに2. 導入環境ツール4. 展開プロセス要約する1. はじめにNextcloud は...

jsネイティブ構文プロトタイプ、__proto__、コンストラクタの徹底的な理解

目次1 はじめに2 前提条件2.1 データ型2.2 それが自身のプロパティであるかどうかを判断する ...

HTML フォーム送信アクションと URL ジャンプアクションの違い

フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...

MySQL インデックスに関するヒントのまとめ

目次1. インデックスの基礎知識1.1 インデックスの利点1.2 インデックスの有用性1.3 インデ...

Node.jsはSTMPプロトコルとEWSプロトコルに基づいてメールを送信します

目次1 STMP プロトコルに基づいてメールを送信する Node.js メソッド2 MS Excha...

MySQL 8.0 のデフォルトのデータディレクトリを変更する (設定なしの簡単な操作)

使用シナリオ: Alibaba Cloud を使用しており、データディスクを別途購入しました (大容...

ミニプログラムの基本的な使用方法の知識ポイント(非常に包括的で、お勧めです!)

目次アプリを登録するときに何をすればよいですか?ページを登録するときに通常何をする必要がありますか?...

React+TypeScriptプロジェクト構築事例解説

React プロジェクトの構築は非常に簡単ですが、Typescript と組み合わせると、実際にはそ...

CSS 要素で計算されたスタイルを取得します (カスケード/最終スタイル後)

CSS 要素内の計算されたスタイル (つまり、カスケード後の最終的なスタイル) を取得するには、W3...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...

Linuxでシンボリックリンクを削除(削除)するコマンド

Linux では、シンボリック リンクを作成または削除する必要がある場合があります。もしそうなら、何...

Centos7 での Mysql5.7.19 の詳細なインストールチュートリアル

1. ダウンロード公式サイトからmysql-5.7.19-linux-glibc2.12-x86_6...

JSはリクエストディスパッチャーを実装する

目次抽象化と再利用シリアルセグメントシリアル、セグメントパラレル要約するはじめに: JS は当然並列...

vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)

導入この章では、主に Linux で FTP サーバーを構築するプロセスを紹介します。習得すべき重要...