Docker run, Docker start and Docker create 차이
Docker create : 도커 이미지에서 새로운 컨테이너를 생성합니다. 그러나 즉시 실행되지는 않습니다
Docker start : 중지된 컨테이너를 시작합니다. docker create 명령을 사용하여 컨테이너를 만든 경우 이 명령으로 시작할 수 있습니다.
Docker run : create와 start의 조합으로 새 컨테이너를 생성하고 시작합니다. docker run 명령은 로컬 시스템에서 이미지를 찾지 못하는 경우 Docker Hub에서 이미지를 가져와서 컨테이너를 생성하고 실행합니다.
<예제로 알아보기>
예제를 실행하기 전에 Docker가 설치되어 있어야 합니다.
설치가 되어있지 않으면 도커 설치 문서를 참조하세요
docker pull 을 사용하기 위해서는 docker 에 login 되어 있어야 합니다. docker에 login 했다고 가정합니다.
docker pull 명령어로 ubuntu를 다운로드합니다.
$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
ea362f368469: Pull complete
Digest: sha256:b5a61709a9a44284d88fb12e5c48db0409cfad5b69d4ff8224077c57302df9cf
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
docker images 명령어로 시스템에서 사용 가능한 모든 도커 이미지를 볼 수 있습니다. 우분투 이미지로 설명합니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d13c942271d6 9 days ago 72.8MB
docker create 명령어로 ubuntu 이미지로 container-1 이라는 이름의 새로운 도커 컨테이너를 생성합니다.
$ docker create -i --name container-1 ubuntu
468813d90e4cd70bcb9f939f9fbdcfa960840a8e4cbc135928fcfb5d3a61a26f
docker ps 명령어로 현재 실행되고 있는 컨테이너를 조회하면 방금 생성한 컨테이너가 보이지 않습니다. 왜냐하면, 생성은 되었지만 실행이 되지 않았기 때문입니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker ps -a 명령어로 실행중이거나 중지된 모든 컨테이너를 조회해보면 STATUS가 Created이고 이름이 container-1인 컨테이너를 볼 수 있습니다.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
71c041429247 ubuntu "bash" 2 minutes ago Created container-1
docker run 명령어로 container-2라는 이름의 컨테이너를 생성하고 실행해 보겠습니다.
$ docker run -d -it --name container-2 ubuntu
c28cec7d600b3379c0d9440378427dd7343bca3d02777d62bba79d6f08c6f003
container-2 가 실행되고 있고 STATUS가 Up인 상태인 것을 볼 수 있습니다. 즉, docker run 명령어는 컨테이너를 생성하고 시작합니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c28cec7d600b ubuntu "bash" 18 seconds ago Up 17 seconds container-2
docker stop 명령어로 실행 중인 container-2 컨테이너를 중지합니다.
$ docker stop container-2
container-2
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c28cec7d600b ubuntu "bash" 3 minutes ago Exited (137) About a minute ago container-2
71c041429247 ubuntu "bash" 25 minutes ago Created container-1
docker start 명령어로 docker create로 생성한 container-1 컨테이너를 실행해 봅니다. 아래와 같이 컨테이너가 실행된 것을 확인할 수 있습니다.
$ docker start container-1
container-1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
468813d90e4c ubuntu "bash" About a minute ago Up 2 seconds container-1
도커 컨테이너 및 이미지 삭제
docker rm -f 명령어로 container-1 컨테이너를 강제 삭제합니다. 즉, 실행중인 컨테이너를 중지하고 컨테이너를 삭제합니다.
docker rmi 명령어로 ubuntu 이미지를 삭제합니다. 이제 컨테이너도 이미지도 남아 있지 않습니다.
$ docker rm -f container-1
container-1
$ docker rmi ubuntu
Untagged: ubuntu:latest
Deleted: sha256:d13c942271d66cb0954c3ba93e143cd253421fe0772b8bed32c4c0077a546d4d
아래와 같이 docker run 명령어를 수행합니다. local 서버에서 이미지를 찾을 수 없다는 메시지와 함께 이미지를 라이브러리에서 Pulling하고 설치하고 실행합니다.
$ docker run -d -it --name container-3 ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
ea362f368469: Pull complete
Digest: sha256:b5a61709a9a44284d88fb12e5c48db0409cfad5b69d4ff8224077c57302df9cf
Status: Downloaded newer image for ubuntu:latest
4b3269f98b4dc91fd934bd039d8141dc6a6e6ffb763d2c758238a1d005469220
다운로드된 이미지와 시작된 컨테이너을 확인합니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b3269f98b4d ubuntu "bash" About a minute ago Up About a minute container-3
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d13c942271d6 9 days ago 72.8MB
위와 같이 이미지가 다운로드되었고 컨테이너가 시작된 것을 확인할 수 있습니다.
결론적으로 docker run 명령어는 pull, create, start 를 상황에 따라 수행하는 명령어입니다. 즉, 이미지가 없을 때는 pull, create, start를 이미지가 있을 때는 create, start를 수행하고 컨테이너가 있을 경우에는 start를 수행합니다.
'Docker' 카테고리의 다른 글
헷갈리는 Docker - 수정 (0) | 2021.12.26 |
---|---|
Docker Commands for Managing Container Lifecycle (0) | 2021.12.25 |
window10에 도커 설치하기 (1) | 2021.12.25 |
도커란 (0) | 2021.12.25 |
도커 명령어 - 수정 (0) | 2021.12.25 |