되면한다

03. 도커 이미지와 도커 컨테이너 본문

도커

03. 도커 이미지와 도커 컨테이너

haeullee 2021. 5. 14. 23:40

3-1. 도커 이미지와 도커 컨테이너 정의

1) 도커 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지이다.

2) 도커 컨테이너는 코드와 모든 종속성을 패키지화하여 응용프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다. 

 

도커이미지를 이용하여 컨테이너를 만든다. 따라서, 도커 컨테이너를 도커 이미지의 인스턴스라고 볼 수 있다. 

(여기서는 도커 파일은 도커 이미지를 만드는 설정파일이라고만 알고 넘어가도록 하자.)

도커 이미지 도커 파일 + 도커 실행 시점
도커 컨테이너 도커 이미지+ 환경변수

도커에서는 바꾸고 싶은 부분을 환경변수로 설정하여 관리한다. 도커 이미지는 수정 가능한 부분과 수정 불가능한 부분으로 나누어져 있고, 도커 컨테이너에서 환경변수를 적절하게 설정한다. 

 

3-2. 도커 이미지 이해하기

도커 이미지는 도커 허브에서 제공되는 이미지를 pull해서 사용할수있다.

 

1) 도커 허브에서 제공되는 이미지 pull 받기

1-1) docker images를 입력하면, 현재 pull되어있는 이미지를 확인할 수 있다.

$docker images
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE

당연히도 아직 아무 이미지도 없다.

 

1-2) 이제 이미지를 pull 하겠다.

$docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
Digest: sha256:69e70a79f2d41ab5d637de98c1e0b055206ba40a8145e7bddb55ccc04e13cf8f
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

1-3) 다시 docker images을 입력하면 

$docker images
REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
alpine                        latest    6dbb9cc54074   4 weeks ago    5.61MB

이미지가 pull된 것을 확인 할 수 있다.

 

3-3. 도커 컨테이너 이해하기

도커 이미지가 준비되었다면, 이를 이용하여 컨테이너를 생성할 수 있다.

 

1)이미지로  컨테이너 실행시키기.

1-1) docker ps를 사용하면, 현재 실행중인 컨테이너를 확인 할 수 있다.

$docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

실행중인 컨테이너가 없다.

 

1-2) 이제 docker run <이미지이름> <본인이 원하는 명령어> 를 사용하여 컨테이너를 실행시켜보자

$docker run alpine ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.058 ms
64 bytes from 127.0.0.1: seq=1 ttl=64 time=0.108 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.098 ms
...

1-3) 이제 새로운 터미널 창을 열어, 실행중인 컨테이너를 확인해보자.

$docker ps
CONTAINER ID   IMAGE     COMMAND            CREATED              STATUS              PORTS     NAMES
45ade043d261   alpine    "ping localhost"   About a minute ago   Up About a minute             silly_heisenberg

cf) 1-2)에서 docker run alpine을 하면, 컨테이너가 켜졌다가 바로 꺼져서  docker ps로 확인하면 컨테이너가 아무것도 실행되지 않는다.

 

1-4) 컨테이너를 중지하고 싶다면, 1-3) 터미널에서 docker stop <컨테이너 아이디/이름>을 해준다. 그러면 잠시 시간이 지나면 1-2)터미널에서 컨테이너가 중지된것을 볼 수 있다. 

$docker stop 45ade043d261
45ade043d261

cf) docker stop silly_heisenberg도 가능

 

1-5) 컨테이너가 중지되었기 때문에, docker ps 명령어 입력시, 실행중인 컨테이너가 없는 것을 알 수 있다.

과거의 실행되었던 컨테이너를 확인하고 싶다면, docker ps -a라고 입력해보자.

$docker ps -a
CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS                       PORTS     NAMES
45ade043d261   alpine                        "ping localhost"         8 minutes ago    Exited (137) 2 minutes ago             silly_heisenberg

 

 

참고: 

왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유 | 44BITS

따라하며 배우는 도커와 CI환경(인프런 강좌)

 

설명에 문제가 있으면 알려주세요!

 

 

Comments