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

推薦する

Sublime / vscode による HTML コード生成の迅速な実装

目次基本的なHTML構造div とクラス名のショートカット キーを生成するクラス名を持つdiv ID...

CSS はこのように使用できますか?気まぐれなグラデーションの芸術

前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...

MySQLからElasticsearchにデータを同期する方法の詳細な説明

目次1. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...

Vue ルーターにパラメータを渡すときにページを更新するとパラメータが失われる問題に対処する方法

目次概要方法1: params経由でパラメータを渡す方法2: クエリを通じてパラメータを渡す方法3:...

MySQL の group by と having の詳細な説明

GROUP BY 構文を使用すると、指定されたデータ列の各メンバーに従ってクエリ結果をグループ化して...

MySQL の sql_mode モード例の詳細な説明

この記事では、MySQL の sql_mode モードについて例を挙げて説明します。ご参考までに、詳...

line-height=height要素の高さだがテキストが垂直方向に中央揃えされない問題を解決する

まず、行の高さが要素の高さと等しい場合にテキストが垂直方向に中央揃えにならない理由を説明します。実際...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

MySQL の NULL と空の文字列

最近、MySQL に触れました。昨日、テーブル構造情報を格納するための新しいテーブルを作成しました。...

ショッピングカートの計算を実現する js メソッド

この記事の例では、ショッピングカートの計算を実装するためのjsの具体的なコードを参考までに共有してい...

フォーム入力ボックスに関するWebデザインのヒント

この記事では、Web デザインにおけるフォーム入力ボックスに関するヒントとコードをいくつか紹介します...

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順最初のステップは、ページのインポートボタンをクリックしてExcel...

CentOS 8 VMware 仮想マシンがインターネットにアクセスするための静的 IP ネットワーク カードの設定の詳細な説明

最初のステップ: VMwareで、「編集」-「仮想ネットワークエディタ」をクリックします。下図に示す...

MySQL の自動増分主キーに関する詳細な説明

目次特徴保存戦略自己増加の決定自動増分値の変更実行プロセス問題点自動増分ロックロック戦略バッチ挿入の...

win10 で mysql8.0.23 をインストールし、「サービスが制御機能に応答しません」という問題を解決する方法

Windows10にmysqlをインストールする1. 公式サイトからMySQLをダウンロードするウェ...