我使用docker-compose
构建一个由多个docker容器组成的应用程序。这些容器使用默认网桥进行通信,在该专用网络上获取一些IP地址,并在那些IP地址上发布服务。
在容器内,我只需按名称访问其他容器。
如果我想从主机访问此类服务,则可以简单地访问网桥上的内部IP地址。但是,每个服务的确切IP地址并不明显,重启后可能会发生变化。
有没有办法通过主机名称轻松访问docker服务?
(是的,在localhost上公开一个端口是一种替代方案,但是对于调试来说,直接通过网桥访问服务会更方便。)
答案 0 :(得分:0)
我从未在docker文档中阅读此类功能。正如您在重新启动容器时所做的那样,其IP更改但其名称与在运行时分配的名称相同。
我写了一个简单的bash脚本,它执行你正在寻找的相同任务
“有没有办法通过名称轻松访问泊坞窗服务 主机?“
#!/bin/bash
# suppose these are your container name test , test1 etc mention all the name in this array
declare -a container_list=('test' 'test1')
for container_name in ${container_list[@]}
do
# getting container ip by container name
container_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_name)
#UPDATE
# delete old entry
sed -i "/$container_ip $container_name/d" /etc/hosts
#adding them in hosts etc/hosts file so now test will be accesible from host with out exposing any port
sed -i "1s/^/$container_ip $container_name\n/" /etc/hosts
done