Docker란 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 다양한 프로그램 및 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순화한다. Container는 image를 실행한 상태를 뜻한다. 격리된 공간에서 프로세스가 동작하는 기술이며 가상화 기술의 하나 이지만 기존 방식과 차이가 있다. 기존 방식이 OS 가상화라면 오버헤드가 크다. 그렇지만 Container는 단순히 프로세스를 격리시키기 때문에 가볍고 빠르다. CPU나 Memory 역시 딱 필요한 만큼만 추가로 사용해 성능적으로 손실이 거의 없다.
컨테이너 기술의 장점은 하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행하며, 새로운 컨테이너는 1초 이내로 생성이 가능하다. 컨테이너 실행 중 변경이 가능하다. 실행중인 컨테이너에 접속, 명령어 입력, 패키지 설치, 사용자 추가, 백그라운드 실행, 내 외부 디렉토리 연결이 가능하다. Docker는 기본 OS로 윈도우와 리눅스 두개 다 존재하지만 LINUX에 더 적합하게 설계되어 있습니다. Docker에는 CE(Commuiny Editon)과 EE(Enterprise Editon)이 두 가지가 존재한다. CE는 무료 버전이며 보안 및 플러그인 등의 추가 기능을 제공하지 않는다. EE는 상용버전으로 무료가 아니다.
Docker engine에 설치에 관한 내용은 docs.docker.com에 종류별로 나와있다.
가상머신을 CentOS 7으로 만들고 docker engijne을 설치하여 보겠다. (1.0.0.118)
먼저 Docker 설치를 하기 위해서 필수 패키지를 설치하여야 한다.
yum install –y yum-utils device-mapper-persistent-data lvm2 (필수 패키지 설치)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly (Repository 설정)
yum install –y docker-ce docker-ce-cli containerd.io -> yum remove dockre.ce -> rm –rf /var/lib/docker (Docker CE(Community Edition) 설치) <- 실습을 위해 무료버전 설치!
Docker image와 httpd를 활용해 웹 서버를 여러 개 구성하여 보겠다. Docker image는 hub.docker.com의 explore의 부분에 엄청나게 많은 이미지가 존재한다.
docker pull centos/httpd-24-centos7 (docker hub에서 이미지를 가져옴)
Docker images (download한 image들을 확인한다.)
docker run -itd -p 80 --name web1 centos/httpd-24-centos7
(centos/httpd-24-centos7의 이미지, 80번 포트, 이름을 web1으로 하는 docker 실행!)
-I : 상호작용, -t : 콘솔제공 -d(background)의미의 실행 옵션이다.
1.0.0.118로 무사히 웹 서버가 작동함을 볼 수 있다.
Docker ps(현재 실행중인 docker container 확인) –a 옵션을 주게 되면 실행중인 container, 작동이 멈춘 container 모두 확인이 가능하다.
Docker pull httpd (httpd 이미지 download 받겠다.)
Httpd 이미지를 이용해 80port 기반의 웹 페이지 docker container를 4개 생성 후 실행!
docker run -itd -p 81:80 --name web2 httpd
docker run -itd -p 82:80 --name web3 httpd
docker run -itd -p 83:80 --name web4 httpd
docker run -itd -p 84:80 --name web5 httpd
Docker ps로 확인해 본 결과 실행 중인 5개의 container를 확인 할 수 있다.
여기서 docker의 신속함이 나타난다. 불과 명령어 몇 개만으로 30초 이내에 웹페이지 5개의 container를 생성했음을 확인할 수 있다.
잘 작동 중인지 포트 번호를 통해 확인하여 보겠다. Httpd의 기본 페이지 it works가 나옴을 확인할 수 있고, 81~84번까지 무사히 작동함을 확인할 수 있다.
생성한 컨테이너를 지우기 위해서는 먼저 docker stop 명령어를 통해 멈춘다.
Docker rm 명령어로 삭제한다. (멈추지 않고 바로 지우기 위해서는 –f 옵션을 줘야한다.)
모든 프로세스 확인을 위해 ps –a로 확인해 본 결과 모든 container가 삭제 되었다.
이미지는 docker rmi 명령어로 삭제가 가능하다.
Docker rmi 이미지이름:tag
'기타 > Docker, K8S' 카테고리의 다른 글
K8S kubeadm 구축 (1) | 2023.09.19 |
---|---|
kubernetes란? (0) | 2019.10.20 |
docker 명령어 실습 (0) | 2019.08.20 |