我 从 我 的 OS X VM Docker 主机 创建 了 一 个 Docker 容器 。 我 使用 run 命令 创建 了 它 , 并 基于 ubuntu:xenial
映像 创建 了 这个 容器 。
在 创建 容器 并 以 root 用户 身份 登录 后 , 我 现在 已经 连接 到 容器 , 并 在 容器 内 的 命令 提示 符 下 登录 。
我 尝试 安装 homebrew , 但 由于 某种 原因 , 我 无法 运行 安装 homebrew 的 命令 :
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
中 的 每 一 个
当 我 跑步 时 , 我 得到 了 一 个 重击 :
curl : 未 找到 命令
不 知道 为什么 我 不能 在 我 的 容器 中 使用 curl 。
8条答案
按热度按时间7uhlpewt1#
curl:未找到命令
是一个很大的提示,你必须安装它:
uyhoqukh2#
在我的Dockerfile中使用CURL命令时遇到了同样的问题。正如Gilles所指出的,我们必须首先安装curl。这些是要添加到“Dockerfile”中的命令。
qjp7pelc3#
所以我在我的Docker容器运行后添加了curl。
(This用于调试容器...我不需要永久添加)
我运行了我的图像
(the以上使我的“应用程序”在我的机器上的端口8899上可用)(对这个问题不重要)
然后,我列出并创建了终端到运行容器。
如果上面的
exec
命令不起作用,请查看以下SOF文章:Error: Cannot Start Container: stat /bin/sh: no such file or directory"
然后我跑:
只是为了证明它存在于运行的容器中,然后我运行:
得到了如下结果:
apk添加 curl
提取http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
提取http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/5)安装CA证书(20171114-r3)
(2/5)安装nghttp 2-库(1.32.0-r 0)
(3/5)安装libssh 2(1.8.0-r3)
(4/5)安装libcurl(7.61.1-r1)
(5/5)安装卷边(7.61.1-r1)
正在执行busybox-1.28.4-r2.trigger
正在执行ca证书-20171114-r3.trigger
合格:35个封装中18 MiB
然后我运行curl:
注意,要“退出”drilled-in-terminal-window,我必须打开一个新终端窗口并停止运行容器:
附录:
如果你没有“apk”(这取决于你使用的是哪个基础映像),那么尝试使用“另一个”安装程序。
xqnpmsa84#
发生这种情况是因为映像中没有包缓存,您需要运行:
在安装软件包之前,如果您的命令位于Dockerfile中,则需要:
然后安装ZSH和GIT核心:
让
zsh
在ubuntu中工作是很奇怪的,因为sh
不理解源命令。然后将shell更改为zsh:
然后重新启动:
本期将对这一问题进行深入解释。
c9qzyr3d5#
如果您使用的是基于Alpine的映像,则必须
xwbd5t1u6#
你不需要安装
curl
下载文件到Docker容器,使用ADD
命令,例如:注意:将以上各行添加到
Dockerfile
文件中。另一个安装Azure CLI的示例:
brjng4g37#
对我来说成功的是:
vohkndzv8#
您可以基于已经具有
curl
的映像。简约主义风格:
或者是一个成熟的计划: