Can't run Curl command inside my Docker Container

后端 未结 6 1252
谎友^
谎友^ 2020-12-13 08:01

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 do

相关标签:
6条回答
  • 2020-12-13 08:36

    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
    

    APPEND:

    If you don't have "apk" (which depends on which base image you are using), then try to use "another" installer. From other answers here, you can try:

    apt-get -qq update
    
    apt-get -qq -y install curl
    
    0 讨论(0)
  • 2020-12-13 08:38

    If you are using an Alpine based image, you have to

    RUN
    ... \
    apk add --no-cache curl \
    curl ...
    ...
    
    0 讨论(0)
  • 2020-12-13 08:45

    This is happening 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.

    0 讨论(0)
  • 2020-12-13 08:50

    You don't need to install curl to download the file into Docker container, use ADD command, e.g.

    ADD https://raw.githubusercontent.com/Homebrew/install/master/install /tmp
    RUN ruby -e /tmp/install
    

    Note: Add above lines to your Dockerfile file.


    Another example which installs Azure CLI:

    ADD https://aka.ms/InstallAzureCLIDeb /tmp
    RUN bash /tmp/InstallAzureCLIDeb
    
    0 讨论(0)
  • 2020-12-13 08:53

    curl: command not found

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

    apt-get update; apt-get install curl
    
    0 讨论(0)
  • 2020-12-13 09:00

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

    FROM ubuntu:16.04
    
    # Install prerequisites
    RUN apt-get update && apt-get install -y \
    curl
    CMD /bin/bash
    
    0 讨论(0)
提交回复
热议问题