무엇이 바뀌었는가
내부 코드
- v1 은 python으로 개발됨
- v2 는 Golang으로 개발! (from scratch!)
- standalone binary 파일이 아니라서 설치 방식이 v1과 좀 다름docker-compose → docker compose
- 명령어 사이에
-
없이 사용 가능 - v1과 v2의 compatibility를 위해
compose-switch
유틸 제공- docker-compose python 코드를 docker compose Golang으로 converting!
container 명명 방식 변경
- 언더스코어(_) 에서 하이픈 (-) 으로 변경
- container 이름 기준으로 스크립트를 개발하였다면,
-compatibility
옵션을 사용하여 에러가 발생하지 않도록 설정 가능
BuildKit supported by default
- v1에서는 default가 아니었음
- BuildKit?
- Dockerfile을 docker image로 변경해주는 open-source project
- docker image만 생성하는게 아니라 OCI image 나 다른 format의 output으로도 생성 가능
마스코트 이름 (공모중)
- 도커 모비딕 외에 docker compose도 마스코트가 있다는 사실...아셨나요?
- 현재 이 마스코트의 이름을 공모중이라고 합니다. 관심있으신 분은 여기서 참여해 보세요.
v1 → v2 업그레이드 이점
Docker CLI의 빠른! 새로운 기능 제공받을 수 있음
많은 기능들이 추가되었지만..요약하자면
- GPU machine support
- profiles 기능 추가 (자세한 내용: https://docs.docker.com/compose/profiles/ )
- 다양한 환경에 선택적으로 서비스를 활성화 할 수 있는 기능
profiles
설정이 없는 서비스는 항상 활성화 됨- 사용방법 ex)
docker compose --profile debug up
version: "3.9"
services:
frontend:
image: frontend
profiles: ["frontend"]
phpmyadmin:
image: phpmyadmin
depends_on:
- db
profiles:
- debug
backend:
image: backend
db:
image: mysql
docker compose ls
명령어가 이제 모든 compose app을 보여줌docker compose cp
명령어는 서비스 컨테이너 or 로컬 파일시스템 간에 파일이나 폴더를 복제할수있게 함
스무-스 한 배포 방식
- 클라우드 서비스와의 연동으로
compose up
만 하면 배포/실행 가능 - ex) 개발환경은 로컬, 운영은 ECS에서 한다면, Docker context switch만 하면 원하는 target 환경에 배포 가능
- 더 자세한 내용: https://github.com/docker/compose-cli
Docker 생태계에서의 아싸 탈출
- v1은 python으로 개발되어서 이전에는 docker 생태계에서 아싸였음
- Moby, the CLI 나 다른 Go 기반 프로젝트들의 코드를 사용할 수 있게 됨. (v1에서는 python 코드로의 변환이 필요했었음)
Compose binaries로 쉬운 업데이트, 의존성 관리
- 빨라집니다
- 제가 이 부분 내용 이해를 못했습니다. 번역해주실 분 구합니다
compose 파일 없이 명령어 실행
- container label로 프로젝트 실행 가능 (아래 예시)
--project-name
은-p
로 대체가능docker commpose --project-name [프로젝트-라벨] down
- 위와같이 docker-compose.yml 파일 이나 환경변수 없이
docker compose start/stop/pause/down/ps/exec…
명령어 실행 가능 - container label이 뭔가요? (아래 예시)
- 컨테이너 metadata, 여러 이미지/container 관리에 용이
build: context: . labels: com.example.description: "Accounting webapp" com.example.department: "Finance" com.example.label-with-empty-value: ""
- 컨테이너 metadata, 여러 이미지/container 관리에 용이
v1은 그럼 어떻게 되나요?
충분히 시간을 줄테니 v2로 옮기세요
- deprecated 로 설정
- 치명적인 vulnerability or 버그만 다음 마일스톤까지 패치
- v2 필수적으로 사용하지 않을 수 있도록 옵션 제공
- docker-compose disable-v2
EOL (=End-of-Life) 제안 기간
- 2022년 10월
- 운명인가요? 어떻게 딱 10월에 v2가 나온걸 알게된거지....
더 알고싶다면..
docker compose v2 문서: https://www.docker.com/blog/announcing-compose-v2-general-availability/
반응형
'DevOps > docker' 카테고리의 다른 글
🐳 Docker Desktop for Mac + JDK 17이 실행되지 않는 이유 deep dive! (1) | 2025.03.06 |
---|