딸기말차

[MSA] 5. Docker 활용, Compose 본문

Bootcamp/MSA

[MSA] 5. Docker 활용, Compose

딸기말차 2023. 10. 11. 10:57

엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)

 

백엔드 개발 부트캠프

백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.

playdata.io


1.  멀티 스테이지를 통한 빌드 파일 비교

# 컨테이너 생성
docker run -it --name commit_test ubuntu:22.04

docker ps 로 확인한 컨테이너

# 생성한 도커 컨테이너 실행
docker start commit_test

# 컨테이너 내로 접근
docker attach commit_test

생성한 컨테이너로 접근

# 이미지 생성
docker commit -a 'encore' -m 'test' commit_test myimage:0.1

# 이미지를 통해 컨테이너 생성
docker run -it --name commit_test2 myimage:0.1

# 해당 이미지의 컨테이너 내에서 텍스트 생성 후 exit
echo "hi" > /root/a.txt

# commit_test2 컨테이너 내에 이미지 생성
docker commit -a 'encore' -m 'second' commit_test2 myimage:0.2

# 생성한 이미지들 확인
docker images

docker images로 생성한 이미지들 확인

# 상세 정보 확인
docker inspect myimage:0.1
docker inspect myimage:0.2

 

도커 이미지는 레이어 구조로 되어있다. 때문에 이미지의 버전을 올려 컨테이너를 생성한다면, 기존 이미지의 레이어에 한줄 추가하는 방식으로 생성된다.

myimage:0.1
myimage:0.2

# 멀티 스테이지
ENTRYPOINT [ "java", "-jar", "app-in-image.jar" ]
docker build -t multistage:0.1 .

Dockerfile 접근
멀티 스테이지

 

이미지의 용량을 가장 많이 차지하는 것은 build 파일인데, 이 용량을 최적화하기 위해 ENTRYPOINT 를 사용해 build에 필요한 jar 파일만 골라 도커 이미지를 빌드한다.

 

1.02GB 크기의 이미지
최적화를 통해 생성한 이미지


2.  Docker Compose

Docker Compose는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 묶어 실행할 수 있는 작업 환경을 제공하는 관리도구 이다.

# curl을 통해 인터넷에 접속해서 docker compose 다운로드
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  

# 다운받은 docker-compose에 실행권한을 준다.
sudo chmod +x /usr/local/bin/docker-compose

# ln : 바탕화면 아이콘을 만드는 것과 동일
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

ln 명령어의 경우 심볼릭 링크로, 윈도우 운영체제의 바로 가기 아이콘이라고 볼 수 있다.

즉, 링크로 생성된 파일에 내용이 존재하지 않고 각각의 i-node를 가진 또 다른 파일이 어디를 가리키고 있는지 알려주는 역할이다.

# PATH에 적힌 내용들은 하나의 공간에 있다. 즉, 어디에서 명령어를 치던 명령어를 치면 실행이 되게 도와준다.
echo $PATH

PATH 확인

# 해당 명령어가 어느 공간에 있는지 알려준다.
which curl

which 키워드를 통해 명령어 경로 확인

# docker compose 명령어 확인
docker compose

docker compose 옵션

# docker compose 설정 파일 생성
cd ~ && mkdir test2 && cd test2

설정정보를 기록할 yml 파일 생성

# docker-compose.yml 파일 생성
vim docker-compose.yml

docker-compose.yml

# docker-compose 백그라운드 실행 
docker-compose up -d

-d 옵션을 통해 백그라운드에서 실행
localhost:9000으로 접속해 실행한 docker-compose 확인

 

# 실행중인 docker-compose 중지
docker-compose down

docker-compose 중지


3. 52일차 후기

도커 이미지 파일을 만들 때, 이미지의 대부분의 용량은 build 폴더가 차지한다. 때문에 build 폴더의 용량을 최적화하는 것이 중요하다.

 

때문에 멀티 스테이지를 활용해 필요한 파일만 골라 빌드해 이미지의 용량을 줄여 생성해야하고, 이렇게 만든 이미지들을 한데 모아서 실행하기 위해 Docker Compose를 사용할 수 있다.

'Bootcamp > MSA' 카테고리의 다른 글

[MSA] 7. Docker 활용, ConfigServer  (0) 2023.10.13
[MSA] 6. Docker 활용, SQL 예제  (0) 2023.10.12
[MSA] 4. Docker 활용, Image Build  (0) 2023.10.10
[MSA] 3. Network  (1) 2023.10.05
[MSA] 2. Docker Image, Container  (0) 2023.09.27