1. 등장 배경
일반적으로 서버를 관리하는 일은 복잡하고 어려우며 고급 개발자들의 섬세한 작업이 필요한 영역이다. 그래서 과거 Oracle 10g를 리눅스에 설치하는 일은, 긴 메뉴얼을 읽고 따라해야 했으며 알 수 없는 이유로 설치가 실패하면, 처음부터 다시 반복해야 했다. 기업체에서 사용하는 리눅스 와 Oracle의 버전은 정해져 있었고 버전 업데이트 하는 건 엄청난 리스크였다.
하드웨어와 소프트웨어가 발전함에 따라, 그에 따른 환경도 계속 변했다. DevOps의 등장으로 개발 주기가 짧아지면서 배포는 더 자주 이루어지고 마이크로서비스아키텍쳐가 유행하면서 프로 그램은 더 잘게 쪼개어져 관리는 더 복잡해졌다. 이런 상황에서 2013년 3월 산타클라라에서 열린 Pycon Conference에서 dotCloud의 창업자인 Solomon Hykes가 ‘The future of Lunux Containers’ 라는 세션을 발표하면서 처음 세상에 알려졌다.
도커(docker)는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 여기서 컨테이너란 서버에서다양한 프로그램, 실행 환경을 추상화하고, 동일한 인터페이스를 제공하여 프로그램 배포 및 관리를 단순한게 해준다.
백엔드 프로그램, 데이터베이스 서버, 메세지 큐등 어떤 프로그램도 컨테이너로 추상화 할 수 있고, 조립 PC, AWS, Google Cloud 등 어디서든 실행할 수 있다.일상 생활에서 컨테이너는 배에 실은 네모난 화물 수송용 박스를 생각 할 수 있는데, 그 안의 내용은 다 다르고 다양하게 넣을 수 있지만, 규격화되어 있는 공간에 다양한 운송수단으로 쉽게 옮길 수 있고 뺄 수 있다.Docker의 컨테이너 개념 또한 같다.
2. 도커의 구성
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다. 가상화 기술의 하나지만 기존 방 식과 차이가 있는데, 기존 가상화 방식은 주로 OS를 가상화했기때문에 속도가 느리고 무거웠다. 그래서 성능을 개선하기 위해 ‘프로세스 격리’하는 방식이 등장했다. 리눅스에선 이 방식을 리눅 스 컨테이너라 하고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. 또 CPU나 메 모리는 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거의 손실이 없다.
도커에서는 이미지(image)라는 개념도 나온다. 이미지는 컨테이너 실행에 필요한 파일과 설정값 등, 포함하고 있으며 상태값을 가지지않고 변하지 않는다. 즉 컨테이너는 이미지를 실행한 상태라 고 할 수 있으며 추가되거나 변한 정보는 이미지가 아닌 컨테이너에 저장된다. 그러므로 컨테이 너가 삭제 되더라도 이미지는 변하지 않고 남아있으며, 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더 이상 의존성 파일을 컴파일하고 설치할 필요가 없으며, 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 된다.
3. 도커 설치 및 명령어
먼저 도커를 설치하고 환경 구축 할 운영체제는 Kali Linux이며 데비안 베이스의 리눅스이다. 어 떤 리눅스를 사용하고 있는가에 따라 조금씩 다르지만, Kali Linux에서 패키지 관련 명령어를 알아 보도록 하자. 또 root 권한으로 실행해야한다.
apt update |
apt install [파일명] |
apt remove [파일명] |
dpkg -l |
설치되어 있는 패키지를 모두 업데이트 진행한다. 지정한 패키지를 설치한다.
지정한 패키지를 삭제한다.
설치되어 있는 패키지의 list를 표시한다.
표에 기본 패키지 관련 명령어 더 자세한 명령어는 apt, apt-get으로 확인 할 수 있다.
위의 명령어로 간단하게 도커를 설치 할 수 있다. 그러면 제대로 설치가 되었는지 확인을 해보 도록 하자
2) ~#docker or ~#dpkg -l | grep docker
설치 확인 방법은 여러가지가 있지만, 제대로 설치가 되었으면 도커 설치 확인 화면과 같이 나오며, dpkg -l 명령어를 통해 알 수 있다. Dpkg -l 명령어는 모든 패키지를 보여주기 때문 이 원하는 내용만 확인하기 위해선 grep 명령어를 통해 확인 할 수 있다.
4. 도커 서비스 실행
Ps -ef 명령어는 현재 실행되고 있는 프로세스를 보여주는 명령어다. 위처럼 나온다면, ‘service docker start’로 실행해야한다.
만약 칼리 리눅스를 셧다운하고 다시 켰을 경우, 도커를 자동실행 등록을 하지 않았을 경우에 위처럼 수동으로 서비스를 시작해야한다.
5. 도커 이미지 생성
먼저 kali linux에 hello_world.c라는 파일을 만들어 “Hello, CTF!” 를 출력하는 프로그램을 작성했 다.
Dockfile에 작성한 대로 도커의 이미지가 생성된다. FROM은 이미지 OS의 정보를 나타내며, MAINTAINER는 작성자를 뜻한다. RUN은 내가 작성한 명령을 수행하며 WORKDIR는 이미지 내에 디렉토리를 이동하게 한다. 그리고 내가 로컬에 생성한 a.out파일을 docker내의 현재 디렉토리에 복사한다. Bash.sh 파일은 만든 파일이며 echo $(./a.out)으로 a.out의 내용을 출력해준다
Build 옵션으로 명령을 수행합니다. 이미지를 Hello_world라는 이름으로 만들고 현재 디렉토리 에 있는 docker파일의 정보로 생성이 됩니다.
'정보 > IT 지식 정보' 카테고리의 다른 글
네트워크 기본 정리 내용 ( 용어, 내용, 프로로토콜 정리) (0) | 2021.01.19 |
---|---|
RTP Protocol에 대해서 알아보자.. 네트워크는 어려워 ㅠ (0) | 2021.01.19 |
댓글