도커 컨테이너 실행과 시작의 차이점
컨테이너를 시작하기 위해 하는 일은 다음과 같습니다.
docker run a8asd8f9asdf0
이 경우 다음과 같은 기능이 있습니다.
docker start
하다뇨?
설명서에는 다음과 같이 나와 있습니다.
중지된 하나 이상의 컨테이너 시작
이것은 매우 중요한 질문이며 답은 매우 간단하지만 근본적입니다.
- 실행: 이미지의 새 컨테이너를 만들고 컨테이너를 실행합니다.동일한 이미지의 클론 N개를 생성할 수 있습니다.명령은 다음과 같습니다.
docker run IMAGE_ID
아닌docker run CONTAINER_ID
- 시작: 이전에 정지된 컨테이너를 실행합니다.예를 들어, 명령을 사용하여 데이터베이스를 중지한 경우
docker stop CONTAINER_ID
, 명령을 사용하여 동일한 컨테이너를 다시 시작할 수 있습니다.docker start CONTAINER_ID
, 데이터와 설정은 동일합니다.
run
이미지 실행start
컨테이너를 시작합니다.
의사는 다음과 같이 언급합니다.
그
docker run
command는 먼저 지정된 이미지 위에 쓰기 가능한 컨테이너 레이어를 만든 다음 지정된 명령을 사용하여 시작합니다.즉, 도커 런은 API와 동등합니다.
/containers/create
그리고나서/containers/(id)/start
.
기존 컨테이너를 실행하지 않고 도커 1.3 이후로 도커를 실행합니다.
종료된 컨테이너를 다시 시작할 수 있습니다.
예를 들어 설명:
컴퓨터에 게임(iso) 이미지가 있다고 가정합니다.
당신이run
(이미지를 가상 드라이브로 마운트), 가상 드라이브에 있는 모든 게임 콘텐츠와 함께 가상 드라이브가 생성되고 게임 설치 파일이 자동으로 실행됩니다.[도커 이미지 실행 - 컨테이너 생성 후 시작]
하지만 당신이stop
(도커 중지와 유사) 가상 드라이브는 여전히 존재하지만 모든 프로세스를 중지합니다.[삭제되지 않을 때까지 용기가 존재하므로]
그리고 당신이 할때는start
(도커 시작과 유사), 가상 드라이브에서 게임 파일이 실행을 시작합니다.[기존 컨테이너 시작]
이 예에서는 게임 이미지가 도커 이미지이고 가상 드라이브가 컨테이너입니다.
run
command는 이미지에서 컨테이너를 생성한 다음 이 컨테이너에 대한 루트 프로세스를 시작합니다.실행 중run --rm
플래그는 나중에 쓸모없는 죽은 컨테이너를 제거하는 수고를 덜어줄 것이고 당신이 존재하는 것을 무시할 수 있게 해줄 것입니다.docker start
그리고.docker remove
다같이.
run
명령어는 다음과 같은 몇 가지 작업을 수행합니다.
docker run --name dname image_name bash -c "whoami"
- 이미지에서 컨테이너를 만듭니다.이 시점에서 컨테이너에는 ID가 있고, ID가 주어지면 이름이 있을 수 있으며, 다음에 표시됩니다.
docker ps
- 컨테이너의 루트 프로세스를 시작/실행합니다.위의 코드에서 실행될 것입니다.
bash -c "whoami"
. 뛰면docker run --name dname image_name
컨테이너를 실행하는 명령이 없으면 즉시 정지 상태가 됩니다. - 루트 프로세스가 완료되면 컨테이너가 중지됩니다.이 시점에서는, 그것은 거의 쓸모가 없습니다.더 이상 아무것도 실행할 수 없고 컨테이너를 부활시킬 수도 없습니다.기본적으로 정지 상태를 벗어나는 방법은 컨테이너를 제거하거나 정지된 컨테이너에서 체크포인트(즉, 이미지)를 만들어 다른 것을 실행하는 것입니다.뛰어야 합니다.
docker remove
동일한 이름으로 컨테이너를 출시하기 전에.
용기가 자동으로 정지되면 제거하는 방법은?추가하기--rm
에 깃발을 꽂다run
명령:
docker run --rm --name dname image_name bash -c "whoami"
하나의 컨테이너에서 여러 명령을 실행하는 방법?그 뿌리 과정이 죽는 것을 막음으로써.이것은 처음에 쓸모없는 명령을 실행함으로써 이루어질 수 있습니다.--detached
플래그를 지정한 다음 "execute"를 사용하여 실제 명령을 실행합니다.
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
그럼 왜 필요하죠?이전 토막글에서 endless 명령으로 시작한 이 미해결 컨테이너를 멈추려면tail -f /dev/null
.
다니엘 3004의 답변은 이미 꽤 좋습니다.
나 같은 사람들이 섞이는 빠르고 더러운 공식일 뿐입니다.run
그리고.start
수시로:
docker run [...]
=docker pull [...]
+docker start [...]
명령어 이름을 "run" 대신 "new"로 지정하는 것이 더 현명했을 것입니다.
실행은 기존(또는 다운로드 가능) 이미지의 컨테이너 인스턴스를 만들고 시작합니다.
언급URL : https://stackoverflow.com/questions/34782678/difference-between-running-and-starting-a-docker-container
'programing' 카테고리의 다른 글
C++에서 더블을 문자열로 변환하려면 어떻게 해야 합니까? (0) | 2023.11.01 |
---|---|
Oracle Sequence 값이 순서화되지 않았습니다. (0) | 2023.11.01 |
XML-RPC와 SOAP의 차이점은 무엇입니까? (0) | 2023.11.01 |
워드프레스 WP_QUERY를 위해 $_POST를 소독하는 방법은? (0) | 2023.11.01 |
TCP 연결이 열린 후 다른 포트로 이동합니까? (0) | 2023.11.01 |