티스토리 뷰

도커 기본동작


도커의 기본 설치 이후 동작을 위해서는 도커의 기본 동작 흐름만 이해하면, 컨테이너 자체를 만드는 것은 어렵지 않다.
기본 로직을 이해하면 몇가지 옵션들과 함께 간편하게 도커를 구동할 수 있다.

도커를 구동하는 로직은 아래와 같은 로직을 따른다.
아래에서 다시 소개하겠지만, 이 가운데 docker run은 이미지의 다운로드, 생성, 동작, 접속까지 한번에 실행할 수 있다.
또한 docker search, docker pull, docker create, docker start, docker attach, docker run 등은 제공되는 옵션에 따라 단계별로 생략하고 구동할 수도 있도록 해 두었다.
Docker CLI는 아래 Reference를 참조하면 된다.

Docker Hub로 부터 이미지 검색과 다운로드

# 필요한 이미지 검색
docker search centos

NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5421                [OK]
ansible/centos7-ansible            Ansible on Centos7                              121                                     [OK]
이하 생략

# official image 검색
docker search --filter "is-official=true” centos

NAME                DESCRIPTION                     STARS               OFFICIAL            AUTOMATED
centos              The official build of CentOS.   5421                [OK]

# Docker Image Download
docker pull centos

Using default tag: latest
latest: Pulling from library/centos
8ba884070f61: Pull complete
Digest: sha256:b5e66c4651870a1ad435cd75922fe2cb943c9e973a9673822d1414824a1d0475
Status: Downloaded newer image for centos:latest

# Docker Images 확인
docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
centos                  latest              9f38484d220f        3 months ago        202MB

Docker Image 기반으로 Container 생성과 구동

이미지 다운로드 - 이미지 기반  컨테이너 생성 - 컨테이너 동작 - 컨테이너 접속

# Image를 가지고 컨테이너 생성
docker create -it centos
4d2617211b6c04256596c471bd4b0e1abababb8e6933f079ade20eb4d83c099d

# Image를 가지고 컨테이너 생성
docker create --name centos01 -it centos
44c1e6bac8d0c78bf4f83cd61bdc8cea7c2458d14be432f6220b15a8a15e638f

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
44c1e6bac8d0        centos              "/bin/bash"         2 seconds ago       Created                                 centos01

# 컨테이너 동작
docker start centos01
centos01

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
44c1e6bac8d0        centos              "/bin/bash"         About a minute ago   Up 26 seconds                           centos01

# 컨테이너 접속
docker attach centos01
[root@44c1e6bac8d0 /]# cat /etc/*-release
CentOS Linux release 7.6.1810 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"


CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"


CentOS Linux release 7.6.1810 (Core)
CentOS Linux release 7.6.1810 (Core)

# 컨테이너 종료 및 접속 종료
[root@44c1e6bac8d0 /]# exit
exit

docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
44c1e6bac8d0        centos              "/bin/bash"         3 minutes ago       Exited (127) 6 seconds ago                       centos01


docker rm centos01
centos01

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

docker run 명령을 통한 한꺼번에 명령 수행하기

# Docker run을 사용하면, image가 없으면 자동으로 다운로드 받고 컨테이너를 생성하고 컨테이너 접속까지 수행 시킬 수 있음.
docker run —-name centos01 -it centos
[root@c82edce497d8 /]# cat /etc/*-release
CentOS Linux release 7.6.1810 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"


CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"


CentOS Linux release 7.6.1810 (Core)
CentOS Linux release 7.6.1810 (Core)

터미널 종료시 ctrl + p, ctrl+q 를 사용하면, 백그라운드로 동작

Port Forwarding을 통한 컨네티너 구동

# nginx 공식 이미지 검색

docker search --filter "is-official=true” nginx
NAME                DESCRIPTION                STARS               OFFICIAL            AUTOMATED
nginx               Official build of Nginx.   11588               [OK]

# nginx 공식 이미지 다운로드

docker pull nginx

# nginx 동작을 8080포트로 포트포워딩 시킴.

docker run --name ngnix-test -p 8080:80 nginx

# 정상적으로 port forwarding 되는지 curl을 통해 확인.

curl http://10.72.78.151:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>


<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>


<p><em>Thank you for using nginx.</em></p>
</body>
</html>

# docker ps를 통해 현재 동작 중인 docker 확인 ( -a 옵션을 사용하면 정지 중인 도커 까지 확인 할 수 있음)
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
2d877849958e        nginx               "nginx -g 'daemon of…"   4 minutes ago       Up 2 minutes        0.0.0.0:8080->80/tcp   ngnix-test
c82edce497d8        centos              "/bin/bash"              15 hours ago        Up 15 hours                                centos01 


공지사항