본문 바로가기

Docker, CI

docker- docker 정의 및 docker 설치하기

docker의 정의

docker

 

도커는 컨테이너를 사용해서 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며

컨테이너 기반의 오픈소스 가상화플랫폼이다.

 

도커 없이 프로그램을 받을 때

installer 다운 -> 실행 -> 에러

 

여기서 에러는 현재 가지고있는 서버, 패키지 버전, 운영체제에 따라 설치 도중 많은 에러들이 발생하게 된다. 

또한 설치 과정 또한 꽤나 복잡하다. 

 

docker를 사용하면 이를 간소화해서 다운로드가 가능하다.

 

 

컨테이너

코드의 모든 종속성을 패키지화 해서 응용 프로그램이 하나의 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위 

 

컨테이너 안에 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공해서

프로그램의 배포 및 관리를 단순하게 해준다. 

일반 컨테이너 처럼 물건을 손쉽게 운송해주는 것 처럼 프로그램 또한 일반 컨테이너 처럼 손쉽게 이동, 배포 관리를 할 수 있게 해준다.

따라서 어떠한 실행환경이던 같은 조건으로 실행시키기 때문에 훨씬 간편하다.

 

 

출처: https://thingsolver.com/hello-docker/

 

컨테이너 이미지 

코드, 런타임, 시스템도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든것을 포함하는 

가볍고 독립적인 실행가능한 소프트웨어 패키지

 

컨테이너 이미지는 런타임에 컨테이너가 되고 도커 컨테이너의 경우 도커엔진에서 실행 될 때 이미지가 컨테이너가 된다.

컨테이너화 된 소프트웨어는 리눅스, 윈도우등 항상 동일하게 실행된다.

컨테이너는 소프트웨어를 환경으로부터 격리시키고 개발과 스테이징의 차이에도 불구하고 균일하게 동작하도록 보장한다,

 

출처 https://dzone.com/articles/docker-explained-an-introductory-guide-to-docker

 

 

도커 이미지는 필요한 설정과 종속성을 활용하고 있고 이를 활용해서 도커이미지를 이용해서 컨테이너를 생성하며 

도커 컨테이너를 이용해서 프로그램을 실행한다. 

 

 

 

가상화 기술 

가상화 기술이 나오기 전 

기존 가상화 기술이 나오기 전에는 한대의 서버를 하나의 용도로만 사용했다. 따라서 남는 서버 공간을 그대로 방치하였고

하나의 서버에 하나의 운영체제, 하나의 프로그램만을 운영해서 안정적이나 비효율적으로 운영하였다.

 

Hypervisor기반의 가상화 출현

논리적으로 공간을 분할하여 VM(Virtual Machine) 이라는 독립적인 가상환경의 서버가 이용가능해졌다.

하이퍼 바이저는 호스트 텀퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적인 플랫폼을 말한다. 

윈도위의 hyper-v 도 하이퍼바이저 기반의 가상화 시스템이다. 

기존 가상화 방식

 

위 그림과 같이 가상화 환경 위에 각 각의 VM들이 있고 해당 VM 에는 OS가 있고 OS안에 APP이 존재한다. 

또한 각 VM들은 서로 논리적으로 분리가 되어 있기 때문에 한 VM에 오류가 발생해도 다른 VM으로 퍼지지 않습니다. 

 

 

 

docker  컨테이너 

가상머신과 도커 컨테이너 둘다 기본 하드웨어에서 격리된 환경 내에 어플리케이션을 배치한다는 점에서는 같습니다.

 

출처 : https://www.unixarena.com/2016/06/lets-start-exploring-the-docker-container-world.html/

 

기존 가상화 방식은 가상 머신 위에서 OS를 부팅시켜서 실행 후 어플리케이션을 실행하는 방식

 

도커 컨테이너 방식에서는 호스트 OS 위에 어플리케이션 실행 패키지인 이미지만 배포하면되는 방식 

따라서 도커 컨테이너 방식은 Hypervisor와 각각의 OS가 필요하지 않으므로 더 가볍습니다.

또한 기존 가상화 방식은 VM마다 OS가 다르기 때문에 커널 환경이 일정하지 않은 단점이 있는데

도커 방식을 활용하면 동일한 터미널 환경에서 실행 할 수 있다. 또한 상태에 대한 조회또한 OS에 접속하지 않아도 되기때문에 간편하게 조회 할 수 있다. 

 

 

도커 컨테이너끼리 서로 격리하는 방식 

도커는 리눅스 기반의 가상화 시스템이기 때문에 리눅스의 커널들을 활용해서 가상화를 한다. 

(리눅스 커널 -> 리눅스 VM -> 사용하고있는 OS -> 하드웨어)

 

docker version 실행시 서버단이 linux로 되어있다.

 

C Group

프로세스들의 자원의 사용을 제한하고 격리시키는 리눅스 커널의 기능

 

네임스페이스

하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술

별개의 독립된 공간을 사용하는 것 처럼 격리된 환경을  제공하는 경량프로세스 가상화 기술 

 

 

 

 

 

 

 

 

 

docker 설치하기 

 

 

 

www.docker.com/get-started

 

Get Started with Docker | Docker

Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives.

www.docker.com

 

위 사이트에 접속해서 

 

Download for Windows를 클릭한다 

 

 

Download for Windows 

 

 

 

 

설치를 진행해준다.

 

 

설치를 진행하면서 

docker 사이트 가입도 진행해준다.(www.docker.com/get-started)

 

 

설치가 완료되면  재시작을 진행해 준다. 

 

 

 

 

 

docker 클릭 

로그인까지 진행해준다. 

 

위 까지 진행하면 docker 설치가 완료되었다. 

 

마지막으로 docker run hello-wolrd를 통해 docker의 시작을 알려본다. 

 

 

해당 docker run hello-world를 실행하면 

docker client에서 -> docker 서버 접속 -> 이미지 보관장소에서 hello-world가 있는지 파악하고

만약에 해당 hello-world 이미지가 없다면 -> 도커 허브에 접속해서 가져오게 된다. 

(hello-world 이미지 안에는 hello-world 관련 모든 명령어 및 설치에 필요한 파일들이 내장 되어있다.

또한 이미지 안의 명령어를 통해 hello-world를 실행시킨다.)

 

만약에 hello-world가 이미지가 존재한다면 

docker client -> docker 서버 접속 -> 해당 이미지를 통해 컨테이너를 만든 후 프로그램을 실행한다. 

 

 

 

이를 통해 기본적인 docker에 대한 설명및 설치가 마무리 되었다. 

 

 

 

 

 

 

 

위 글은 

www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%8F%84%EC%BB%A4-ci/dashboard

해당 강의를 듣고 정리하는 내용입니다.