종료 된 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/210336 및 meta.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.