1. 도커

젠킨스 수업전 선수학습

1. Dcoker

Docker는 애플리케이션과 해당 애플리케이션을 실행하는 데 필요한 모든 것을 컨테이너(Container)라는 단위로 묶어 어디서든 쉽게 배포하고 실행할 수 있게 해주는 오픈소스 플랫폼입니다.

컨테이너는 기존의 가상 머신(VM)과 달리, 호스트 운영체제(OS)의 커널을 공유하므로 훨씬 가볍고 빠르게 동작합니다.

2. Docker의 주요 컴포넌트

1) 이미지

Docker 이미지는 애플리케이션을 실행하는 데 필요한 모든 것(코드, 라이브러리, 종속성, 환경설정 등)을 담고 있는 읽기 전용 템플릿입니다. 컨테이너(Container)를 생성하기 위한 실행 가능한 패키지이며, 이 패키지들은 버전 관리가 가능하고 Docker Hub와 같은 레지스트리를 통해 쉽게 공유할 수 있습니다.

2) 컨테이너

Docker 컨테이너는 Docker 이미지를 실행하여 생성된 인스턴스입니다. 이미지가 정적인 설계도라면, 컨테이너는 동적인 실행 공간(Process)입니다. 각 컨테이너는 독립된 환경에서 실행되며, 호스트 OS를 공유하지만 파일 시스템, 네트워크등은 호스트 OS와 격리되어 있어 다른 컨테이너나 호스트 환경에 영향을 주지 않습니다. 이 덕분에 개발, 테스트, 운영 환경에 관계없이 일관된 실행 결과를 보장할 수 있습니다.

3) 볼륨

볼륨은 컨테이너의 파일 시스템을 호스트 컴퓨터의 파일 시스템과 연결하여 데이터를 영구적으로 저장하고 공유할 수 있게 해주는 기능입니다. 컨테이너는 기본적으로 호스트의 Memory를 공유하여 실행되는 Process 이기 때문에 휘발성이므로 컨테이너를 삭제하면 그 안에 저장된 데이터도 함께 사라집니다. 이러한 문제를 해결하기 위해 볼륨을 사용합니다.

4) Docker File

Dockerfile은 Docker 이미지를 만들기 위한 스크립트 파일입니다. 이 안에는 이미지를 생성하기 위한 패키지, 소스코드 , 종속 컨테이너 정보등이 포함되어 있습니다. 즉, 어떤 애플리케이션을 어떤 환경에서 어떻게 실행할 것인지에 대한 설계도와 같습니다.

Dockerfile에 정의된 명령어(예: FROM, RUN, COPY 등)를 순서대로 실행하여 최종적으로 이미지를 빌드합니다.

Docker의 장점

  • 경량성 및 속도: VM과 달리 OS 커널을 공유하여 컨테이너의 크기가 작고, 시작 속도가 매우 빠릅니다.

  • 일관된 환경: 어떤 환경에서든 동일한 컨테이너를 실행하여 '내 PC에서는 되는데 서버에서는 안 되는' 문제를 방지합니다.

  • 쉬운 배포: 컨테이너화된 애플리케이션은 복잡한 설정 없이도 쉽게 배포하고 확장할 수 있습니다.

  • 격리: 각 컨테이너는 독립된 환경이므로, 여러 컨테이너를 동시에 실행해도 서로 영향을 주지 않습니다.

  • 계층 구조: 이미지가 여러 개의 읽기 전용 계층(layer)으로 구성되어 있어, 이미지를 빌드하고 공유할 때 변경된 부분만 전송하기 때문에 효율적입니다. 이 덕분에 이미지의 저장 공간을 절약하고 빌드 시간을 단축할 수 있습니다.

    • 계층(Layer) : 애플리케이션 실행에 필요한 패키지나 라이브러리를 포함하는 변경 사항의 묶음

3. Docker 기본 명령어

Docker설치

명령어
설명

docker image ls

현재 관리 중인 이미지 목록 확인

docker images

docker image ls의 단축형

docker container ls

현재 실행 중인 컨테이너(프로세스) 목록 확인

docker ps

docker container ls의 단축형

docker pull <이미지 이름 or id>

도커 허브에서 이미지를 다운로드

docker run [옵션] [저장소이름/]<이미지이름>[:버전]

컨테이너 생성 및 실행 (이미지 없으면 자동 다운로드) pull → create → start → attach 과정 포함

docker exec [옵션] <컨테이너 이름 or id> <명령어>

실행 중인 컨테이너 내부에서 명령 실행

docker rm [옵션] <컨테이너 이름 or id> ...

컨테이너 삭제

docker rmi <이미지>

이미지 삭제

docker logs <컨테이너 id>

컨테이너 로그 확인

docker build -t <이미지_이름>[:태그] <Dockerfile_경로>

Dockerfile을 기반으로 이미지 생성

docke run 주요 옵션

옵션
설명

-d

백그라운드 실행 (detached mode)

-i -t

컨테이너 내부 진입 및 상호 입출력(터미널 연결)

--name <이름>

컨테이너 이름 지정 (미지정 시 무작위 16진수 이름 부여)

-p <호스트Port>:<컨테이너Port>

호스트 포트와 컨테이너 포트 연결 (포트 포워딩)

-e <환경변수>=<값>

환경변수 설정

-v <호스트경로>:<컨테이너경로>

볼륨 마운트 (호스트 디렉토리와 컨테이너 경로 연결)

--link <컨테이너>

다른 컨테이너에 링크 추가

4. Docker Hub

만들어둔 도커이미지를 클라우드환경에 저장할 수 있는 도커 이미지 저장소입니다. 도커허브를 통해 이미 만들어진 이미지를 다운로드받아 사용하거나 자신만의 이미지를 도커허브에 등록하여 사용할 수 있습니다.

Last updated