对于基本ubuntu:12.04,尽管ifconfig命令可用,但容器中不存在ip,为什么呢?以及如何在容器中获取ifconfig

评论

请参阅Linux网络-“ ip X”而不是ifconfig / route / etc?并且我应该使用Ifconfig退出吗?

我知道ifconfig已经过时了,但是有些程序仍然依赖它。

开发人员还活着吗?几年前已弃用。

在当前版本的软件中使用ip时存在错误。我需要快速解决此问题。

“某些程序”和“有错误”:您能具体一点吗?

#1 楼

您可以使用apt-get install net-tools安装ifconfig。 (具体来说,通过在您的Dockerfile中添加RUN apt-get install -y net-tools。)

根据我的测试,ubuntu:14.04中包含了ifconfig。

评论


仍然让我想知道为什么默认情况下不包括它,但是我想这个容器的要点是它尽可能的小并且仍然可以工作。

–鬣蜥
16年2月4日在16:27

另一个附录-在Ubuntu容器的新实例上,也不填充软件包列表,因此,如果还没有,则必须运行sudo apt-get update。

–鬣蜥
16年5月5日在8:25

ifconfig不包含在ubuntu:16:04中。

–JamesThomasMoon1979
16年7月15日在23:09



回答@Iguananaut:Ubuntu VM为500+ MB,而Ubuntu Docker映像小于100MB。创建容器映像的人需要划定一条线,确定应包含哪些软件包/二进制文件,不包括哪些软件包/二进制文件,以便仅保留基本必需品。您知道,如果您将容器视为进程,而不是“在内部和周围玩耍的隔离计算环境”,那么所有这些都更有意义。

– Rushi Agrawal
16年7月21日在8:50

我喜欢你开心的头像。 \ o /

– NYCeyes
20-4-7在20:05



#2 楼

除非并且直到您可以安装net-tools,否则默认情况下无需提供它。另外,如果您想查看IP地址,则docker本身可以使用另一个命令:-

docker inspect <container_name or container_id>


docker inspect语法:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

此cmd将向您显示正在运行的容器的每个详细信息,包括IP地址。

#3 楼

我也无意中发现了这种麻烦,但是正如Devendra在docker inspect中写的那样,您无需net-tools就可以获取有关容器的所有详细信息。
对于我来说,我需要容器的IP。
要提取IP,您可以使用:

docker inspect <container-id> \
  | grep "\"IPAddress\"" -m 1 \
  | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'


编辑更短的表示法以获取容器的IP(请参阅docker inspect示例):

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>


评论


但是,这将无法按照OP的要求在容器内运行。

–杰拉德·施耐德(Gerald Schneider)
17年6月22日在7:53

你是对的。似乎是一个有用的技巧,我认为OP最有可能也在寻找容器的IP。

–服从
17年6月22日在19:58