개발자는 기록이 답이다

Docker 기초 이해와 개념정리 본문

DevOps/Docker

Docker 기초 이해와 개념정리

slow-walker 2024. 2. 28. 22:48

1. 컨테이너 기술이란?

소프트웨어 개발에서 컨테이너는 표준화된 소프트웨어 유닛입니다. 애플리케이션과 해당 애플리케이션을 실행하는데 필요한 모든 환경(종속성과 도구)을 패키징하여 격리된 환경에서 실행하는 기술입니다.

이는 기본적으로 코드 패키지이며, 해당 코드를 실행하는데 필요한 종속성과 도구가 포함되어있습니다.

프로그래밍 언어와 런타임 및 종속성, 해당 코드를 실행할때 필요한 기타 도구들이 포함되어있는 패키지입니다.

컨테이너에 있는 패키지로 동일한 환경에서 동일한 애플리케이션을 실행할 수 있어서, 애플리케이션을 독립적으로 실행하고 호스트 환경에서 영향을 덜 주며, 이식성과 확장성을 높일 수 있습니다.

2. 도커란?

도커는 컨테이너의 생성 및 관리 프로세스를 단순화하는 도구입니다.

하나의 컴퓨터에 설치된 리눅스 운영체제에서 완전히 분리된 별도의 리눅스 시스템을 운영할 수 있는 기술입니다.

CPU, 메모리, 네트워크를 분리하여 마치 별도의 시스템처럼 사용할 수 있는 기술입니다.

특정 프로젝트 A와 B가 있을 경우, 각각 프로그래밍언어의 버전이 다를 경우 충돌이 생길 수 있습니다. 또한 프로젝트로 옮겨갈때마다 기존 버전을 지우고 다른 버전을 새로 설치해야 하는 번거로움이 있습니다. 각 버전을 컨테이너에 보유하고 각각 프로젝트에는 그들만의 컨테이너가 존재하도록 하면 전환해도 그대로 작동됩니다.

호스트 컴퓨터가 아닌 컨테이너에 모든 것이 들어있기 때문에 쉽게 프로젝트를 전환할 수 있습니다.

3. 도커 파일, 도커 이미지, 도커 컨테이너의 개념은 무엇이고, 서로 어떤 관계입니까?

컨테이너는 애플리케이션, 웹사이트, Node서버, 애플리케이션을 실행하는 전체 환경 등 무엇이든 포함하는 작은 패키지입니다. 즉, 컨테이너에 소프트웨어 실행 유닛이 존재합니다.

이미지는 dissolver라는 개념으로, 템플릿, 컨테이너의 블루프린트가 됩니다. 실제로 코드와 코드를 실행하는데 필요한 도구를 포함합니다. 또한 이미지를 사용하여 여러 컨테이너를 만들 수 있습니다.

그런 다음에 컨테이너가 실행되어 코드를 실행합니다. 이미지를 한번 정의하면 다른 시스템, 다른 서버에서 여러번 실행할 수 있습니다. 이미지는 모든 설정 명령과 모든 코드가 포함된 공유 가능한 패키지이고, 컨테이너는 그러한 이미지의 구체적인 실행 인스턴스입니다. 즉, 이미지를 기반으로 컨테이너를 실행하는게 도커의 핵심 기본 개념입니다.

이미지를 생성할때 방법은 2가지입니다.

1. 존재하는 이미지 사용(Docker Hub)

https://hub.docker.com

2. 커스텀한 이미지(도커파일에 작성)

도커파일은 이미지를 생성하기 위한 용도로 작성하는 파일로, 텍스트 문서이며, 여러가지 지시어를 사용하여 이미지를 제작할 수 있습니다.

4. 도커파일과 도커컴포즈의 차이는 무엇입니까?

도커 파일(Dockerfile)은 사용자 정의 도커 이미지를 구축하기 위한 지시사항들을 포함하는 텍스트 파일입니다. 기본 이미지를 정의하고, 애플리케이션 코드 및 파일을 추가하고, 환경 변수를 설정하고, 컨테이너화된 애플리케이션을 구성하는 등 이미지를 만들기 위한 단계들이 포함됩니다. 개발팀은 애플리케이션의 특정 환경을 구성할 수 있으며, 이를 바탕으로 빌드된 이미지를 도커 레지스트리에 저장하거나 컨테이너를 실행할 수 있습니다.

도커 컴포즈(Docker Compose) 멀티 컨테이너 도커 애플리케이션을 정의하고 관리하는 데 사용됩니다. "docker-compose.yml"이라는 YAML 파일을 사용하여 애플리케이션의 서비스, 네트워크, 볼륨 등을 설정합니다. 여러 컨테이너로 구성된 애플리케이션을 한 번의 명령으로 실행하고 관리할 수 있습니다.

도커 컴포즈는 애플리케이션의 인프라 구성을 단순화하고, 여러 컨테이너 간의 연결과 설정을 쉽게 구성할 수 있도록 도와줍니다. 개발 환경에서 테스트와 디버깅을 할 때 유용하며, 여러 컨테이너로 구성된 애플리케이션을 로컬 환경에서 쉽게 실행할 수 있습니다.

따라서 도커 컴포즈는 멀티 컨테이너 애플리케이션의 구성을 단순화하고 실행 관리를 도와주는 도구이며, 도커 파일은 사용자 정의 도커 이미지를 빌드하기 위한 지시사항들이 담긴 파일입니다. 도커 파일로 이미지를 빌드한 후, 도커 컴포즈를 사용하여 다수의 컨테이너를 쉽게 실행하고 관리할 수 있습니다.

5. 도커 동작 원라

1️⃣ 이미지(파일) -> 2️⃣ 실행된 상태 -> 메모리 로딩 -> 3️⃣ 인스턴스화 ⇢ 컨테이너 (이미지가 실행된 상태)


< 간단하게 도커 컨테이너 실행시키기 1-1>

1. 도커 설치 후 Docker Hub에서 제공되는 공식 이미지 중 하나인 docker/getting-started라는 Docker 이미지를 실행하는 명령어를 입력해봅니다.

docker run -d -p 80:80 docker/getting-started

2. 맥이라면 자동으로 docker compose가 자동으로 설치되어있는지 확인해봅니다.

docker compose version
 

3. 도커가 실행 중이라면 localhost/tutorial 로 접속이 되는지 확인해주세요.

< 간단하게 도커 컨테이너 실행시키기 1-2>

1. "Hello, World!"를 출력하는 도커 파일을 만듭니다.

vim Dockerfile

i 를 눌러 편집모드로 전환 후 아래 내용을 작성합니다:

 
FROM alpine:latest
CMD ["echo", "Hello, World"]

ESC를 눌러 명령모드로 전환 후, :wq 입력, enter키를 눌러 Dockerfile을 생성합니다.

2. 도커 파일로 도커 이미지를 빌드합니다.

docker build -t hello-world .

(위 명령어의 의미는 "현재 디렉토리에서 Dockerfile을 읽어 도커 이미지를 만들고, 해당 이미지에 hello-world라는 tag 를 붙혀라" 입니다.)

3. 빌드한 도커 이미지를 실행합니다.

docker run hello-world

이 명령어는 hello-world라는 이름의 도커 이미지를 실행시켜 "Hello, World!"를 출력합니다.

'DevOps > Docker' 카테고리의 다른 글

NCP환경에서 Jenkins와 Docker로 CICD Pipeline 구축하기  (0) 2024.03.16