如何在我的 ubuntu docker 映像中安装“ifconfig”命令? [复制]
Posted
技术标签:
【中文标题】如何在我的 ubuntu docker 映像中安装“ifconfig”命令? [复制]【英文标题】:How to install "ifconfig" command in my ubuntu docker image? [duplicate] 【发布时间】:2017-08-09 17:57:13 【问题描述】:我刚刚安装了ubuntu docker镜像,当我执行“ifconfig”时它说没有这样的命令,我尝试了apt-get install,因为没有名为“ifconfig”的包(我可以安装一些其他的镜像)。
那么怎么做呢? 谢谢。
【问题讨论】:
serverfault.com/a/614972 - 在你的 Dockerfile 中RUN apt-get install -y net-tools
iproute2 是替代 net-tools(ifconfig、route、arp 等)的 Linux 网络工具包,参见 baturin.org/docs/iproute2 和 lwn.net/Articles/710533
Can I ask questions about installation in SO? 关于程序员常用的软件工具的问题必须是软件开发特有的实用、可回答的问题。
【参考方案1】:
在一个新的 ubuntu docker 镜像上,运行
apt-get update
apt-get install net-tools
这些可以通过登录到 docker 容器来执行,或者将其添加到您的 dockerfile 以使用相同的方式构建映像。
【讨论】:
net-tools 现已过时......它的替代品:iproute2 是替代 net-tools(ifconfig、route、arp 等)的 Linux 网络工具包,请参阅 baturin.org/docs/iproute2 和 lwn.net/Articles/710533 不能这样做,因为容器上没有安装 apt。 @ScottStenslandiproute2
在基于 Debian 的 Docker 映像(mysql 5.7)上对我不起作用。 net-tools
做到了。 ?♂️【参考方案2】:
您也可以考虑:
RUN apt-get update && apt-get install -y iputils-ping
(作为Contangocomments:您必须先运行apt-get update
,以避免缺少存储库的错误)。
见“Replacing ifconfig with ip”
通常建议使用已替换
ifconfig
的命令继续前进。该命令是ip
,它可以很好地介入过时的ifconfig
。
但如“Getting a Docker container's IP address from the host”中所示,根据您的用例,使用docker inspect
可能更有用。
【讨论】:
必须先运行apt-get update
(以避免缺少存储库的错误)。
@Contango 谢谢。我已将您的评论包含在答案中以提高知名度。
RUN apt-get update && apt-get install -y iputils-ping
not ip-utils-ping
至少对我来说是这样的。
@Chase 谢谢。我已经相应地编辑了答案。【参考方案3】:
请使用以下命令获取正在运行的容器的 IP 地址。
$ ip addr
示例-:
root@4c712d05922b:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
247: eth0@if248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.6/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:6/64 scope link
valid_lft forever preferred_lft forever
【讨论】:
它在 Ubuntu docker 镜像 747cb2d60bbe 中不起作用。ifconfig
也不行。【参考方案4】:
从 Dockerfile 中类似以下内容应该可以解决问题:
RUN apt-get update && \
apt-get install -y net-tools
根据记忆,最好将更新和包安装行结合起来,以防止 docker 缓存更新步骤,这可能导致安装过时的包。
通过 CLI 或 shell 脚本安装它:
apt-get update && apt-get install net-tools
【讨论】:
【参考方案5】:我来这里是因为我试图在容器上使用 ifconfig 来查找它的 IPAaddress,但没有 ifconfig。如果您确实需要容器上的 ifconfig ,请使用上面的@vishnu-narayanan 答案,但是您可以通过在主机上使用 docker inspect 获得所需的信息:
docker inspect <containerid>
输出中有很多好东西,包括容器的 IPAddress:
"Networks":
"bridge":
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "12345FAKEID",
"EndpointID": "12345FAKEENDPOINTID",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "01:02:03:04:05:06",
"DriverOpts": null
【讨论】:
【参考方案6】:写
sudo apt-get install net-tools
【讨论】:
【参考方案7】:如果您想将 Docker 映像用作“常规”Ubuntu 安装,也可以运行 unminimize
。这将安装比ifconfig
更多的东西,所以这可能不是你想要的。
【讨论】:
【参考方案8】:如果 Ubuntu Docker 映像无法识别 GNS3 中的“ifconfig”,则需要在主机上打开 Ubuntu docker 映像。
假设您的主机 pc 上已经有 docker,并且 ubuntu 从 docker 镜像中拉取了。在您的主机操作系统(Linux、CentOS 等)CLI 中输入这些命令。
$docker images
$docker run -it ubuntu
$apt-get update
$apt-get install net-tools
(旁注:您现在可以添加您想添加的任何其他工具和服务,但现在这只是为了让 ifconfig 工作。)
$exit
现在您将把这些更改提交给 Docker。这个提交更改的链接是最好的总结和工作(跳到第 4 步):
https://phoenixnap.com/kb/how-to-commit-changes-to-docker-image#htoc-step-3-modify-the-container
当您在 GNS3 中重新打开 docker 映像时,您现在应该可以使用 ifconfig 命令以及您添加到容器中的任何其他工具或服务。
享受吧!
【讨论】:
【参考方案9】:对于某些人来说,这可能已经得到了充分解决,但没有一个答案对我来说立即奏效我正在尝试构建一个 ubuntu 映像,所以这是我使用的 dockerfile,它可以使用 net-tools 安装 ifcondig:
FROM ubuntu:latest
RUN apt-get update && apt-get -qq -y install curl
RUN apt-get update && apt-get install -y apt-utils
RUN apt-get update && apt-get install net-tools
COPY . /app
WORKDIR /app
【讨论】:
【参考方案10】:sudo apt-get install iproute2 然后运行 ip地址显示
它有效..
【讨论】:
嗨,欢迎来到 Stack Overflow。由于这是一个非常受欢迎的答案的老问题,请编辑您的答案以解释它提供的现有答案不提供的内容。谢谢。以上是关于如何在我的 ubuntu docker 映像中安装“ifconfig”命令? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
无法在基于 apache/zeppelin:0.9.0 的 Docker 映像中安装软件包