중지 된 Docker 컨테이너를 다시 시작하는 방법


89

다음 명령을 사용하여 이미지에서 도커 컨테이너를 시작합니다.

$ docker run -d myimage /bin/bash -c "mycommand"

"mycommand"완료, 컨테이너는 (나는 그것이 정지 가정) 정지,하지만이 명령으로 볼 수 있기 때문에, 삭제되지 않습니다 :

$ docker ps -a

restart이 컨테이너에 동일한 매개 변수를 사용하고 생성 된 데이터를 유지 하는 방법 이 mycommand있습니까?


"볼륨"또는 "호스트 디렉토리 마운트"가 만족 스럽습니까? 다음 문서는 언급처럼 docs.docker.com/engine/tutorials/dockervolumes
Haoming 장을

답변:


123

예, 초기 명령이 실행을 완료하면 컨테이너가 중지됩니다.

다음을 사용하여 중지 된 컨테이너를 시작할 수 있습니다.

docker start container_name

명령 출력을 보려면 -ai옵션 을 추가해야합니다 .

docker start -ai container_name

추신. 거기에있다 docker restart container_name하지만 실행중인 컨테이너를 다시 시작하는 데 사용됩니다 - 내가 그 귀하의 경우가 아니라 생각합니다.


1
내 컨테이너는 시작할 때마다 즉시 중지됩니다. 그 요점이 무엇인지 잘 모르겠습니다. 이 응답은 -ai 명령을 제공합니다 사용 : 열 수 없습니다 요구 사항 파일 : [errno를 2] 해당 파일이나 디렉토리 : 'requirements.txt'
geoidesic

@geoidesic 더 자세한 정보를 제공해 주시겠습니까? 당신이 말하는 'requirements.txt'파일의 종류는 무엇입니까?
lmtx

1
@geoidesic,이 문제를 해결하기 위해 단순히 sleep 900 명령을 실행하도록 진입 점을 변경하여 컨테이너에 연결하고 docker exec -it container_name bash. 컨테이너 내부에서 명령을 실행했을 때 스크립트의 초기 구현이 실패한 이유를 알 수 있었고 수정했습니다.
PatS

@PatS start와 어떻게 결합했는지 공유해 주 sleep시겠습니까? 실행할 수있는 지점에 도달 할 수 없습니다exec
3pitt

9

먼저 $ docker ps -a모든 컨테이너 (실행중인 컨테이너와 중지 된 컨테이너)를 표시하므로 중지 된 컨테이너가 나열되지 않는 이유입니다.

둘째, 중지 된 컨테이너를 쉽게 시작할 수 있습니다.

$ docker start container_name

컨테이너가 시작되면 다음을 수행하여 명령을 실행할 수 있습니다.

$ docker exec -it container_name bash -c "mycommand"

컨테이너에서 만든 항목은 존재하는 한 컨테이너 안에 남아 있습니다. 컨테이너가 제거 된 경우에도 데이터를 유지하려면 볼륨을 사용할 수 있습니다 .


1

그것은해야한다

$ docker restart container_id # OR
$ docker restart container_name

허용되는 답변 restart은 이미 실행중인 컨테이너에 대한 것입니다
3pitt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.