Docker 실행 및 생성


93

docker rundocker create명령 의 차이점은 무엇입니까 ?

나는 일반적으로 사용 run하지만 때로는 문서에서 create.

도커의 --help

create    Create a new container
run       Run a command in a new container

run새 컨테이너에 명령을 전달해야 할 때 사용 된다는 의미 입니까? 그렇다면 목표는 무엇입니까 create?

답변:


105

Docker 문서에서

docker create 명령은 지정된 이미지 위에 쓰기 가능한 컨테이너 계층을 만들고 지정된 명령을 실행할 수 있도록 준비합니다. 그런 다음 컨테이너 ID가 STDOUT에 인쇄됩니다. 이다 고정 표시기 실행 유사 -d 컨테이너가 시작되지 않습니다 제외 . 그런 다음 docker start 명령을 사용하여 언제든지 컨테이너를 시작할 수 있습니다.

이는 경우에 유용합니다 당신이 할 컨테이너 설정 구성을 미리 시간을 당신이 그것을 필요로 할 때 시작할 준비가되도록. 새 컨테이너의 초기 상태가 생성됩니다.


2
유사성을 강조하고, 같은 (다만 --detach의 추가로 --detach - 키 및 --sig를 프록시) --create 같은 인자를 수용 --run 참조 docs.docker.com/v17.09 / engine / reference / commandline / run /…
Marvin

117

기술적으로 docker run= docker create+ docker start.


42
사실, 저는 이것을 배우는데 몇 시간을 보냈습니다 . docker run= docker create+ docker start+ docker attach. 없이 attach백그라운드에서 시작 컨테이너 실행,
webbower

19

1
U는 "docker run이 컨테이너를 생성하고 (도커 생성과 동일) 실행합니다."라고 썼습니다. <--- 순환 정의, exec와 start의 차이를 설정하지 않았고 "실행"이라고합니다. (그리고 우리가 도커 실행에서 실행의 정의를 보면 "실행"이라고 말하면 생성 및 실행을 의미하므로 무한한 숫자로 끝날 것입니다. 그래서 아마도 당신이 말할 때 그보다 적은 것을 의미합니다. "runs it"..하지만 "runs it"을 exec 및 start와 구별해야합니다. 시작 및 exec 또는 시작). 아마도 -d는 exec를 시작하지 않음을 의미합니다. -d 없이는 시작 및 exec
barlop

8

다른 답변에는 이것을 다루었지만 실제로는 명확하기 때문에 동등한 셸 명령 줄을 보여줄 것이라고 생각했습니다.

$ docker run myimage

와 같다

$ docker start -a $(docker create myimage)

여기서, docker create지정된 화상으로부터 용기를 만드는 데 사용하고, 생성 출력한다 컨테이너 ID를 하고 docker start그 ID를 사용하여 컨테이너를 시작하는 데 사용된다. 이 -a옵션은 컨테이너가의 기본 동작 인 포 그라운드에서 실행되도록 터미널이 연결되도록합니다 docker run.

생성되었지만 시작되지 않은 컨테이너는 Created상태가됩니다. 이것은로 볼 수 있습니다 docker container ls -a.


6

나는 도커를 처음 접했고 그냥 가지고 놀았다.

필자는 즉 실행 고정 표시기 기본적으로는 다음을 수행합니다 (의 순서로 ..) 만들 고정 표시기 , 고정 표시기의 시작 , 첨부 고정 표시기 당신이 할 후 즉시 활성 쉘에 연결하기 때문에, '실행' 명령을 사용합니다.


1
귀하의 답변을 확인하기 전에 이에 대해 위에 댓글을 게시했습니다. 나는 이것을 한 시간 정도 전에 보았다면 좋겠다.
webbower

-3

Docker 실행 은 기본적으로 컨테이너에서 명령을 실행하기위한 것입니다.

docker run -it <Container Name> /bin/bash

위는 bash 터미널을 만들기위한 것입니다. 그리고 컨테이너에서 bash 명령을 사용하도록합니다.

Docker create 는 Docker 이미지에서 컨테이너를 만드는 것입니다.

docker create -d /var/lib:/var/lib --name docker-ubuntu ubuntu

위는 이미지 "ubuntu"에서 "docker-ubuntu"라는 이름의 컨테이너를 Docker로 만드는 것입니다.


1
docker run -it <Container name>/ bin / bash 없이도 할 수 있습니다 . 예를 들어 루비는 irb라는 실행 파일을 자동 실행합니다. 또한 로그온하지 않는 dockersamples / static-site로 수행되는 -d를 실행할 수 있습니다. 그래서 저는 그것이 exec를 수행하지 않고 단지 시작한다고 생각합니다.
barlop

컨테이너가 이미 생성 된 다음 경우 실행되지 만드는 경우 '고정 표시기 실행'을 함께 실행할 수 있습니다
Sergii Getman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.