我想这样做,以便我启动的docker容器使用与/etc/hosts我运行的主机上相同的设置.有没有办法做到这一点?
我知道--add-hostdocker run 有一个选项,但这并不是我想要的,因为主机的/etc/hosts文件在不同的机器上可能会有所不同,因此对我来说硬编码确切的IP /主机并不好--add-host.
d3m*_*ing 62
使用--network=host在泊坞窗运行命令.这告诉Docker使容器使用主机的网络堆栈.您可以在此处了解更多信息:https://docs.docker.com/engine/userguide/networking/
PRI*_*LOP 16
您还可以通过以下命令将 dnsmasq 安装到主机:
sudo apt-get install dnsmasq
Run Code Online (Sandbox Code Playgroud)
然后您需要添加文件/etc/docker/daemon.json内容:
{
"dns": ["host_ip_address", "8.8.8.8"],
}
Run Code Online (Sandbox Code Playgroud)
其中host_ip_address是启动 dnsmasq 的主机地址(例如 localhost)。
之后需要通过命令重启Docker服务sudo service docker restart
此选项强制对每个 Docker 容器使用主机 DNS 选项。或者您可以将其用于单个容器,并且此链接解释了命令行选项。还支持 docker-compose 选项(您可以通过此链接了解它)。
Vin*_*esh 14
添加标准主机文件 -
docker run -it ubuntu cat /etc/hosts
Run Code Online (Sandbox Code Playgroud)
添加服务器'foo'的映射 -
docker run -it --add-host foo:10.0.0.3 ubuntu cat /etc/hosts
Run Code Online (Sandbox Code Playgroud)
添加多个服务器的映射
docker run -it --add-host foo:10.0.0.3 --add-host bar:10.7.3.21 ubuntu cat /etc/hosts
Run Code Online (Sandbox Code Playgroud)
参考 - http://jasani.org/2014/11/19/docker-now-supports-adding-host-mappings/
120*_*DEV 14
extra_hosts(在 docker-compose.yml 中)
https://docs.docker.com/compose/compose-file/
添加主机名映射。使用与 docker 客户端 --add-host 参数相同的值。
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
Run Code Online (Sandbox Code Playgroud)
将其添加到您的运行命令中:
-v /etc/hosts:/etc/hosts
Run Code Online (Sandbox Code Playgroud)
如果使用docker-compose.yml,则相应的属性为:
services:
xxx:
network_mode: "host"
Run Code Online (Sandbox Code Playgroud)
如果受信任的用户启动您的容器,您可以使用 shell 函数轻松“复制”/etc/hosts您需要的条目:
add_host_opt() { awk "/\\<${1}\\>/ {print \"--add-host $1:\" \$1}" /etc/hosts; }
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
docker run $(add_host_opt host.name) ubuntu cat /etc/hosts
Run Code Online (Sandbox Code Playgroud)
这样您就不必对 IP 地址进行硬编码。
| 归档时间: |
|
| 查看次数: |
54315 次 |
| 最近记录: |