如何确定主机ubuntu机器docker中容器的IP?

如何确定主机ubuntu机器docker中容器的IP?,docker,docker-compose,ruby-on-rails-4.2,Docker,Docker Compose,Ruby On Rails 4.2,当我执行echo$DOCKER\u 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: buil

当我执行echo$DOCKER\u 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"  
下面是包括主机ubuntu在内的所有3个容器的/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  

我无法访问主机中的web(nginx)容器,如何找到它?

请检查您的
端口
配置,并确保它们已正确绑定。另一个好地方是运行
docker compose up
后查看日志


还要确保您的
.env
文件包含所有必需的环境变量,主要是rails应用程序的
密钥库

请检查您的
端口
配置并确保它们正确绑定。另一个好地方是运行
docker compose up
后查看日志


还要确保您的
.env
文件包含所有必需的环境变量,主要是rails应用程序的
SECRET\u KEY\u BASE

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

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

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

 telnet localhost 80

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

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

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

 telnet localhost 80

docker ps
?它将显示IP和端口。在您的主机上,如果启动容器,则ip将是您机器的ip(因此本地主机将工作)。您可能需要的是端口,
docker ps
将显示Thank for quick response@dwursteisen,但当我使用docker ps时,我的地址为“0.0.0.0:80->80/tcp,443/tcp”。这意味着您的容器公开了端口80和端口443。并且本地计算机的端口80可以访问容器的端口80。因此,您可以尝试
telnet localhost 80
连接到nginxI did netstat-tulpn | grep:80以查看哪个进程正在使用端口80,结果是“tcp6 0:::80::*侦听4300/docker proxy”。这是我的信息。指向右边。当我使用telnet localhost 80时,o/p是“尝试127.0.0.1…连接到localhost。转义字符是“^]”。几分钟后,我得到了“连接被外部主机关闭”。任何想法。这意味着它按预期工作!您已连接到nginx。尝试在
http://localhost
,它将访问您的nginx。如果配置良好,将把您的请求重定向到rails web应用。
docker ps
?它将显示IP和端口。在您的主机上,如果启动容器,则ip将是您机器的ip(因此本地主机将工作)。您可能需要的是端口,
docker ps
将显示Thank for quick response@dwursteisen,但当我使用docker ps时,我的地址为“0.0.0.0:80->80/tcp,443/tcp”。这意味着您的容器公开了端口80和端口443。并且本地计算机的端口80可以访问容器的端口80。因此,您可以尝试
telnet localhost 80
连接到nginxI did netstat-tulpn | grep:80以查看哪个进程正在使用端口80,结果是“tcp6 0:::80::*侦听4300/docker proxy”。这是我的信息。指向右边。当我使用telnet localhost 80时,o/p是“尝试127.0.0.1…连接到localhost。转义字符是“^]”。几分钟后,我得到了“连接被外部主机关闭”。任何想法。这意味着它按预期工作!您已连接到nginx。尝试在
http://localhost
,它将访问您的nginx。如果配置良好,将把您的请求重定向到rails web应用程序。感谢@przbadu提供的信息,问题实际上是没有正确设置$rails_ENV和$SECRET_KEY_BASE环境变量,我已经修复了它们,该应用程序现在处于运行状态。再次非常感谢。感谢@przbadu提供的信息,问题其实是没有正确设置$RAILS_ENV和$SECRET_KEY_BASE环境变量,我已经修复了它们,应用程序现在已经上线。再次非常感谢。很好。谢谢你,伙计,很好。谢谢你,伙计。