programing

종료된 도커 컨테이너를 계속하는 방법

minimums 2023. 8. 11. 21:39
반응형

종료된 도커 컨테이너를 계속하는 방법

고려 사항:

docker run -it centos /bin/bash

종료하려면 +를 누릅니다.D

이 컨테이너를 계속 실행하고 싶지만 실행할 수 없습니다.

유일한 방법은

docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash

내 말이 맞니?더 좋은 방법이 있습니까? (도커 0.8.0을 사용하고 있습니다.)

기존 컨테이너를 종료한 후 변경 내용이 계속 남아 있으면 다시 시작할 수 있습니다.

docker start  `docker ps -q -l` # restart it in the background
docker attach `docker ps -q -l` # reattach the terminal & stdin
docker start -a -i `docker ps -q -l`

설명:

docker start컨테이너 시작(이름 또는 ID 필요)
-a컨테이너에 부착합니다.
-i대화형 모드
docker ps컨테이너 나열
-q컨테이너 ID만 나열
-l마지막으로 만든 컨테이너만 나열

사용:

docker start $(docker ps -a -q --filter "status=exited")

종료된 상태의 모든 컨테이너가 시작됩니다.

docker exec -it <container-id> /bin/bash

그러면 특정 컨테이너에 연결됩니다.

기억하기 쉬운 여러 명령으로 수행하려면 다음을 수행합니다.

  1. 중지된 컨테이너 나열:

docker ps -a

  1. 첨부할 컨테이너의 이름 또는 컨테이너 ID를 복사하고 다음을 사용하여 컨테이너를 시작합니다.

docker start -i <name/id>

-iflag는 도커에게 컨테이너의 stdin에 부착하라고 말합니다.

컨테이너가 연결할 대화형 셸로 시작되지 않은 경우 셸을 실행하려면 다음 작업을 수행해야 합니다.

docker start <name/id>
docker exec -it <name/id> /bin/sh

/bin/sh는 일반적으로 알파인 기반 이미지에서 사용할 수 있는 셸입니다.

위에서 컨테이너를 시작할 때 컨테이너를 즉시 종료하는 데 문제가 있는 경우 다음을 사용하여 대화형 셸로 다시 실행할 수 있습니다.여기서는 컨테이너가 아니라 이미지 이름이 필요합니다.다시 시작해도 작동하지 않았기 때문에 문제를 디버그할 수 있는 유일한 방법은 삭제한 후 다시 실행하는 것입니다.셸로 이동하면 Docker 파일의 CMD를 사용하여 출력을 확인하거나 즉시 종료되는 이유를 디버깅할 수 있습니다.

docker rm <name/id>
docker run -it --entrypoint /bin/sh <image-name> -s

알려진 이름의 도커 컨테이너를 하나만 계속하려면 다음을 수행합니다.

docker start  `docker ps -a -q --filter "name=elas"`

다음 단계를 수행합니다.

  1. 아래 명령을 실행하여 모든 컨테이너 서비스가 실행 중이거나 중지되었는지 확인합니다.선택-a용기도 정지하는지 확인하기 위해 제공됩니다.

    docker ps -a
    
  2. 그런 다음 도커 컨테이너를 시작합니다.container_id또는 컨테이너 태그 이름

    docker start <CONTAINER_ID> or <NAMES>
    

    enter image description here

    위 사진에서 컨테이너 ID 4b161b302337이라고 합니다.
    따라서 실행할 명령은

    docker start 4b161b302337
    
  3. 컨테이너의 실행 여부를 확인할 수 있습니다.

    docker ps
    

이름이 지정된 컨테이너가 있는 경우 실행하여 시작할 수 있습니다.

docker container start container_name

여기서 container_name은 컨테이너를 만들 때 지정해야 하는 컨테이너의 이름입니다.대체할 수 있습니다.container_name컨테이너 이름이 지정되지 않은 경우 컨테이너 ID를 사용합니다.컨테이너 ID는 다음을 실행하여 찾을 수 있습니다.

docker ps -a

이러한 명령은 마지막으로 종료된 컨테이너뿐만 아니라 모든 컨테이너에 대해 작동합니다.이 방법은 시스템이 재부팅된 후에도 작동합니다.이를 위해 이러한 명령은 "container id"를 사용합니다.

단계:

  1. 합니다.docker ps -a

  2. ID를 합니다.docker start <container_id>

  3. 합니다.docker attach <container_id>

참고: Linux에서 작동합니다.

이름으로

sudo docker start bob_the_container

또는 ID로

sudo docker start aa3f365f0f4e

중지된 컨테이너를 다시 시작합니다. 컨테이너의 STDIN을 첨부하려면 -i를 사용하거나 -i 대신 컨테이너 세션에 연결할 수 있습니다( -it로 실행하는 경우).

sudo docker attach bob_the_container

상태가 'Exit'인 컨테이너를 시작하려면 다음을 입력합니다.

sudo docker start container_name

스도 없이.더 보기

docker start container_name

컨테이너 이름이 작동하지 않으면 컨테이너 ID로 이름 바꾸기

--privileged 플래그를 사용하여 컨테이너를 실행합니다.

docker run -it --privileged ...
docker start `docker ps -a | awk '{print $1}'`

그러면 '종료' 상태에 있는 모든 용기가 시작됩니다.

2021년 이후에 여기에 오는 사람들을 위해, 다음 명령어는 승인된 답변이 한 줄로 수행될 것입니다.

$ docker start -ai $(docker ps -q -l)

저의 경우, 도커 컨테이너는 시동을 걸었을 때 깨끗하게 빠져나와 위의 어떤 것도 작동하지 않았습니다.실행할 명령을 변경하는 방법이 필요했습니다.

도커 컴포지를 사용하여 다음을 실행하여 명령을 변경할 수 있었습니다.

docker-compose run <container name in docker-compose.yml> bash

예.

docker-compose run app bash

참고! 이렇게 하면 실제로 컨테이너가 다시 생성되므로 이전 인스턴스에서 실행되지 않습니다.

저는 작동하지 않는 노드 버전을 테스트하고 있었습니다.그래서 나는 아래의 명령을 시도했습니다.

docker run -d -it node:latest

언급URL : https://stackoverflow.com/questions/21928691/how-to-continue-a-docker-container-which-has-exited

반응형