web-dev-qa-db-ja.com

仮想化Ubuntuサーバー上のDockerコンテナーへの接続に関する質問

私はWebデザイナーとして、VirtualBoxを使用してプロジェクト用の一時作業サーバーをセットアップしています。最近、ラップトップ上の仮想マシンの数を減らすように努めています(SSD容量の制限のため)、Dockerの学習と使用は、システムストレージ、完成した作業の展開、およびスキルセットの将来の保証の点で有益であると考えました。これまでは、NATに加えてホストのみのアダプターを使用して、ホスト(通常はWindows)から仮想マシンのAPMサーバーに接続しています)を使用しています。

以下は、私が通常使用する/ etc/network/interfaces設定です。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# VBOX Host-only adapter
auto eth1
iface eth1 inet static
  network    192.168.56.0
  address    192.168.56.80
  netmask    255.255.255.0

ホストオンリーアダプターにより多くのIPを割り当てるIPエイリアスについて考えています(192.168.56.81, 192.168.56.82...)そして、それぞれを私のコンテナーのそれぞれにルーティングします。コンテナーはそれぞれ、私のプロジェクトの1つを実行します。 Dockerが独自のネットワークインターフェースdocker0、VirtualBoxホストマシンからアクセスできません。私が言えることから、私はいくつかの可能なアプローチを持っています:

  1. ホストからホストオンリーアダプターへの接続をdocker0インターフェイスにルーティングする
  2. どういうわけか、ホストマシンからdocker0インターフェイスに接続する方法を見つける、または
  3. どういうわけか、コンテナーをホスト専用インターフェースに接続する方法を見つける

これらのアプローチのどれが私にとって最も実行可能な方法であるか知りたいです。
質問が十分に明確かどうかはわかりません。この質問に答えるために、さらに情報を提供する必要があるかどうかをお知らせください。

1
K.H.

私の意見では、あなたの使用法については、Dockerネットワーキングの狂気を掘り下げる必要はないはずです。

コンテナーを実行するときにポートマッピングを使用することをお勧めします。

たとえば、Dockerfileを使用してdockerにApacheイメージを作成したとします。このコンテナーを実行する場合は、-pオプションを使用してポートをマップします。

Sudo docker run -d -p=80:80 -p=443:443 -P Apache:latest

これにより、ローカルポート80がこのコンテナのポート80にマップされます。

したがって、ブラウザで http://127.0.0.1 にアクセスすると、コンテナにアクセスできます。

ポート80がすでにローカルで使用されている場合は、たとえばポート8080:-p 8080:80を使用して、 http://127.0.0.1:808 にアクセスできます。

複数のプロジェクトがある場合は、複数のポートを使用するか、Apacheコンテナー内で仮想ホストを使用して、ホストの/etc/hostsでdnsエイリアスを使用できます。

0
aklmie