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


263

치다:

docker run -it centos /bin/bash

Ctrl+ D를 눌러 종료했습니다.

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

유일한 방법은

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

내가 맞아? 더 좋은 방법이 있습니까? (나는 docker 0.8.0을 사용하고 있습니다.)


1
컨테이너에 이름을 지정하고 해당 이름을 사용하여 컨테이너를 제어하려고 했습니까? 그건 그렇고, "종료"라는 말은 별거라는 뜻입니까?
Eric Platon

12
Docker 프로그래밍을위한 도구입니다. 적어도 내가 사용하는 방법입니다. 대다수가 동의하지 않으면 누군가 Docker에게 질문을 할 장소로 StackOverflow를 가리 키지 않도록 지시해야합니다. 나는 이것이 여기 또는 슈퍼 유저에게 갈 수있는 최초의 "DevOps"같은 질문이 아니라고 확신합니다.
Ted M. Young

5
Docker는 개발자 도구입니다. 이미 'docker'태그입니다. 따라서 스택 오버플로를 요청하는 것이 적절하다고 생각합니다. 깨끗한 환경에서 빌드 해야하는 이미지를 빌드하는 데 사용합니다.
Daniel YC Lin

6
이 주제를 "비 주제"로 태그 한 사람들이 그 이유를 설명하기를 바랍니다!
jpetazzo

2
이 질문을 주제가 아닌 것으로 지원하려면 : meta.stackoverflow.com/q/276579/210336meta.stackoverflow.com/q/271279/210336 .
Matthijs Wessels

답변:


291

기존 컨테이너가 종료 된 후에도 다시 시작할 수 있으며 변경 사항은 계속 있습니다.

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

3
docker start `docker ps -q -l` && docker attach `docker ps -q -l`
Daniel YC Lin

7
한 줄로 요약하면 : docker start -i $(docker ps -q -l). ;-) 이름 지정은 선택된 컨테이너를보다 잘 제어하는 ​​데 도움이됩니다. -l마지막을, 알았어 ...
에릭 플라톤

103
Linux를 처음 사용하는 사람들에게는 `docker ps -q -l`비트가 확장입니다. 마지막으로 생성 된 (-l) 도커 컨테이너의 ID로 바뀝니다. -q는 일반적으로로 출력되는 다른 정보 (id를 포함)를 억제합니다 `docker ps`. ---- 참고 : Backtick은 인용 부호가 아니며 매우 특별한 의미가 있습니다. 백틱 사이에 입력하는 모든 내용은 기본 명령 전에 쉘에 의해 평가 (실행)됩니다 -unix.stackexchange.com/questions/27428/…
bnieland

1
컨테이너를로 Created...시작할 수없는 상태로 바뀌는 것을 발견 했습니다 docker start .... 그러나 그것을 사용하여 다시 시작할 수 있습니다docker restart ...
Voltaire

2
참고 : -l"최신"도커 만 가져옵니다. 나와 같아서 docker ps -a시작해야 할 항목이 두 개 이상인 경우 위의 명령을로 변경하여 "all"(-a)을 다시 시작할 수 있습니다 docker start `docker ps -q -a`. -q그냥 "quiet"(출력 로깅이 아님)으로 만듭니다.
Rock Lee

148
docker start -a -i `docker ps -q -l`

설명:

docker start컨테이너 시작 (이름 또는 ID 필요)
-a컨테이너
-i대화식 모드에 첨부
docker ps컨테이너
-q나열 컨테이너 만 나열 컨테이너 ID
-l만 마지막으로 작성된 컨테이너 만 나열


docker ps -q -l, 시작 상태에 있더라도 마지막으로 생성 된 컨테이너 ID를 제공합니다.
Dharmang

컨테이너에 소위 "부착"이란 무엇입니까? "첨부"?
skytree

49

사용하다:

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

종료 상태에있는 모든 컨테이너가 시작됩니다.

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

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


2
나는 이것이 나를 위해 일한 유일한 것을 발견했다. 그 중요한 두 번째 줄 때문에. docker exec -it <container id> /bin/bash(또는 그냥 bash).
barlop

이것은 나를 위해 일했지만 두 개의 컨테이너가 있기 때문에 두 번 실행해야했습니다. 따라서 첫 번째 것이 시작되고 두 번째 것이 시작되면 오류가 발생합니다. 같은 명령을 다시 누르면 다음 컨테이너가 시작됩니다.
Andrija J Fourkidney

20

여러 개의 기억하기 쉬운 명령으로 수행하려면 다음을 수행하십시오.

  1. 중지 된 컨테이너 목록 :

docker ps -a

  1. 연결하려는 컨테이너의 이름 또는 컨테이너 ID를 복사하고 다음을 사용하여 컨테이너를 시작하십시오.

docker start -i <name/id>

-i플래그는 컨테이너의 표준 입력에 연결하는 고정 표시기 알려줍니다.

컨테이너를 연결하기 위해 대화식 쉘로 시작하지 않은 경우 쉘을 실행하려면 다음을 수행해야합니다.

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

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


과소 평가, 이것은 내가이 질문에 대한 "답변"보다 훨씬 쉽게 찾고있는 컨테이너를 찾는 데 도움이되었습니다.
nicholas labrecque

3
Error response from daemon: Container <id> is not running
Cerin

14

알려진 이름으로 정확히 하나의 Docker 컨테이너를 계속하려면 :

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

1
나 특정 고정 표시기를 시작하는이 @Nelson 덕분에 많은 도움이 될 것입니다
SACHIN CHAVAN

이 경우 docker start <name><name>은 컨테이너 이름입니다. 적어도 docker v19.03.8
Don Foumare

13

다음과 같이하세요:

  1. 아래의 명령을 실행하여 모든 컨테이너 서비스가 실행 및 중지되었음을 확인하십시오. -a컨테이너가 멈추는 것을 볼 수있는 옵션 이 제공됩니다

    docker ps -a
    
  2. 그런 다음 container_id컨테이너 태그 이름으로 도커 컨테이너를 시작하십시오.

    docker start <CONTAINER_ID> or <NAMES>
    

    여기에 이미지 설명을 입력하십시오

    말은 위의 그림에서, 컨테이너 ID 4b161b302337
    그래서 명령이 실행이 될 수 있습니다

    docker start 4b161b302337
    
  3. 컨테이너가 실행 중인지 확인할 수 있습니다.

    docker ps
    

9

명명 된 컨테이너가있는 경우 다음을 실행하여 시작할 수 있습니다.

docker container start container_name

여기서 container_name 은 컨테이너를 만들 때 제공해야하는 컨테이너의 이름입니다. container_name컨테이너 이름이 지정되지 않은 경우 컨테이너 ID로 바꿀 수 있습니다 . 컨테이너 ID는 다음을 실행하여 찾을 수 있습니다.

docker ps -a

5

이 명령은 모든 컨테이너에 적용됩니다 (최종 종료 된 컨테이너뿐만 아니라). 이 방법은 시스템이 재부팅 된 후에도 작동합니다. 이를 위해이 명령은 "컨테이너 ID"를 사용합니다.

단계 :

  1. 이 명령을 사용하여 모든 도커를 나열하고 다시 시작하려는 컨테이너의 컨테이너 ID를 기록하십시오. docker ps -a

  2. 컨테이너 ID를 사용하여 컨테이너를 시작하십시오. docker start <container_id>

  3. 컨테이너를 연결하고 실행하십시오. docker attach <container_id>

참고 : 리눅스에서 작동


1

이름으로

sudo docker start bob_the_container

또는 ID

sudo docker start aa3f365f0f4e

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

sudo docker attach bob_the_container

0
docker start `docker ps -a | awk '{print $1}'`

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.