보람찬 코기의 개발자 블로그
article thumbnail
반응형

인턴을 하면서 오픈소스에 해당 주제에 대한 참조 및 학습을 진행 후 작성하였습니다.

 

docker

 

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

반응형
profile

보람찬 코기의 개발자 블로그

@BoChan

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!