종료된 도커 컨테이너를 계속하는 방법
고려 사항:
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
그러면 특정 컨테이너에 연결됩니다.
기억하기 쉬운 여러 명령으로 수행하려면 다음을 수행합니다.
- 중지된 컨테이너 나열:
docker ps -a
- 첨부할 컨테이너의 이름 또는 컨테이너 ID를 복사하고 다음을 사용하여 컨테이너를 시작합니다.
docker start -i <name/id>
그-i
flag는 도커에게 컨테이너의 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"`
다음 단계를 수행합니다.
아래 명령을 실행하여 모든 컨테이너 서비스가 실행 중이거나 중지되었는지 확인합니다.선택
-a
용기도 정지하는지 확인하기 위해 제공됩니다.docker ps -a
그런 다음 도커 컨테이너를 시작합니다.
container_id
또는 컨테이너 태그 이름docker start <CONTAINER_ID> or <NAMES>
위 사진에서 컨테이너 ID 4b161b302337이라고 합니다.
따라서 실행할 명령은docker start 4b161b302337
컨테이너의 실행 여부를 확인할 수 있습니다.
docker ps
이름이 지정된 컨테이너가 있는 경우 실행하여 시작할 수 있습니다.
docker container start container_name
여기서 container_name은 컨테이너를 만들 때 지정해야 하는 컨테이너의 이름입니다.대체할 수 있습니다.container_name
컨테이너 이름이 지정되지 않은 경우 컨테이너 ID를 사용합니다.컨테이너 ID는 다음을 실행하여 찾을 수 있습니다.
docker ps -a
이러한 명령은 마지막으로 종료된 컨테이너뿐만 아니라 모든 컨테이너에 대해 작동합니다.이 방법은 시스템이 재부팅된 후에도 작동합니다.이를 위해 이러한 명령은 "container id"를 사용합니다.
단계:
합니다.
docker ps -a
ID를 합니다.
docker start <container_id>
합니다.
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
'programing' 카테고리의 다른 글
파이썬에서 CSV 데이터의 한 줄을 읽는 방법은 무엇입니까? (0) | 2023.08.11 |
---|---|
PowerShell에서 기본적으로 파일에 바이트 쓰기 (0) | 2023.08.11 |
두 테이블 합계 계산 방법 (0) | 2023.08.11 |
mysql_install_db 잘못된 문자 집합 및 정렬 (0) | 2023.08.11 |
MySQL Server 버전 10.3.9-MariaDB에서 텍스트에 따옴표가 하나 있는 경우 쿼리할 수 없음 (0) | 2023.08.11 |