我从OS X VM Docker主机创建了一个docker容器。我使用run命令创建了它,并基于docker hub的ubuntu:xenial
映像创建了容器。
我已经创建并以root用户身份登录我的容器并在容器内的命令提示符下连接到我的容器。
我尝试安装自制软件,出于某种原因,我无法运行安装Homebrew的命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
当我跑步时,我得到了一个bash:
curl:找不到命令
我不知道为什么我不能在容器内使用卷曲。
答案 0 :(得分:76)
curl:找不到命令
是一个很大的提示,你必须安装它:
apt-get update; apt-get install curl
答案 1 :(得分:24)
在我的Dockerfile中使用CURL命令时遇到同样的问题。正如吉尔斯指出的那样,必须先安装卷发。这些是要在' Dockerfile'中添加的命令。
FROM ubuntu:16.04
MAINTAINER niro;
# Install prerequisites
RUN apt-get update && apt-get install -y \
curl
CMD /bin/bash
答案 2 :(得分:6)
这是因为图像中没有包缓存,您需要运行:
apt-get -qq update
在安装软件包之前,如果你的命令在Dockerfile中,那么你需要:
apt-get -qq -y install curl
之后安装ZSH和GIT Core
apt-get install zsh
apt-get install git-core
让zsh在ubuntu中工作很奇怪,因为sh不理解源命令。所以,你这样做是为了安装zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh
然后将shell更改为zsh
chsh -s which zsh
然后重新启动
sudo shutdown -r 0 此问题在此issue中有详细解释。
答案 3 :(得分:2)
因此,我在docker容器运行后添加了curl。
(这是用于调试容器...我不需要永久添加)
我运行了图片
docker run -d -p 8899:8080 my-image:latest
(上面的代码使我的“ app”可以在端口8899的计算机上使用)(对这个问题并不重要)
然后我列出终端并在正在运行的容器中创建终端。
docker ps
docker exec -it my-container-id-here /bin/sh
(如果上面的“ exec”命令不起作用,请查看此SOF文章Error: Cannot Start Container: stat /bin/sh: no such file or directory")
然后我跑了
apk
只是为了证明它存在于正在运行的容器中
然后我跑了
apk添加curl
并获得以下内容
apk add curl
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ca-certificates (20171114-r3)
(2/5) Installing nghttp2-libs (1.32.0-r0)
(3/5) Installing libssh2 (1.8.0-r3)
(4/5) Installing libcurl (7.61.1-r1)
(5/5) Installing curl (7.61.1-r1)
Executing busybox-1.28.4-r2.trigger
Executing ca-certificates-20171114-r3.trigger
OK: 18 MiB in 35 packages
那我就卷发了!
/ # curl
curl: try 'curl --help' or 'curl --manual' for more information
/ #
注意,要“退出”钻入的终端窗口,我必须打开一个新终端窗口并停止运行中的容器
docker ps
docker stop my-container-id-here
答案 4 :(得分:2)
您无需安装curl
即可将文件下载到Docker容器中,请使用ADD
command,例如
ADD https://raw.githubusercontent.com/Homebrew/install/master/install /tmp
RUN ruby -e /tmp/install
注意:将以上几行添加到Dockerfile
文件中。
另一个安装Azure CLI的示例:
ADD https://aka.ms/InstallAzureCLIDeb /tmp
RUN bash /tmp/InstallAzureCLIDeb
答案 5 :(得分:0)
如果您使用的是基于 Alpine 的图片,则必须
RUN
... \
apk add --no-cache curl \
curl ...
...