【发布时间】:2015-07-05 02:13:24
【问题描述】:
是否可以从 docker 中获取主机信息,例如
- HOST 机器的 IP(eth0 的 IP 不是 docker0 的)
- 主机中的可用 RAM
等等,
提前致谢
【问题讨论】:
标签: docker
是否可以从 docker 中获取主机信息,例如
等等,
提前致谢
【问题讨论】:
标签: docker
这通常是不可能的——它会破坏 Docker 提供的隔离。
在这篇文章中,你可以看到,任何从 Docker 容器中突破实际上都是一个严重的安全问题。
https://blog.docker.com/2014/06/docker-container-breakout-proof-of-concept-exploit/
但是,有多种解决方法:
http://blog.michaelhamrah.com/2014/06/accessing-the-docker-host-server-within-a-container/
建议采用以下方法:
“虽然没有办法检查主机的 IP 地址 (AFAIK),但你可以通过环境变量传递它:”
docker@boot2docker:~$ docker run -i -t -e DOCKER_HOST=192.168.59.103 ubuntu /bin/bash
root@07561b0607f4:/# env
HOSTNAME=07561b0607f4
DOCKER_HOST=192.168.59.103
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
具体来说,在 EC2 上,您可以访问实例的元数据:
见
Fetching AWS instance metadata from within Docker container?
特别是:
$ curl http://169.254.169.254/latest/meta-data/hostname
ec2-203-0-113-25.compute-1.amazonaws.com
此处列出了其他元数据选项:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
【讨论】:
docker run -it -p 9200:9200 -p 9300:9300 -e HOST_IP=$(hostname --ip-address) shan/elk:latest我的用例是,我在docker中运行elasticsearch,我需要将主机的IP传递给elasticsearch中的network.publish_host:参数不传递HOST_IP,自动发现不起作用非常感谢Donald。
curl http://169.254.169.254/latest/meta-data/local-ipv4 获取实例 IP。