728x90
Docker 사용 시 마주할 용어
- docker image(이미지) : Docker 격리 정의 단위
- Dockerfile: Docker 격리 정의 서술 (Instruction)
- Docker Container(컨테이너): Docker 격리 동작 단위 = 격리된 공간에서 실행중인 Docker 이미지
- Docker Engine(= API + CLI + Docker Deamon) : Docker 이미지를 구동 및 관리하기 위한 엔진
- Docker Engine 위에 이미지를 올리고 Run 구동 시 독립적인 Docker Container 실행
- Host 호스트 = Node 노드 = Instance 인스턴스 = Server 서버: Docker Engine 구동
Host는 다수의 Container를 갖는다.
Node는 다수의 Container를 갖는다.
인스턴스는 다수의 Container를 갖는다.
서버는 다수의 Container를 갖는다.
Dockerfile 내 COPY 명령어 사용 시
COPY 명령어: 호스트의 디렉토리 혹은 파일을 컨테이너의 디렉토리로 복사
Docker 사용 절차
Develop -> Test Java -> Build Java -> Build Docker Image -> Push -> Pull -> Run
- 주화색 영역: Java 에 관련된 절차
- 파란색 영역: Docker 에 관련된 절차
CI 절차: Develop -> Test Java -> Build Java -> Build Docker Image -> Push
CD 절차: Pull -> Run
3개 타입의 인스턴스: (1) Local + (2) Github Actions / Jenkins + (3) Server
- Develop: (1) Local 에서 수행
- Test Java: (1) Local 혹은 (2) Github Actions / Jenkins 에서 수행
- Build Java: (1) Local 혹은 (2) Github Actions / Jenkins 에서 수행
- Build Docker Image: (1) Local 혹은 (2) Github Actions / Jenkins 에서 수행
- Push Docker Image from Registry: (1) Local 혹은 (2) Github Actions / Jenkins 에서 수행
- Pull Docker Image from Registry: (1) Local 혹은 (2) Github Actions / Jenkins 에서 수행
- Run Docker Image: (3) Server 에서 수행
Docker Image 업로드 방식: EC2에 Docker Image 올리는 2가지 방법
- SCP: Docker Image 결과 -> Tar로 압축 -> SCP (Secured Copy) 통해 EC2 로 전달 -> EC2 내 실행
- ECR: Docker Image 결과 -> ECR 업로드 -> EC2 내 ECR 로부터 다운로드 -> EC2 내 실행
- ECR 에 업로드된 빌드 이미지는
- ECS 를 통해 -> EC2와 연결하여 배포 파이프라인 구축 가능
- Terrafrom 을 통해 -> EC2 와 연결하여 배포 파이프라인 구축 가능
- Terrafrom Provisioner 를 통해 원하는 EC2 에 접속해서 그 안에 명령어 수행
- ECR 에 업로드된 빌드 이미지는
Build Docker Image and Push Docker Image to Registry (CI)
Docker Image Build
Dockerfile 정의를 통해 -> Docker Image 생성
- 먼저 Dockerfile 정의 = Instruction 집합
- Docker Image 내 우리가 실행할 프로그램(앱) + 앱을 구동할 엔진 + 구동을 보조해줄 Bins/Libs 정의
- 우리가 실행할 프로그램(앱) : JAR
- 앱을 구동할 엔진 : JRE or JDK 17
- 구동을 보조해줄 Bins/Libs 정의 : SSH 등
Docker Image 는 매 Instruction 마다 layer로 구성되며 이 중간 과정을 Cache해 놓는다.
Docker Image Push
생성한 Docker Image를 Docker Registry(도커 저장소, Docker Hub) 에 업로드
Docker Image를 만든후 Image를 업로드하려면 나만의 Docker Registry 가 있어야한다.
- Docker Hub에 계정을 만들고, 거기에 업로드하면 된다.
- AWS를 사용한다면 ECR 사용
Pull Docker Image from Registry and Run Docker Image on Host (CD)
Docker Image Pull
어플리케이션 실행하려는 서버 내 Docker Registry에서 Docker Image 다운로드하는 과정
Docker Image Run
어플리케이션 실행하려는 서버에서 다운 받은 Docker Image 실행 -> Image에서 Container가 되는 과정
728x90
'ASAC 웹 풀스택 > DevOps' 카테고리의 다른 글
[Github Action] Github Action 동작 원리 및 워크플로 파일 이해하기 (0) | 2024.10.29 |
---|---|
[Docker] best practices (1) | 2024.10.24 |
[Docker] Github Action으로 CI/CD - CD (1) | 2024.10.17 |
[Docker] Docker를 통한 어플리케이션 관리: 단일 / 다중 컨테이너 (0) | 2024.10.16 |
[Docker] Docker 사용하는 이유 (0) | 2024.10.16 |