如何确定主机 ubuntu 机器 docker 中容器的 IP?
How to determine IP for containers in host ubuntu machine docker?
当我执行 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 个容器的 /etc/hosts 文件的内容,包括主机 ubuntu:
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) 容器,如何找到它?
请检查您的 port
配置并确保它们正确绑定。还有一个不错的地方就是看运行 docker-compose up
.
之后的日志
还要确保您的 .env
文件包含所有必需的环境变量,主要是 SECRET_KEY_BASE
用于 rails 应用。
要知道哪个 IP/port 是 运行 您的容器,您可以使用命令 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端口。这意味着您可以通过您机器的 80 端口访问您的容器,例如使用 telnet 命令:
telnet localhost 80
当我执行 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 个容器的 /etc/hosts 文件的内容,包括主机 ubuntu:
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) 容器,如何找到它?
请检查您的 port
配置并确保它们正确绑定。还有一个不错的地方就是看运行 docker-compose up
.
还要确保您的 .env
文件包含所有必需的环境变量,主要是 SECRET_KEY_BASE
用于 rails 应用。
要知道哪个 IP/port 是 运行 您的容器,您可以使用命令 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端口。这意味着您可以通过您机器的 80 端口访问您的容器,例如使用 telnet 命令:
telnet localhost 80