딸기말차
[MSA] 5. Docker 활용, Compose 본문
엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)
백엔드 개발 부트캠프
백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.
playdata.io
1. 멀티 스테이지를 통한 빌드 파일 비교
# 컨테이너 생성
docker run -it --name commit_test ubuntu:22.04
# 생성한 도커 컨테이너 실행
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 inspect myimage:0.1
docker inspect myimage:0.2
도커 이미지는 레이어 구조로 되어있다. 때문에 이미지의 버전을 올려 컨테이너를 생성한다면, 기존 이미지의 레이어에 한줄 추가하는 방식으로 생성된다.
# 멀티 스테이지
ENTRYPOINT [ "java", "-jar", "app-in-image.jar" ]
docker build -t multistage:0.1 .
이미지의 용량을 가장 많이 차지하는 것은 build 파일인데, 이 용량을 최적화하기 위해 ENTRYPOINT 를 사용해 build에 필요한 jar 파일만 골라 도커 이미지를 빌드한다.
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
# 해당 명령어가 어느 공간에 있는지 알려준다.
which curl
# docker compose 명령어 확인
docker compose
# docker compose 설정 파일 생성
cd ~ && mkdir test2 && cd test2
# docker-compose.yml 파일 생성
vim docker-compose.yml
# docker-compose 백그라운드 실행
docker-compose up -d
# 실행중인 docker-compose 중지
docker-compose down
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 |