programing

도커 컨테이너 내에서 Curl 명령을 실행할 수 없음

iphone6s 2023. 8. 10. 18:34
반응형

도커 컨테이너 내에서 Curl 명령을 실행할 수 없음

OS X VM Docker 호스트에서 Docker 컨테이너를 생성했습니다.run 명령어를 사용하여 생성하고 다음을 기반으로 컨테이너를 생성했습니다.ubuntu:xenial이미지 오프 도커 허브.

이제 컨테이너가 루트로 생성되고 로그인된 후 컨테이너 내부의 명령 프롬프트에 연결됩니다.

홈브루를 설치하려고 했는데 어떤 이유로 홈브루를 설치하는 명령을 실행할 수 없습니다.

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

내가 달릴 때 나는 충격을 받습니다:

curl: 명령을 찾을 수 없습니다.

용기 안에서 컬을 사용할 수 없는 이유를 잘 모르겠습니다.

curl: 명령을 찾을 수 없습니다.

중요한 힌트입니다. 다음과 함께 설치해야 합니다.

apt-get -y update; apt-get -y install curl

도커 파일 내에서 CURL 명령을 사용하는 동안 이와 같은 문제가 발생했습니다.Gilles가 지적했듯이, 우리는 먼저 curl을 설치해야 합니다.다음은 '도커 파일'에 추가할 명령입니다.

FROM ubuntu:16.04

# Install prerequisites
RUN apt-get update && apt-get install -y \
curl
CMD /bin/bash

그래서 저는 도커 용기가 작동한 후에 컬을 추가했습니다.

(컨테이너를 디버깅하기 위한 것이었습니다...영구적인 추가가 필요하지 않았습니다.)

이미지를 실행했습니다.

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

(위의 내용은 포트 8899의 내 컴퓨터에서 내 "앱"을 사용할 수 있게 함) (이 질문에 중요하지 않음)

그런 다음 실행 중인 컨테이너에 터미널을 나열하고 만들었습니다.

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

만약에exec위의 명령이 작동하지 않습니다. 다음 SOF 문서를 확인하십시오.

오류: 컨테이너를 시작할 수 없음: stat /bin/sh: 해당 파일 또는 디렉토리 없음"

그리고 나서 나는 달려갔습니다.

apk

실행 중인 컨테이너에 존재한다는 것을 증명하기 위해 실행했습니다.

apk add curl

그리고 다음을 얻었습니다.

pk add 컬

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) 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) 컬 설치(7.61.1-r1)

busybox-1.28.4-r2.트리거 실행 중

ca-certificates-20171114-r3.트리거 실행 중

확인: 35개 패키지에 18 MiB

그리고 나서 나는 컬:

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

드릴로 뚫린 터미널 창에서 벗어나려면 새 터미널 창을 열고 실행 중인 컨테이너를 중지해야 했습니다.

docker ps
docker stop my-container-id-here

추가:

"apk"가 없는 경우(사용 중인 기본 이미지에 따라 다름) "다른" 설치 프로그램을 사용해 보십시오.여기에 있는 다른 답변에서 다음을 시도할 수 있습니다.

apt-get -qq update

apt-get -qq -y install curl

이미지에 패키지 캐시가 없기 때문에 다음을 실행해야 합니다.

apt-get -qq update

패키지를 설치하기 전에 명령이 도커 파일에 있는 경우 다음이 필요합니다.

apt-get -qq -y install curl

그런 다음 ZSH 및 GIT Core를 설치합니다.

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

~다점을 받는 중zsh우분투에서 일하는 것은 이상합니다.sh소스 명령을 이해하지 못합니다. 설하려해합니다야를 설치합니다.zsh:

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

그런 다음 셸을 zsh로 변경합니다.

chsh -s `which zsh`

다시 시작합니다.

sudo shutdown -r 0

이 문제는 이번 호에서 자세히 설명합니다.

Alpine 기반 이미지를 사용하는 경우 다음 작업을 수행해야 합니다.

RUN
... \
apk add --no-cache curl \
curl ...
...

설치할 curlDocker 컨테이너에 파일을 다운로드하려면 명령을 사용합니다.

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

을 고참: 위행에추다니합에 합니다.Dockerfilejava.


Azure CLI를 설치하는 다른 예:

ADD https://aka.ms/InstallAzureCLIDeb /tmp
RUN bash /tmp/InstallAzureCLIDeb

저에게 성공적으로 작용한 것은 다음과 같습니다.

FROM ubuntu:20.0.4

RUN apt-get update &&\
   apt-get install -y curl
...

당신은 당신의 이미지를 이미 가지고 있는 것에 기초할 수 있습니다.curl.

미니멀리즘적인 것:

FROM alpine/curl

또는 본격적인 것:

FROM rockylinux:9

언급URL : https://stackoverflow.com/questions/34571711/cant-run-curl-command-inside-my-docker-container

반응형