我从OS X VM Docker主机创建了一个docker容器.我使用run命令创建了它,并基于ubuntu:xenialdocker hub 的映像创建了容器.
我现在连接到我的容器后,它以root身份登录并在我的容器内的命令提示符下登录.
我试图安装自制软件,出于某种原因,我无法运行安装Homebrew的命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我得到了一个bash:
curl:找不到命令
不知道为什么我不能在我的容器内使用curl.
Gil*_*not 95
curl:找不到命令
是一个很大的提示,你必须安装它:
apt-get update; apt-get install curl
Run Code Online (Sandbox Code Playgroud)
Nir*_*han 35
在我的Dockerfile中使用CURL命令时遇到同样的问题.正如吉尔斯指出的那样,必须先安装卷发.这些是要在"Dockerfile"中添加的命令.
FROM ubuntu:16.04
# Install prerequisites
RUN apt-get update && apt-get install -y \
curl
CMD /bin/bash
Run Code Online (Sandbox Code Playgroud)
gra*_*der 22
所以我在我的 docker 容器运行后添加了 curl。
(这是为了调试容器......我不需要永久添加)
我跑了我的形象
docker run -d -p 8899:8080 my-image:latest
Run Code Online (Sandbox Code Playgroud)
(以上使我的“应用程序”在我的机器上的端口 8899 上可用)(对这个问题不重要)
然后我在正在运行的容器中列出并创建终端。
docker ps
docker exec -it my-container-id-here /bin/sh
Run Code Online (Sandbox Code Playgroud)
如果exec上面的命令不起作用,请查看这篇 SOF 文章:
错误:无法启动容器:stat /bin/sh:没有这样的文件或目录”
然后我跑了:
apk
Run Code Online (Sandbox Code Playgroud)
只是为了证明它存在于正在运行的容器中,然后我跑了:
apk add curl
Run Code Online (Sandbox Code Playgroud)
并得到以下内容:
apk 添加卷曲
获取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) 安装 nghttp2-libs (1.32.0-r0)
(3/5) 安装 libssh2 (1.8.0-r3)
(4/5) 安装 libcurl (7.61.1-r1)
(5/5) 安装 curl (7.61.1-r1)
执行busybox-1.28.4-r2.trigger
执行 ca-certificates-20171114-r3.trigger
OK:35 个包中的 18 MiB
然后我跑了卷曲:
/ # curl
curl: try 'curl --help' or 'curl --manual' for more information
/ #
Run Code Online (Sandbox Code Playgroud)
请注意,要“退出”终端窗口,我必须打开一个新的终端窗口并停止正在运行的容器:
docker ps
docker stop my-container-id-here
Run Code Online (Sandbox Code Playgroud)
附加:
如果您没有“apk”(这取决于您使用的基础映像),请尝试使用“另一个”安装程序。从这里的其他答案,您可以尝试:
apt-get -qq update
apt-get -qq -y install curl
Run Code Online (Sandbox Code Playgroud)
ken*_*orb 13
您不需要安装即可curl将文件下载到 Docker 容器中,使用ADD命令,例如
ADD https://raw.githubusercontent.com/Homebrew/install/master/install /tmp
RUN ruby -e /tmp/install
Run Code Online (Sandbox Code Playgroud)
注意:将以上行添加到您的Dockerfile文件中。
安装Azure CLI的另一个示例:
ADD https://aka.ms/InstallAzureCLIDeb /tmp
RUN bash /tmp/InstallAzureCLIDeb
Run Code Online (Sandbox Code Playgroud)
这是因为图像中没有包缓存,您需要运行:
apt-get -qq update
Run Code Online (Sandbox Code Playgroud)
在安装软件包之前,如果您的命令在Dockerfile中,那么您将需要:
apt-get -qq -y install curl
Run Code Online (Sandbox Code Playgroud)
之后安装ZSH和GIT Core
apt-get install zsh
apt-get install git-core
Run Code Online (Sandbox Code Playgroud)
让zsh在ubuntu中工作很奇怪,因为sh不理解source命令.所以,你这样做是为了安装zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh
Run Code Online (Sandbox Code Playgroud)
然后将shell更改为zsh
chsh -s which zsh
然后重启
sudo shutdown -r 0本期将深入解释此问题.
如果您使用的是基于Alpine的图像,则必须
RUN
... \
apk add --no-cache curl \
curl ...
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71094 次 |
| 最近记录: |