Docker?
도커는 컨테이너를 사용하여 애플리케이션을 보다 쉽게 생성, 배포 및 실행할 수 있도록 실행된 도구이다.
컨테이너가 있기에 개발자는 코드 작성 및 테스트에 사용된 환경으로 다른 시스템에 그대로 실행됨을 보장받을 수 있다.
가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷하게 컨테이너는 서버 운영체제를 가상화한다. 간단한 도커 명령어를 통해 서버에 설치된 컨테이너를 구축, 시작 또는 중단할 수 있다.
기존의 Hypervisor기반 가상화는 주로 OS를 가상화하는 방식을 사용하였다.
VMWare나 VirtualBox와 같은 가상머신은 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용한다. 이와 같이 추가적인 OS를 설치하는 것는 overhead가 발생하며 이를 개선하기 위해 프로세스를 격리하는 방식이 등장한다.
Container 기반 가상화는 단순 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU, Memory는 프로세스가 필요한 만큼만 사용하므로 성능 이슈는 거의 없다.
About Docker
1. Build
도커 이미지를 활용하여 Windows 또는 Mac에서 자신만의 고유한 애필리케이션을 효율적으로 개발할 수 있다.
현재 개발자들이 많이 사용하는 VSCode, Circle CI 및 Github를 포함하여 사용하는 모든 개발 툴과 유기적으로 동작한다.
개발한 애필리케이션을 내부 Kubernetes에서 AWS ECS, Azure ACI, Google GKS 등에 이르기까지 모든 환경에서 일관되게 실행할 수 있는 휴대용 컨테이너 이미지로 패키지화할 수 있다.
2. Share
Docker 인증 및 Docker Hub이미지 저장소의 공식 이미지를 활용할 수 있다.
공식 이미지를 활용하여 애플리케이션 개발의 기반으로 사용할 수 있다.
팀 구성원 및 다른 개발자와 협업하고 이미지를 도커 허브에 쉽게 게시할 수 있다.
3.Run
데스크톱 또는 클라우드 네이티브의 설계, 테스트, 스테이징 프로덕션 등 모든 환경에서 동일한 방식으로 여러 애플리케이션을 실행할 수 있다.
애플리케이션을 별도의 컨테이너 독립적으로, 그리고 다른 언어로 배포한다. 언어, 라이브러리 또는 프레임워크 간의 충돌 위험을 줄인다.
Docker Composite CLI의 단순성으로 개발을 가속화하고 단일 명령을 사용하여 AWS ECS, Azure ACI 등 로컬 및 클라우드에서 애플리케이션을 시작할 수 있다.
설명은 도커 공식 홈페이지를 참고했다.
더 많은 설명과 커뮤니티를 알고 싶다면 다음 사이트에서 확인할 수 있다.
https://github.com/remotty/documents.docker.co.kr
용어 설명
도커에는 기존 온프로미스 환경과는 다른 새로운 용어가 있다. 새로운 개념을 이해하는 데 필요하다.
이미지(Image)
이미지는 컨테이너 실행에 필요한 파일과 설정값을 가지고 있는 것이다. 컨테이너가 실행되고 상태가 변경되더라도 이미지는 변하지 않고 설정값을 유지한다.
도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 용량이 크다. 하지만 도커는 레이어 저장방식을 사용하여 중복되는 영역을 최소화한다.
컨테이너를 생성할 때도 레이어 방식을 사용하여 기존의 이미지 레이어 위에 읽기/쓰기 레이어를 추가한다.
Docker 설치
[설치 환경]
host : OSX 11.1
VM : Ubuntu 20.04 LTS
Docker Version : 19.03.8
Network Connection Mode: Bridged
도커는 멀티플랫폼을 지원하기 때문에 host OS의 영향을 크게 받지 않는다.
-
sudo apt-get update
-
sudo apt upgrade
-
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
-
도커 공식 GPG키 추가
curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
-
키 등록
echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
도커 엔진 설치
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
-
설치 확인
sudo docker run hello-world
8. (OPTIONAL) 도커 root 권한 등록하기
도커 스크립트 실행을 위해서는 root나 sudo가 필요하다. 매번 관리자 권한으로 변경하여 실행시키거나, sudo를 입력하는 것은 매우 귀찮은 일이다.
* 서비스를 root권한으로 동작시키는 것은 침해사고 발생 시 시스템 장악에 이어질 수 있으므로 매우 위험하다. sudo 권한을 가진 사용자 그룹 권한에 docker를 추가하는 방법으로 사용하도록 한다. 도커 관리자 권한 부여를 위해 다음 명령어를 입력한다.
sudo usermod -aG docker <사용자명>
도커 실행 확인
도커 데몬이 동작중인지 확인한다.
service docker status
도커 삭제
서비스 충돌 및 재설치 이슈로 도커 삭제가 필요한 경우가 있다.
도커 삭제 명령어는 다음과 같다.
1. 도커엔진, CLI와 포함된 패키지 삭제
sudo apt-get purge docker-ce docker-ce-cli containerd.io
2. 설치된 이미지, 컨테이너, 볼륨 또는 설정파일 삭제
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Review
도커의 개념과 설치법에 대해 알아보았다.
다음 포스트는 도커허브에서 이미지를 가져오고, 컨테이너를 실행시켜본다.
'Security > Cloud Computing' 카테고리의 다른 글
[AWS] Serverless Goat 풀이 - 클라우드 모의해킹 (0) | 2021.06.01 |
---|---|
[MINIO 설치] 라즈베리파이에 AWS S3 환경 구성하기(Object Storage) (0) | 2021.05.26 |
[AWS] 고객 센터 문의하기 (0) | 2021.04.19 |
[Docker] Tomcat Oracle 12c 구성하기 2 (0) | 2021.04.13 |
[Docker] Oracle DB(Oracle 12c) 구성하기 (0) | 2021.03.15 |