如何在我的 ubuntu docker 映像中安装 "ifconfig" 命令?

How to install "ifconfig" command in my ubuntu docker image?

我刚刚安装了ubuntu docker镜像,当我执行"ifconfig"时它说没有这样的命令,我试过apt-get install没有名为[=的包17=](我可以安装一些其他图像)。

那么怎么做呢? 谢谢

在新鲜的 ubuntu docker 图像上,运行

apt-get update
apt-get install net-tools

这些可以通过登录到 docker 容器来执行,或者将其添加到您的 docker 文件以构建具有相同图像的图像。

您还可以考虑:

RUN apt-get update && apt-get install -y iputils-ping

(如 Contango :您必须首先 运行 apt-get update,以避免因缺少存储库而出错。

参见“Replacing ifconfig with ip

it is most often recommended to move forward with the command that has replaced ifconfig. That command is ip, and it does a great job of stepping in for the out-of-date ifconfig.

但如“Getting a Docker container's IP address from the host”中所示,根据您的用例,使用 docker inspect 可能更有用。

请使用以下命令获取 运行 容器的 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

在 Dockerfile 中,类似下面的内容应该可以解决问题:

RUN apt-get update && \
     apt-get install -y net-tools

根据记忆,最佳做法是将更新和包安装行结合起来,以防止 docker 缓存更新步骤,这可能会导致安装过时的包。

通过 CLI 或 shell 脚本安装它:

apt-get update && apt-get install net-tools

我来这里是因为我试图在容器上使用 ifconfig 来找到它的 IPA 地址,但没有 ifconfig。如果您确实需要在容器上使用 ifconfig,请使用上面的 @vishnu-narayanan 答案,但是您可以通过在主机上使用 docker inspect 来获取所需的信息:

docker inspect <containerid>

输出中有很多好东西,包括容器的 IP 地址:

"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
    }
}

如果您想使用 Docker 映像作为 "regular" Ubuntu 安装,您也可以 运行 unminimize。这将安装比 ifconfig 多得多的内容,因此这可能不是您想要的。

sudo apt-get install iproute2 然后 运行 ip 地址显示

有效..

sudo apt-get install net-tools

如果 Ubuntu Docker 图片在 GNS3 中无法识别 'ifconfig',您需要在您的主机上打开 Ubuntu docker 图片.

假设您的主机上已经有 docker 并且 ubuntu 从 docker 图像中提取。在您的主机 OS(Linux、CentOS 等)CLI 中输入这些命令。

$docker images

$docker run -it ubuntu

$apt-get update

$apt-get install net-tools

(旁注:您现在可以添加您想要添加的任何其他工具和服务,但现在这只是为了让 ifconfig 起作用。)

$exit

现在您将这些更改提交给 Docker。这个用于提交更改的 link 是最好的总结并且有效(跳到第 4 步):

https://phoenixnap.com/kb/how-to-commit-changes-to-docker-image#htoc-step-3-modify-the-container

当您在 GNS3 中重新打开 docker 图像时,您现在应该可以使用 ifconfig 命令以及添加到容器中的任何其他工具或服务。

尽情享受吧!

对于某些人来说,这可能已经得到充分解决,但是 none 的答案对我来说立即起作用 我正在尝试构建一个 ubuntu 图像,所以这是我使用的有效的 dockerfile使用网络工具安装 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