인턴을 하면서 오픈소스에 해당 주제에 대한 참조 및 학습을 진행 후 작성하였습니다.
What is docker-compose ?
- python으로 작성된 기능이다. (git branch -> V1.x)
- pip install docker-compose 로 설치
- 23년 6월 부로 지원 만료되었다 (더 이상 사용되지 않는다)
What is docker compose ?
- Go language로 작성 (git branch -> V2.x)
- 기능을 추가하여 새로 작성
- apt-get install docker-compose-plugin (커맨드 만 살펴봐도 차이점을 알 수 있다)
- python project에서 Linux-CLI(Command Line Interface) 프로젝트로 확장
- 루트 명령에서 모든 공유 플래그를 사용할 수 있다. (아래 예시)
- [ docker --log-level=debug --tls compose up ] // TLS(Traffic Layer Security) 활성화 및 디버그 로그레벨 설정하고 컨테이너를 시작하는 명령어, --log는 작동중인 컨테이너 및 도커 자체의 동작에 대한 로그 생성
Compose-Spec을 사용하며, 일부분이 재작성되었기 때문에 동작 차이가 발생할 수 있다.
- It's been first introduced to Docker Desktop users, so docker users on Linux didn't see the command. In addition to migrating to Go, it uses the compose-spec, and part of the rewrite may result in behavior differences.
Diffrenece
YAML 파일 작성법이 살짝 다르다.
파일 포맷 버전 지정:
- 버전 1: YAML 파일의 맨 위에 version 키를 사용하여 버전을 명시하지 않습니다. 기본적으로 버전 1로 간주됩니다.
- 버전 2: version 키를 사용하여 파일 포맷의 버전을 명시합니다. 예를 들어, version: '2'와 같이 지정합니다.
서비스 정의:
- 버전 1: services 섹션 내에서 각 서비스는 이름 없이 키-값 형태로 정의됩니다. 예를 들어, web: image: nginx:latest와 같이 서비스를 정의합니다.
- 버전 2: 각 서비스는 이름으로 명명된 하위 섹션으로 정의됩니다. 예를 들어, services: 아래에 web: 섹션을 만들고 그 안에 image: nginx:latest와 같이 서비스를 정의합니다.
환경 변수 설정:
- 버전 1: 각 서비스의 환경 변수는 리스트 형태로 정의되며, environment 키를 사용하여 설정합니다. 예를 들어, - MYSQL_ROOT_PASSWORD=secret와 같이 정의합니다.
- 버전 2: 환경 변수는 environment 키 아래에 하위 섹션으로 정의됩니다. 예를 들어, environment: 아래에 MYSQL_ROOT_PASSWORD: secret와 같이 정의합니다.
네트워크 정의:
- 버전 1: 네트워크 설정은 networks 섹션 내에서 정의됩니다.
- 버전 2: 네트워크는 networks 키 아래에 하위 섹션으로 정의됩니다.
볼륨 정의:
- 버전 1: 볼륨 설정은 volumes 섹션 내에서 정의됩니다.
- 버전 2: 볼륨은 volumes 키 아래에 하위 섹션으로 정의됩니다.
이외 다른 차이점은, 도커의 이미지 태그가 생성되는 방식이 큰 차이점이다.
두 명령 모두 이미지 태그는 COMPLE_PROJECT_NAME 환경 변수(환경 변수가 설정되지 않은 경우 프로젝트 dir 이름)와 구성 파일의 이름 값의 연결입니다.
services:
web:
build: ./webapp
- docker-compose build web을 실행시키면
- docker.io/library/my_proj_web
- docker compose build web을 실행시키면
- docker.io/library/my_proj-web 로 이미지 태그가 ' / '(대시) 와 ' - '(하이픈) 으로 설정된다.
In Common
- 공통점은 아래 명령어로 버전에 상관없이 작동하는 것이다.
docker-compose up -d --build
결론: 오픈소스에서 명시되어 도커 구버전을 굳이 사용해야하는 경우가 아니라면, 새로 빌드하거나 웬만하면 V2 의 최신 기능을 사용하자.
용어 : TLS(Traffic Layer Security) : Docker CLI와 Docker 데몬 간 통신을 보안하기 위해 사용되는 프로토콜로서 인터넷 통신에서 데이터 전송 중에 보안과 암호화를 제공.
[ref]
[docker docs] https://docs.docker.com/compose/migrate/
[stackoverflow] https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose
'Docker_도커' 카테고리의 다른 글
[Docker] 도커에서 Ollama를 통해 llama3.1 8B 구동하기 (3) | 2024.11.07 |
---|---|
[Docker] Ubuntu에서 도커 완전 삭제 (0) | 2023.07.11 |
[Docker/도커] 도커 엔진(Docker Engine)의 명령어(Commands) 및 실습 (0) | 2023.02.10 |
[Docker/도커] 도커 설치 및 간단한 실습 (0) | 2023.01.27 |
[Docker/도커] 도커란 무엇인가? (0) | 2023.01.25 |