gpt4 book ai didi

docker - 在Docker桥上访问服务

转载 作者:行者123 更新时间:2023-12-02 20:06:05 24 4
gpt4 key购买 nike

我使用docker-compose构建由多个Docker容器组成的应用程序。这些容器使用默认网桥进行通信,从而在该专用网络上获取一些IP地址,并在这些IP地址上发布服务。

从容器内部,我可以仅按其名称访问其他容器。

如果我想从主机访问此类服务,则可以简单地访问网桥上的内部IP地址。但是,每个服务的确切IP地址并不明显,并且可能在重新启动后更改。

有没有一种方法可以从主机轻松按名称访问docker服务?

(是的,在localhost上公开一个端口是一种替代方法,但是对于调试而言,直接通过网桥访问服务会更加方便。)

最佳答案

我从未在Docker文档中阅读过此类功能。如您所愿,重新启动容器时,其IP会更改,但其名称与运行时分配的名称相同。

我编写了一个简单的bash脚本,该脚本执行您正在寻找的相同任务

"Is there a way to easily access a docker service by name from the host?"


#!/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

关于docker - 在Docker桥上访问服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49332909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com