본문 바로가기
도커&쿠버네티스/도커

도커엔진

by 취미툰 2020. 9. 4.
반응형

도커에서 사용하는 기본단위는 이미지와 컨테이너이며 이 두가지가 도커엔진의 핵심입니다.

 

도커이미지

이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상머신을 생성할 때 사용하는 iso파일과 비슷한개념입니다. 이미지는 도커명령어로 내려받을 수 있으므로 별도로 설치할 필요는 없습니다.

 

도커컨테이너

도커이미지는 우분투,centos등 기본적인 운영체제부터 mysql,mongoDB.tomcat 등 각종 애플리케이션까지 종류가 다양합니다. 이러한 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이  생성되고 그것이 바로 도커컨테이너입니다.

예를들어 웹서버 도커 이미지로부터 여러개의 컨테이너를 생성하면 생성된 컨테이너의 개수만큼 웹서버가 생성되고 기동되어 사용될 것입니다.

 

컨테이너는 이미지를 읽기 전용으로 사용하되, 이미지에서 변경된 사항만 컨테이너 계층에 저장하므로 컨테이너에서 무엇을 하듯이 원래 이미지는 영향을 받지 않습니다. 

 

도커사용을 위한 기본 명령어

 

도커 버전 확인

root@ysbae-VirtualBox:~# docker -v
Docker version 19.03.12, build 48a66213fe

 

도커 생성 + 실행(Create + start) RUN

run 명령어는 이미지를 컨테이너로 생성하고 실행까지 바로 하게해줍니다. 우분투14.04를 run 명령어로 생성 후 실행하는 모습입니다. -i -t는 상호입출력이 가능하게하는 옵션입니다.

 

root@ysbae-VirtualBox:~# docker run -t -i ubuntu:14.04
Unable to find image 'ubuntu:14.04' locally
14.04: Pulling from library/ubuntu
2e6e20c8e2e6: Pull complete
30bb187ac3fc: Pull complete
b7a5bcc4a58a: Pull complete
Digest: sha256:ffc76f71dd8be8c9e222d420dc96901a07b61616689a44c7b3ef6a10b7213de4
Status: Downloaded newer image for ubuntu:14.04
b9a02f0bf01fc754181fea781fb66ec72ab3a2c4eb6822202029965a87a675e6

 

도커 이미지 내려받기 PULL

이미지를 레지스트리에서 내려받는 명령어입니다.

root@ysbae-VirtualBox:~# docker pull centos:7

7: Pulling from library/centos

75f829a71a1c: Pull complete

Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b

Status: Downloaded newer image for centos:7

docker.io/library/centos:7

 

이미지 확인 images

이미지목록을 확인할 수 있습니다.

root@ysbae-VirtualBox:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              7                   7e6257c9f8d8        3 weeks ago         203MB
ubuntu              14.04               6e4f1fe62ff1        8 months ago        197MB

 

컨테이너 생성 CREATE

컨테이너를 생성하게 해주는 명령어입니다.

root@ysbae-VirtualBox:~# docker create -i -t --name mycentos centos:7
944aa9ba77126d2464735fac4eca431c00ed4b7b571e471cc90cb1d329bb9030

run명령어는 create + start까지 해주지만 create는 생성만 할뿐 시작하기위해서는 start명령어를 사용해야 합니다.

 

컨테이너 시작 START

root@ysbae-VirtualBox:~# docker start mycentos
mycentos

 

컨테이너 접속 attach

root@ysbae-VirtualBox:~# docker attach mycentos
[root@944aa9ba7712 /]#

 

컨테이너 빠져나오기

exit는 컨테이너를 정지시키면서 나오는 방법입니다. 정지시키지 않고 나오는 방법은 Ctrl + P,Q입니다.

[root@944aa9ba7712 /]# exit
exit

 

 

컨테이너 목록확인

현재 start된 컨테이너를 볼 수 있습니다 -a옵션을 추가하면 정지된 컨테이너까지 모두 확인가능합니다.

root@ysbae-VirtualBox:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
944aa9ba7712        centos:7            "/bin/bash"         3 minutes ago       Up 14 seconds                           mycentos

 

 

root@ysbae-VirtualBox:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
944aa9ba7712        centos:7            "/bin/bash"         3 minutes ago       Up About a minute                                     mycentos
b9a02f0bf01f        ubuntu:14.04        "/bin/bash"         8 minutes ago       Exited (137) About a minute ago                       intelligent_leakey

 

컨테이너 자세한 설명 보기 INSPECT

컨테이너의 자세한 정보를 확인할 수 있습니다.

root@ysbae-VirtualBox:~# docker inspect mycentos
[
    {
        "Id": "944aa9ba77126d2464735fac4eca431c00ed4b7b571e471cc90cb1d329bb9030",
        "Created": "2020-09-03T14:53:44.629730345Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,

...

 

 

컨테이너 정지 STOP

root@ysbae-VirtualBox:~# docker stop mycentos
mycentos

 

컨테이너 삭제 RM

실행중인 컨테이너는 삭제가 되지 않으므로 반드시 stop 후 삭제해야 합니다. 실행중인 컨테이너를 강제로 삭제하려면 -f옵션을 추가하면 됩니다.

root@ysbae-VirtualBox:~# docker rm mycentos
mycentos

 

이미지삭제 rmi

미root@ysbae-VirtualBox:~# docker rmi centos:7
Untagged: centos:7
Untagged: centos@sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Deleted: sha256:7e6257c9f8d8d4cdff5e155f196d67150b871bbe8c02761026f803a704acb3e9
Deleted: sha256:613be09ab3c0860a5216936f412f09927947012f86bfa89b263dfa087a725f81

 

 

컨테이너는 가상머신과 마찬가지로 가상 IP주소를 할당받습니다. 기본적으로는 172.17.0.x의 IP를 순차적으로 할당합니다.

 

root@ysbae-VirtualBox:~# docker run -i -t --name network_test ubuntu:14.04
root@15995bc5656f:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1203 (1.2 KB)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

아무런 설정을 하지 않으면 이 컨테이너는 외부에서 접속할 수 없고, 도커가 설치된 호스트에서만 접속이 가능합니다. 외부에서 접속이 가능하게 하려면eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 합니다.

-p 옵션을 추가하여 포트를 바인드합니다. [컨테이너포트]:[호스트포트]의 형식으로 바인딩할 수 있습니다. 여러개의 포트를 사용하는 경우 -p옵션을 여러번 서서 설정합니다.

 

root@ysbae-VirtualBox:~# docker run -i -t --name webserver -p 80:80 ubuntu:14.04

 

webserver 컨테이너에 apache2를 설치하여 접속해보도록 하겠습니다.

컨테이너 내부에서 apache2를 설치합니다.

root@7f12438c7aee:/# apt-get update

root@7f12438c7aee:/# apt-get install apache2 -y

root@7f12438c7aee:/# service apache2 start

 

로 컨테이너에 설치 후 chrome에서 접속을 시도합니다.

잘 접속되는것을 확인할 수 있습니다. apache2는 컨테이너에 생성되었으므로 호스트서버에는 전혀 영향을 주지 않습니다.

 

 

출처 : 시작하세요! 도커/쿠버네티스

반응형

'도커&쿠버네티스 > 도커' 카테고리의 다른 글

환경변수옵션을 사용하여 MYSQL 설치하기  (0) 2020.09.07
도커의 유용한 명령어  (0) 2020.09.07
도커란?  (0) 2020.09.01

댓글