도커에서 사용하는 기본단위는 이미지와 컨테이너이며 이 두가지가 도커엔진의 핵심입니다.
도커이미지
이미지는 컨테이너를 생성할 때 필요한 요소이며, 가상머신을 생성할 때 사용하는 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 |
댓글