랄라

Docker 란? 본문

내일배움캠프/공부정리

Docker 란?

devdaeun 2025. 3. 4. 12:25

애플리케이션 생성, 테스트, 배포를 돕는 소프트웨어 플랫폼, 운영체제 커널을 공유하고있다.(운영체제 가상화)

보안격리성이 가상머신보다 약하다는 단점이 있다.

 

* 코드에 대한 의존성을 자동으로 파악한뒤 환경을 구현하여 애플리케이션 생성을 돕는다.

 docker에서 실행환경을 구현해두었기때문에 다른곳에서도 항상 동일하게 동작이 가능하다.

 

주요 특징 : 컨테이너화, 경량, 이식성, 확장성


가상머신(VM)

전체 운영체제와 하드웨어를 가상화하는 방식으로, 보안 격리성과 독립성이 뛰어나지만 자원 소모가 많고, 시작 시간이 느리며, 이식성에서 Docker보다 떨어진다.


CI/CD

CI (Continuous Integration)

지속적인 통합

테스트를 통과한 뒤에 병합이 가능, 코드의 오류방지 및 버그발견에 도움이된다.

 

CD (Continuous Deployment [Delivery])

지속적인 서비스제공, 배포

배포를 자동화하는 작업을 진행하여 배포시간을 단축한다.


Docker Image

애플리케이션을 실행하기위한 모든정보(코드, 실행 환경, 의존성 등)가 저장되어있는 읽기전용 탬플릿,

해당 이미지를 토대로 코드의 의존성을 자동으로 파악하여 컨테이너가 환경을 구현한다.

코드에 수정이 발생하였을경우 이미지를 새로 생성(build)해야한다, 상태값이 고정되어있어 다른환경에서도 동일한 이미지형태를 가질 수 있다.

 

*명령어

더보기

이미지 빌드 ( -t : 태그 작성옵션 / 뒤에있는 . 은 현재 디렉토리를 표현) 

docker build -t 이미지이름:태그 .

 

이미지 가져오기 (docker hub에서 해당 이미지를 가져옴)

docker pull 이미지이름

 

저장된 이미지 목록(로컬에 저장된 이미지 목록)

docker images

 

이미지 삭제(해당 이미지를 생성할때 작성했던 태그까지 적어야함)

docker rmi 이미지이름:태그

 

Docker Container

Docker Image 를 실제로 실행한 상태, 실제 어플리케이션이 실행되는 동적환경이라고 할수있다.

실행, 멈춤, 종료 등을 수행. docker 내부에 존재하는 가상환경이라고 할 수 있다.

격리된 공간으로 존재하기때문에 하나의 시스템에서 여러개의 컨테이너를 실행할 수 있다.

*image와 container는 1:N의 관계이다.

 

*명령어

더보기

생성, 실행

(옵션 : -d [컨테이너 백그라운드에서 실행] / -p [포트 매핑연결설정])

ex) -p 8080:80 => 8080포트로 요청을 받으면 실제로는 컨테이너의 80포트에서 요청을 수행

docker run [옵션] 이미지명

 

컨테이너 내부접속

(-i [컨테이너의 표준입력 허용] / -t [가상 터미널 할당])

docker exec -it 컨테이너_아이디 /bin/bash

 

실행중인 컨테이너 목록

docker ps

 

모든 컨테이너 목록

docker ps -a //중지된 컨테이너 포함 모든컨테이너

docker ps -al //마지막에 실행된거 먼저

 

컨테이너 시작 / 중지 / 삭제 (컨테이너 아이디의경우 3~4자리만 기입해도 인식이 가능하다.)

docker start 컨테이너_아이디

docker stop 컨테이너_아이디

docker rm 컨테이너_아이디

 

Docker File

Docker Image를 생성하기위한 스크립트 파일, 실행환경에 대한 정보들이 포함되어있다.

 

Docker Hub

Docker Image를 공유하고 저장하는 중앙저장소, 다른 공개이미지를 다운로드하거나

내가 생성한 이미지를 업로드 할 수 있다.

Volume

docker가 관리하는 독립적인 저장소. 컨테이너 데이터를 지속적으로 저장하는 매커니즘,

데이터를 컨테이너와 독립적으로 관리할수있다(컨테이너 삭제시에도 유지가능).

 

*호스트 바인딩 

- 호스트 시스템의 특정 경로를 컨테이너와 직접 연결하여, 컨테이너와 호스트 시스템 간에 실시간으로 파일을 공유하는 방식

- 경로가 동일하기때문에 파일 삭제, 수정정보를 동기화한다.

 

*명령어

더보기

볼륨생성

docker volume create 볼륨이름

 

볼륨목록

docker volume ls

 

볼륨삭제

docker volume rm 볼륨이름

 

Network

컨테이너 간의 통신을 관리, 여러가지 네트워크 드라이버를 제공하여 다양한 네트워크 설정 지원.

주요 네트워크로는 Bridge Network 가 존재한다.

 

- Bridge Network

기본적으로 Docker에서 사용되는 네트워크, 동일 브릿지 네트워크에 연결된 컨테이너들은 서로 통신가능.

단일 호스트에서 여러 컨테이너를 연결할때 사용된다.

외부 네트워크와는 NAT을 통해 통신, default 값이어서 추가로 다른 네트워크를 명시하지않을경우 bridge로 실행

 

*명령어

더보기

네트워크 생성

docker network create 네트워크 이름

 

네트워크 목록

docker network ls

 

네트워크 삭제

docker nework rm 네트워크이름

 

*다른 네트워크로는 Host, Overlay Network 등이 있다.

'내일배움캠프 > 공부정리' 카테고리의 다른 글

대규모 시스템 중요 개념 정리(1)  (0) 2025.03.10
JPA Entity  (1) 2025.02.11
RestTemplate  (0) 2025.02.11
Spring Cloud  (1) 2025.02.07
MSA와 MA의 정의  (0) 2025.02.07