在 docker 容器中运行时找不到 curl 命令

Posted

技术标签:

【中文标题】在 docker 容器中运行时找不到 curl 命令【英文标题】:curl command not found when running inside docker container 【发布时间】:2021-06-29 18:09:50 【问题描述】:

在 Debian 的树莓派上运行 docker 容器。我有以下代码:

pi@raspi:~ $ docker container run --rm -it debian
root@64711f73f7da:/# time curl http://google.com
bash: curl: command not found

然而,如果我在 docker 容器之外运行 curl,它运行良好:

pi@raspi:~ $ curl -V
curl 7.64.0 (arm-unknown-linux-gnueabihf) libcurl/7.64.0 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.36.0 librtmp/2.3
Release-Date: 2019-02-06
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL 

我还尝试从which curl 指定 docker 容器内 curl 的路径,该路径指定其位置为:/usr/bin/curl。结果与上面类似(bash: /usr/bin/curl: No such file or directory

如何让 curl 在 Docker 容器内运行?

【问题讨论】:

debian 基本映像包含非常少的软件集。直接使用它是不寻常的;相反,您可以将其用作包含您的应用程序的自定义图像的基础图像。 Docker Sample application tutorial 可能是一个很好的起点。 您是否尝试在主机操作系统中使用 curl 二进制文件?我认为这很不寻常,您通常会将其安装在容器中。 是的,你是对的。我刚刚发现 curl 也需要在容器内 这能回答你的问题吗? Can't run Curl command inside my Docker Container 【参考方案1】:

在这里找到答案:Can't run Curl command inside my Docker Container

但要详细说明:尽管 Raspberry Pi 上的 Debian 操作系统安装了 curl,我可以从终端访问它,但 Docker Container 中的 Debian 映像也需要 curl。所以在 Docker 容器中,root@d120d03b37db:/# apt-get updateroot@d120d03b37db:/# apt-get install curl 都需要安装,这样 Debian 镜像才能引用 curl

【讨论】:

以上是关于在 docker 容器中运行时找不到 curl 命令的主要内容,如果未能解决你的问题,请参考以下文章

Spark在本地运行但在YARN中运行时找不到文件

在容器中运行时,重新加载telegraf配置的最佳方法。

当应用程序在本地运行时,Node.js 能够连接到 MySQL 容器,但当应用程序在容器中运行时无法连接

当图像在 docker 机器中运行时,X11 转发不起作用,但如果图像在没有 docker 机器的情况下运行,则它可以正常工作

ASP.NET Core 集成AAD认证在Docker中运行时要注意的一个问题

在 Docker 中运行时,`npm install` 导致`cb() never called!`