Can't run Curl command inside my Docker Contai

2019-03-11 17:10发布

I created a docker container from my OS X VM Docker host. I created it using the run command and created the container based off the ubuntu:xenial image off docker hub.

I'm now connected to my container after it's created and logged in as root and at the command prompt inside my container.

I tried to install homebrew and for some reason, I can't run the command to install Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

when I run that I get a bash:

curl: command not found

Not sure why I'm not able to use curl here inside my container.

4条回答
孤傲高冷的网名
2楼-- · 2019-03-11 17:25

So I added curl AFTER my docker container was running.

(This was for debugging the container...I did not need a permanent addition)

I ran my image

docker run -d -p 8899:8080 my-image:latest

(the above makes my "app" available on my machine on port 8899) (not important to this question)

Then I listed and created terminal into the running container.

docker ps
docker exec -it my-container-id-here /bin/sh

(if the "exec" command above does not work, check this SOF article Error: Cannot Start Container: stat /bin/sh: no such file or directory" )

then I ran

apk

just to prove it existed in the running container

then i ran

apk add curl

and got the below

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

then i ran curl !

/ # curl
curl: try 'curl --help' or 'curl --manual' for more information
/ # 

Note, to get "out" of the drilled-in-terminal-window, I had to open a new terminal window and stop the running container

docker ps
docker stop my-container-id-here
查看更多
男人必须洒脱
3楼-- · 2019-03-11 17:35

curl: command not found

is a big hint, you have to install it with :

apt-get update; apt-get install curl
查看更多
爱情/是我丢掉的垃圾
4楼-- · 2019-03-11 17:35

Ran in to this same issue while using the CURL command inside my Dockerfile. As Gilles pointed out have to install curl first. These are the commands to be added in the 'Dockerfile'.

FROM ubuntu:16.04
MAINTAINER niro;

# Install prerequisites
RUN apt-get update && apt-get install -y \
curl
CMD /bin/bash
查看更多
对你真心纯属浪费
5楼-- · 2019-03-11 17:47

It is because there is no package cache in the image, you need to run:

apt-get -qq update

before installing packages, and if your command is in a Dockerfile, you'll then need:

apt-get -qq -y install curl

After that install ZSH and GIT Core

apt-get install zsh
apt-get install git-core

Getting zsh to work in ubuntu is weird, since sh does not understand the source command. So, you do this to install zsh

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh

and then you change your shell to zsh

chsh -s which zsh and then restart

sudo shutdown -r 0 This problem is explained in depth in this issue.

查看更多
登录 后发表回答