컨테이너가 실행되고 있지 않습니다.
저는 다음과 같이 종료된 컨테이너를 시작하려고 했습니다.
다음을 사용하여 사용 가능한 모든 컨테이너를 나열했습니다.
docker ps -a
다음을 나열했습니다.종료 단계에 있는 용기를 시작하고 해당 이미지의 터미널로 들어가려면 다음 명령을 입력했습니다.
docker start 79b3fa70b51d docker exec -it 79b3fa70b51d /bin/sh
그것은 다음과 같은 오류를 던지고 있습니다.
FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running
는 지만제용시작할는때를기가하는▁but▁using.docker start 79b3fa70b51d
모든 것이 정상적으로 작동하는 경우 정상적인 컨테이너 ID를 출력으로 던집니다.
이 오류의 원인은 무엇입니까?
기본적으로 도커 컨테이너에서 실행 중인 태스크가 없는 경우 도커 컨테이너가 즉시 종료됩니다.
작동시키기 는 용기를 해 보세요.--detach
(또는)-d
. ) 주장.
예:
docker pull debian
docker run -t -d --name my_debian debian
e7672d54b0c2
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7672d54b0c2 debian "bash" 3 minutes ago Up 3 minutes my_debian
#now you can execute command on the container
docker exec -it my_debian bash
root@e7672d54b0c2:/#
컨이너테.79b3fa70b51d
할 뿐인 것 같습니다.echo
.
즉, 시작해서 반향을 일으킨 다음 즉시 종료됩니다.
다음 명령은 컨테이너에 연결하고 명령을 실행하기 위해 실행 중인 것을 찾지 못합니다. 너무 늦었습니다.컨테이너가 이미 종료되었습니다.
그
docker exec
명령은 실행 중인 컨테이너에서 새 명령을 실행합니다.명령이 다음을 사용하여 시작되었습니다.
docker exec
프로세스 1 중일 됩니다.
( 주 다시 수 , (으)ㄹ .commit
컨테이너를 새 이미지로 이동하고 이 이미지에서 새 컨테이너를 실행합니다.이것은 일반적인 모범 사례 워크플로우는 아니지만(새 이미지는 반복할 수 없음), 가끔 오류가 발생한 스크립트를 디버그하는 것이 매우 유용합니다.
docker exec -it 6198ef53d943 bash
Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running
docker commit 6198ef53d943
sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
docker run -it ace7ca65e6e bash
root@72d38a8c787d:/#
이 문제는 스크립트가 요청을 대기하는 서비스를 시작하지 않는 이미지에서 발생하므로 스크립트가 끝나면 컨테이너가 종료됩니다.
이는 일반적으로 대부분의 기본 OS 이미지(centos, debian 등) 또는 노드 이미지에도 해당됩니다.
이미지를 대화형 모드로 실행하는 것이 가장 좋습니다.노드 이미지의 예는 다음과 같습니다.
docker run -it node /bin/bash
출력은
root@cacc7897a20c:/# echo $SHELL
/bin/bash
우선, 우리는 도커 컨테이너를 시작해야 합니다.
ankit@ankit-HP-Notebook:~$ sudo docker start 3a19b39ea021
3a19b39ea021
그런 다음 도커 컨테이너를 확인합니다.
ankit@ankit-HP-Notebook:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a19b39ea021 coreapps/ubuntu16.04:latest "bash" 13 hours ago
Up 9 seconds ubuntu1
455b66057060 hello-world "/hello" 4 weeks ago
Exited (0) 4 weeks ago vigorous_bardeen
그런 다음 아래 명령을 사용하여 실행합니다.
ankit@ankit-HP-Notebook:~$ sudo docker exec -it 3a19b39ea021 bash
root@3a19b39ea021:/#
docker run -it --entrypoint /bin/bash <imageid>
이것은 L0j1k가 아래 글에 올려 저를 위해 작업한 것입니다.
여기 제게 효과가 있었던 것이 있습니다.
컨테이너 ID를 가져오고 다시 시작합니다.
docker ps -a --no-trunc
ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
docker restart ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
use 명령어
> docker container ls
> docker image ls
이미지 ID를 확인하고 기록합니다.여기서 제 이미지 ID는 "6c929ca002da"입니다. 여러분은 제 이미지 ID 대신 자신의 이미지 ID를 사용해야 합니다.
> docker start 6c929ca002da
여기서 우리의 이미지는 다운 모드입니다. 우리는 먼저 이미지 ID를 사용하여 시작해야 합니다.6c929ca002da는 제 이미지 아이디입니다.
> `docker exec -it 6c929ca002da bash`
이 명령을 실행한 후에 당신은 다음과 같이 실행 모드에서 당신의 이미지 파일을 볼 수 있습니다.
root@6c929ca002da
여기서 명령을 사용하여 루트 모드로 이동합니다.
스도수
그 이유는 단지 받아들여진 대답이 말한 것입니다.추가 정보를 추가하여 이 문제에 대한 추가적인 이해를 제공할 수 있습니다.
- 컨테이너의 상태는 다음을 포함합니다.
Created
,Running
,Stopped
,Exited
,Dead
그리고 다른 사람들도 알고 있습니다. - 가 행할때를 실행할 때.
docker create
도커 데몬이 상태가 다음과 같은 컨테이너를 만듭니다.Created
. - 때
docker start
컨테이너의 가 "" "" " ""일 수 있는 합니다.Created
또는Stopped
. - 가 행할때를 실행할 때.
docker run
은 두입니다.docker create
그리고.docker start
. - 때
docker stop
도커 데몬이 컨테이너를 멈출 것이 분명합니다.따라서 용기는 다음에 있을 것입니다.Stopped
상황. - 가장 중요한 것은, 컨테이너가 실제로 그 안에 오랜 과정을 가지고 있다고 상상하는 것입니다.프로세스가 종료되면 컨테이너 고정 프로세스도 종료됩니다.따라서 이 컨테이너의 상태는 다음과 같습니다.
Exited
.
프로세스는 언제 종료됩니까?다시 말해서, 그 과정은 무엇이고, 어떻게 시작했을까요?
은 그대은답입니다.CMD
도커파또는에서.command
에서 음표 현으로즉다즉, ▁in,▁the.bash
일부 이미지(예: ubutu:18.04)에서는 기본적으로.
docker run ubuntu:18.04 [command]
docker run -it <image_id> /bin/bash
대화형 모드에서 실행 후 bash 셸 실행
도커 파일을 사용하여 유사한 작업을 시도하는 사람은...
분리 모드로 실행하면 도움이 되지 않습니다.명령이 차단되지 않은 경우 컨테이너는 항상 종료됩니다(실행 중지). bash의 경우입니다.
이 경우 해결 방법은 다음과 같습니다. 1. 결과 이미지를 커밋합니다. (docker_name = 이미지의 기초가 될 컨테이너의 이름, image_name = 생성할 이미지의 이름 commit container_name image_name 2.도커 실행을 사용하여 실행할 명령을 지정하여 새 이미지를 사용하여 새 컨테이너를 만듭니다.여기서 "bash"를 실행하겠습니다: 도커 실행 -it image_name bash
그러면 원하는 대화형 로그인이 제공됩니다.
다음은 도커 컨테이너가 정상적으로 종료되고 도커 파일을 편집할 수 있는 솔루션입니다.
일반적으로 도커 컨테이너가 실행될 때 응용 프로그램은 명령을 실행하여 제공됩니다.도커 파일 참조에서,
CMD 및 Entrypoint 명령어는 컨테이너를 실행할 때 실행할 명령어를 정의합니다. ...도커 파일은 CMD 또는 ENTRYPOINT 명령 중 하나 이상을 지정해야 합니다.
이미지를 빌드하고 CMD 또는 ENTRYPOINT로 명령을 지정하지 않으면 기본 이미지의 CMD 또는 ENTRYPOINT 명령이 실행됩니다.
를 들어, Ubuntu 에는 Ubuntu Docker라는 파일이 .CMD ["/bin/bash"]
(https://hub.docker.com/_/ubuntu) .자, 이제.bin/bash/
명령은 입력을 허용할 수 있습니다.docker run -it IMAGE_ID
명령은 STDIN을 컨테이너에 연결합니다.결과적으로 대화형 터미널이 생성되고 컨테이너가 계속 실행됩니다.
Docker 파일에 CMD 또는 ENTRYPOINT 명령이 지정된 경우 컨테이너를 실행할 때 이 명령이 실행됩니다.이제 이 명령을 입력하지 않고 끝낼 수 있으면 완료되고 컨테이너가 종료됩니다.docker run -it IMAGE_ID
이 경우 대화형 터미널을 제공하지 않습니다.예를 들어 아래의 도커 파일에서 빌드된 도커 이미지가 있습니다.
FROM ubuntu
ENTRYPOINT echo hello
이 이미지의 터미널로 이동해야 하는 경우 진입점 명령을 수정하여 컨테이너를 계속 실행해야 합니다.
FROM ubuntu
ENTRYPOINT echo hello && sleep infinity
▁normally로 용기를 시킨 후docker run IMAGE_ID
당신은 그냥 다른 터미널로 가서 이용할 수 있습니다.docker exec -it CONTAINER_ID bash
컨테이너의 터미널을 가져옵니다.
이 활성 커뮤니티에는 너무 늦었지만 컨테이너가 올바르게 실행되지 않고 콘솔 메시지 쓰기가 종료되거나 종료되지 않을 수 있기 때문에 많은 원인이 있습니다.모든 신입생들을 위한 노드.JS 컨테이너 Docker 파일을 변경하고 보유할 수 있는 모든 CMD 및 EntryPOINT를 지우고 ["/bin/sh"]에 엔트리 포인트만 추가하는 것이 좋습니다(첨부된 테스트 Docker 파일 예 참조).그런 다음 도커 이미지를 재구성하고 다음 명령을 사용하여 실행합니다.
docker run -it --rm your_named_image:tag
Voila 당신은 조개껍질을 가지고 용기 안으로 들어갈 것입니다.그런 다음 명령어(예: node app.js)를 직접 입력하여 앱을 테스트하고 무슨 일이 일어나고 있는지 확인할 수 있습니다.모든 것이 정상인 것을 확인한 후 도커 파일을 변경하고 엔트리 포인트를 "/bin/sh"로 지우고 ["node", app.js"] 등과 같이 사용할 수 있습니다.항상 이 게시물에 대한 이전 답변을 고려하십시오. 컨테이너 내부의 앱이 완료되면 실행 중인 컨테이너가 중지됩니다.
다음은 "테스트" 도커 파일의 예입니다.
FROM node:16.4.0-alpine
ENV NODE_ENV=production
WORKDIR /app
COPY ["package.json","package-lock.json*", "./"]
RUN npm install --production
COPY ./dist .
ENTRYPOINT ["/bin/sh"]
참고: 로컬 컴퓨터의 앱(.js) 소스 파일이 ./dist 디렉터리에 있으므로 보시는 것처럼 컨테이너에서 복사해야 합니다.
나의 경우, 나는 도커 파일의 부모 디렉터리의 특정 파일 이름과 디렉터리 이름을 변경했습니다.컨테이너를 다시 시작하는 데 필요한 매개 변수를 찾지 못했기 때문입니다.
원래 이름으로 다시 이름을 바꾼 후, 용기는 버터처럼 시작되었습니다.
저는 이것에 대해 다른 견해를 가지고 있습니다.나는 할 수 있습니다.docker ps
가 실행 중인 , 을 " 고리도컨너가실확고하인것을중그인자저하마는자얻고시려했으세대고을려션그한것에만도것하작도기하지시시그을다커테이행▁for▁and▁running▁session▁a▁with자하▁i▁see▁it▁but▁that▁as▁it,마▁get▁as,▁there▁container▁tried자▁ier▁is▁dock▁soon그▁to▁a▁restart고▁to리얻▁even려으▁tried,세을.New-PSSession -ContainerId $containerId -RunAsAdministrator
다음과 같이 오류가 발생합니다.
##[오류]New-PSSession : 입력 ContainerId xxx가 없거나 ##[error] 해당 컨테이너가 실행되고 있지 않습니다.
문제는 네트워크 서비스를 사용하여 실행 중이었고 컨테이너에 도커 명령을 실행할 수 있는 권한을 부여했음에도 컨테이너를 볼 수 있는 권한이 충분하지 않다는 것입니다(도커 Security Group 구성 포함).
컨테이너 작업을 활성화하는 방법을 몰랐기 때문에 관리자로 실행하는 것으로 되돌려야 했습니다.
제 경우, 전에 달리는 컨테이너를 죽였습니다.
sudo docker kill testdeb
그래서 컨테이너를 실행할 때 오류가 발생했습니다.
Error response from daemon: Container fcc29295fe78a425155c533506f58fc5b30a50ee9eb85c21031e8699b3f6ff01 is not running
해결책은 컨테이너를 시작하는 것이었습니다.
sudo docker start testdeb
이제 컨테이너가 작동합니다.
sudo docker ps
컨테이너 ID 이미지 명령 생성 상태 포트 이름 fcc295fe78 debian "bash" 9시간 전 업 11초 테스트 데브
이전에 실행되지 않았던 것
제가 시도한 아래의 접근 방식은 Windows vscode 환경에서 작동합니다.
도커 실행 -- 컨테이너 이름 -p 3306:3306 -e MYSQL_ROOT_PASSWORD= 비밀번호 -d mysql
비슷한 답변이 많이 보이는데 포트 번호 '-p 3306:3306'을 추가하면 상태가 정상적으로 실행됩니다.도커 ps -a 명령을 사용하여 확인할 수 있습니다.
언급URL : https://stackoverflow.com/questions/29599632/container-is-not-running
'programing' 카테고리의 다른 글
requests.get()이 반환되지 않는 이유는 무엇입니까?requests.get()에서 사용하는 기본 시간 제한은 무엇입니까? (0) | 2023.08.29 |
---|---|
express 4.0에서 'extended'는 무엇을 의미합니까? (0) | 2023.08.09 |
마리아DB.15일보다 오래된 테이블에서 행을 삭제하는 트리거 만들기 (0) | 2023.08.09 |
현재 페이지를 Ajax 콘텐츠로 바꾸기 (0) | 2023.08.09 |
정적 변수는 스레드 안전합니까? C# (0) | 2023.08.09 |