docker - 如何使用来自 Docker 主机的主机名连接到 Docker 容器?
问题描述
我想使用主机名从我的 Docker 主机连接到我的 Docker 容器。
我已经知道如何通过映射它们的端口来连接到容器docker run -p <host-port>:<container-port> ...
,然后通过localhost
.
此外,我可以使用由docker inspect <container>
. 但这些 IP 地址不是静态的。
我怎样才能给容器主机名,这样我就可以通过暴露的端口连接到它们,而不必考虑非静态 IP?
解决方案
在其中使用docker-compose
和提供服务。每个容器都将成为服务的一部分,一个容器可以使用该容器所属的服务名称与另一个容器通信。
前任:
$ cat docker-compose.yml
version: '3.1'
services:
server:
image: redis
command: [ "redis-server" ]
client:
image: redis
command: [ "redis-cli", "-h", "server", "ping" ]
links:
- server
$
$
$ docker-compose up
Starting server_1 ... done
Starting client_1 ... done
Attaching to server_1, client_1
client_1 | PONG
server_1 | 1:C 10 Dec 2019 12:59:20.161 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
server_1 | 1:C 10 Dec 2019 12:59:20.161 # Redis version=5.0.6, bits=64, commit=00000000, modified=0, pid=1, just started
server_1 | 1:C 10 Dec 2019 12:59:20.161 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
server_1 | 1:M 10 Dec 2019 12:59:20.162 * Running mode=standalone, port=6379.
server_1 | 1:M 10 Dec 2019 12:59:20.162 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
server_1 | 1:M 10 Dec 2019 12:59:20.162 # Server initialized
server_1 | 1:M 10 Dec 2019 12:59:20.162 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
server_1 | 1:M 10 Dec 2019 12:59:20.162 * Ready to accept connections
client_1 exited with code 0
在这里,我创建了两个服务,server
并且client
. server
启动一个 redis-server 并client
尝试连接到服务器。另外,请注意我没有在这里公开端口,因此client
容器正在server
使用server
(service-name)与容器通信
client:
image: redis
command: [ "redis-cli", "-h", "server", "ping" ]
推荐阅读
- python - python3.7 install on mac not recognized in terminal
- oracle - 将数据插入表单 oracle apex
- java - 错误:无法访问 jarfile auth-api.jar - SpringBoot
- python - 按空格键暂停和恢复python中的循环
- c++ - 只要另一个对象存在,如何使一个对象保持活动状态?
- java - Spring Boot - 使用 TestRestTemplate 在 testi 期间类的空字段
- html - 能
在里面 ? - python - Popen 不将标准输出写入文件
- kubernetes - 在 Kubernetes for mysql 中使用 hostpath 和 glusterfs 挂载目录问题
- flutter - 将变换应用于小部件而不重绘小部件树