[IT] docker

노유성·2023년 6월 23일
0
post-thumbnail

Contaienr

컨테이너(Container)는 소프트웨어 애플리케이션을 실행하기 위한 격리된 환경을 제공하는 가상화 단위입니다. 컨테이너는 애플리케이션과 그에 필요한 종속 파일, 라이브러리 등을 포함하는 독립적인 실행 단위입니다.
일반적으로, 애플리케이션을 실행하기 위해서는 호스트 시스템에 필요한 모든 종속성과 환경을 설치해야 합니다. 이는 다양한 환경에서 애플리케이션을 실행할 때 호환성 문제와 종속성 충돌 문제를 일으킬 수 있습니다. 또한, 여러 애플리케이션을 동시에 실행하고 관리하는 것도 복잡할 수 있습니다.
컨테이너 기반 가상화는 이러한 문제를 해결하기 위해 사용됩니다. 컨테이너는 애플리케이션을 실행하기 위한 필요한 모든 파일 시스템, 라이브러리, 환경 변수 등을 격리된 환경에 패키징하여 실행합니다. 이를 통해 애플리케이션은 호스트 시스템과 분리된 독립적인 환경에서 실행되며, 호스트 시스템과의 종속성 충돌 문제를 피할 수 있습니다.
-chatGPT

가상머신은 HyperVisor(virtual box, VMware, etc..)을 통해서 원하는 운영 체제로 GuestOS를 올려서 여러 VM을 만드는 것이다. 각각의 GuestOS는 하나의 OS처럼 독립적으로 사용가능하다. 그래서 각 OS마다 다른 APP을 설치하고 다른 서비르스를 하도록 구성할 수 있다. 하지만 모든 I/O작업이나 CPU를 사용하는 데에 있어서 HyperVisor를 통해서 커널과 소통해야하기 때문에 매우 느리며 무겁다.

컨테이너는 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지이다. 컨테이너는 OS 수준에서 CPU, 메모리, 네트워크 리소스를 쉽게 공유할 수 있게 해준다. 컨테이너는 가상 머신과 마찬가지로 APP을 관련 라이브러리 및 종속 항목을 함께 패키지로 묶어서 격리 환경을 만들어준다. 하지만 컨테이너는 OS 수준에서 가상화되기에 하드웨어 수준에서 가상화를 하는 VM에 비해 경량되며, OS커널을 공유하기에 적은 메모리를 사용한다.

이미지

컨테이너 기반에서는 이미지 파일을 이용해서 프로그램을 생성한다.

이미지는 시작 시 실행할 명령어와 파일 snap shot으로 이루어져 있다. 파일 스냅샷은 디렉토리나 특정 파일들을 copy한 것을 의미한다.

이미지 파일을 이용해서 container을 생성하고 프로그램을 실행할 수 있다.

도커 이미지 생성

먼저 docker file을 생성해야한다. doker file이란 도커 이미지를 만들기 위한 설정 파일이며, 컨테이너가 어떻게 행동해야 하는 지에 대한 설정들을 정의하는 곳이다. docker file을 만들기 위해서는 먼저 base image(간단하게 OS)를 명시해주며 추가적으로 필요한 파일(라이브러리 등)들을 다운 받기 위한 명령어를 명시한다.


docker

도커란 컨테이너 기반의 가상화 플랫폼이며, APP의 개발, 배포, 실행을 위한 오픈 소스 기술이다. 도커는 app의 소스 파일과 그에 필요한 종속성을 container에 패키징하여 실행할 수 있게 해준다.

docker 예제

docker 다운로드

https://www.docker.com/

위 홈페이지에 접속해서 OS버전에 맞는 docker를 다운로드한다.

docker file 생성

docker file을 만들기 위해서는 1. 베이스 이미지를 명시하고 2. 추가적으로 필요한 파일을 다운 받기 위한 몇 가지 명령어를 명시한다.

# 베이스 이미지 명시
FROM alpine

# 추가적으로 필요한 파일을 다운로드
# RUN command

# 컨테이너 시작시 실행 될 명령어를 명시
CMD ["echo", "hello"];

여기서 cmd는 command이며 최초에 실행시에 1번만 사용할 수 있다. 해당 에제에서는 echo 명령어를 이용해 hello를 console에 찍기 위해 위와 같이 코드를 작성했으며, cmd의 배열 안에 최초 실행 시에 실행할 명령어를 나열하면 된다.

베이스 이미지는 os를 이용할 수 잇지만 가벼운 베이스 이미지인 alpine을 이용했다.

docker file 빌드하기

그 다음에 생성된 dockerfile을 빌드해주어야 한다.

docker build ./

현재 디렉토리에 있는 도커파일을 빌드해주면

터미널에서 위와 같은 화면을 볼 수 있으며 이미지 파일이 생성이 되었음을 알 수 있다.

이미지 파일 실행하기

해당 예제같은 경우에는 위 사진의 마지막 line의 코드가 이미지 파일의 고유한 이름이다.

다 이용할 필요는 없고 앞에 4, 5자리를 이용해서 다음과 같은 코드를 작성하면

docker run c8522

터미널에 hello가 나타남을 알 수 있다.

profile
풀스택개발자가되고싶습니다:)

0개의 댓글