랄라
Docker 란? 본문
애플리케이션 생성, 테스트, 배포를 돕는 소프트웨어 플랫폼, 운영체제 커널을 공유하고있다.(운영체제 가상화)
보안격리성이 가상머신보다 약하다는 단점이 있다.
* 코드에 대한 의존성을 자동으로 파악한뒤 환경을 구현하여 애플리케이션 생성을 돕는다.
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 |