Dockerの作成、net:hostでのコンテナーの実行


102

docker-composeを使用して「ホスト」ネットに3つのサービスを生成したいと思います。これが私のdocker-compose.ymlファイルです:

version: '2'
services:
  mysql:
    image: mysql
    net: "host"
  nginx:
    image: nginx
    net: "host"
  app:
    image: tomcat
    net: "host"

次のエラーが発生しました:

$ docker-compose up
[31mERROR[0m: Validation failed in file '.\docker-compose.yml', reason(s):
Unsupported config option for services.app: 'net'
Unsupported config option for services.mysql: 'net'
Unsupported config option for services.nginx: 'net'

Windowsでboot2dockerを使用しています。

Docker、およびDocker-composeバージョン:

$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a

すべてを使用しdocker run --net = "host"てすべてのサービスを手動で実行すると、問題なく動作します。

ドキュメントで、netコマンドがdocker-composeでサポートされていることを読みました:

ネット

ネットワークモード。docker client --netパラメーターと同じ値を使用します。

ネット:「ブリッジ」

ネット:「なし」

net: "コンテナー:[名前またはID]"

ネット:「ホスト」

https://docs.docker.com/v1.6/compose/yml/#net

何が悪いのですか?


@ andy-shinnの回答に基づいて更新しますnetwork_mode: "host"。パラメーターはと呼ばれます。記載されているようにドッキングウィンドウコンバージョン3 #network_mode
ポールルージュ

回答:


103

これらのドキュメントは古くなっています。URLの1.6はDocker 1.6用であり、Compose 1.6ではないと思います。ここで正しい構文を確認してください:https : //docs.docker.com/compose/compose-file/#network_modenetwork_modev2 YAML形式を使用するときに探しています。


それは本当に混乱しています...ドキュメントのリンクをすぐにブックマークします。network_modeは正常に動作しています。
Benoit Wickramarachi 2016年

私が理解したように、私はサービスの下でnetwork_mode: "host"を使用するべきですか?
Taras Vaskiv

27
network_mode: hostMac用の
docker

1
Macで@ FlavienVolken、1つの解決策はホストIPを明示的に使用することです。これを指す特別なホスト名がいくつかあります(docker_host_domainまたはそのようなもの、忘れてしまいます)。
oooyaya

72

印刷するだけ

network_mode: "host"


「network_mode」と「networks」を組み合わせることはできません。あなたがすでにネットワークを持っている場合-それは動作しません。
アレックスEfimov

1
network_mode: hostMac用の
docker

32

追加してみてください

network_mode: "host"

例:

version: '2'
services:
  feedx:
    build: web
    ports:
    - "127.0.0.1:8000:8000"
    network_mode: "host"

リストオプションが利用可能

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

https://docs.docker.com/compose/compose-file/#network_mode


この場合、ポート転送は無視されますか?
toing_toing

3

多分私は非常に遅く答えています。しかし、私はdocker composeでホストネットワークを構成する問題も抱えていました。次に、ドキュメントをよく読み、変更を加えました。この構成はdocker-composeバージョン「3.7」用であることに注意してください。ここで、einwohner_netとelk_net_netは、アプリケーションに必要なユーザー定義のネットワークです。ホストネットを使用して、いくつかのシステムメトリックを取得しています。

ドキュメントへのリンクhttps://docs.docker.com/compose/compose-file/#host-or-none

version: '3.7'
services:
  app:
    image: ramansharma/einwohnertomcat:v0.0.1
    deploy:
      replicas: 1
      ports:
       - '8080:8080'
    volumes:
     - type: bind
       source: /proc
       target: /hostfs/proc
       read_only: true
     - type: bind
       source: /sys/fs/cgroup
       target: /hostfs/sys/fs/cgroup
       read_only: true
     - type: bind
       source: /
       target: /hostfs
       read_only: true
    networks:
     hostnet: {}
    networks:
     - einwohner_net
     - elk_elk_net
networks:
 einwohner_net:
 elk_elk_net:
   external: true
 hostnet:
   external: true
   name: host

2
> docker stackコマンドを使用する場合にのみ使用されます。docker-composeコマンドを使用する場合は、代わりにnetwork_modeを使用してください。
thisismydesign

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.