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

推薦する

ファイル共有サーバーを構築するための samba + OPENldap の詳細な説明

ここでは、samba (ファイル共有サービス) v4.9.1 + OPENldap (バックエンド ...

JDBC を MySQL 5.7 に接続する方法

1. まずMySQLとEclipseの環境を準備します。環境がセットアップされたら、Eclipseの...

CSSを使用して円形の波効果を実現する

モバイル デバイスでは、金額を表示するために円形の波グラフィックがよく使用されます。最初は、この効果...

Puppeteer を使用して Linux (CentOS) で Web ページのスクリーンショット機能を実装する

Linux に puppeteer をインストールするときに、次の問題が発生する可能性があります。こ...

MySQLの文字セットを変更する方法

1. MySQLの文字セットを確認する '%char%' のような変数を表示します。...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

Nuxt.jsプロジェクトのDockerデプロイメントの実装

Docker 公式ドキュメント: https://docs.docker.com/ Docker は...

コンパイル、インストールから設定ファイルの説明まで、中国語でnginxの詳細な説明

この記事では、コンパイルとインストールから設定ファイルの説明まで、Nginx について詳しく紹介しま...

IDEA の Maven プロジェクトで MySQL 8.0 に接続して使用する方法に関するチュートリアル

まず、私の基本的な開発環境を見てみましょう。オペレーティングシステム: MacOS 10.13.5 ...

nginxのリソースキャッシュ設定の詳細な説明

私はずっとキャッシュについて学びたいと思っていました。結局のところ、キャッシュはフロントエンドのパフ...

vue.js パッケージ化プロジェクトの後の空白ページの解決策

Vueに触れたばかりのパートナーの多くは、開発環境ではVueプロジェクトは正常であるが、パッケージ化...

MySQLクエリ速度が遅く、パフォーマンスが低下する原因と解決策

1. データベースクエリの速度に影響を与えるものは何ですか? 1.1 データベースクエリ速度に影響を...

Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...