如何确定在主机Ubuntu的机器docker容器的IP?

当我做echo $DOCKER_HOST ,我得到空白的数据。

我有3个容器开始运行,下面的组成文件:

 db: image: mongo:latest volumes: - air_scout-mongodb:/data/db app: build: . env_file: .env environment: RAILS_ENV: $RAILS_ENV links: - db expose: - "3000" web: build: . dockerfile: config/containers/Dockerfile-nginx links: - app ports: - "80:80" 

下面是所有3个容器(包括主机ubuntu)的/ etc / hosts文件的内容:

 host /etc/hosts content 127.0.0.1 localhost 127.0.1.1 bajratech-codemilan-pc 192.168.99.100 air_scout.docker # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters web container nginx /etc/hosts contents. // container id = 04f4b2a137db 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 airscout_app_1 50a8bbe3d0f9 172.17.0.3 app 50a8bbe3d0f9 airscout_app_1 172.17.0.3 app_1 50a8bbe3d0f9 airscout_app_1 172.17.0.4 04f4b2a137db app container unicorn /etc/hosts contents. // container id = 50a8bbe3d0f9 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 airscout_db_1 4743428b65c4 172.17.0.2 db 4743428b65c4 airscout_db_1 172.17.0.2 db_1 4743428b65c4 airscout_db_1 172.17.0.3 50a8bbe3d0f9 db container mongodb /etc/hosts contents. // container id = 4743428b65c4 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 4743428b65c4 

我无法访问我的主机中的networking(nginx)容器,我怎样才能find它?

请检查您的portconfiguration,并确保它们正确绑定。 另一个好地方是在运行docker-compose up之后查看日志。

还要确保你的.env文件包含所有必需的环境variables,主要是rails应用程序的SECRET_KEY_BASE

要知道哪个IP /端口正在运行你的容器,你可以使用命令docker ps

docker ps将显示哪个容器正在运行,以及每个容器使用和导出哪个端口。 (见端口栏)

  $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4c01db0b339c nginx bash 17 seconds ago Up 16 seconds 0.0.0.0:80->80/tcp, 443/tcp nginx1 

在这个例子中,容器的端口80被映射到你机器的端口80。 这意味着您可以使用telnet命令通过您的机器的端口80访问您的容器,例如:

  telnet localhost 80