programing

"docker composition"과 "docker composition"의 차이

stoneblock 2023. 9. 21. 20:03

"docker composition"과 "docker composition"의 차이


참고: 이 질문은 도커 문서가 업데이트되기 전에 작성되었습니다(이 질문이 업데이트된 이유입니다).차이점에 대한 문서를 지적하는 답변은 게시하지 말아주세요 :-)


는 를 .docker-compose, 하지만 그것이 또한 있다는 것을 알아차렸습니다.docker compose(대쉬 없이)
구글 검색을 통해 두 양식의 차이점을 빠르게 파악할 수 없었습니다.

누구라도 있나요?

docker compose의 도움말:

enter image description here

docker-compose의 도움말:

enter image description here

docker compose(공백 포함)은 나머지 도커 프로젝트와 함께 작곡을 Go로 마이그레이션하는 새로운 프로젝트입니다.가입니다.v2도커/compose 레포의 가지도커 데스크톱 사용자들에게 처음 소개되었기 때문에 리눅스의 도커 사용자들은 명령어를 보지 못했습니다.Go로 마이그레이션하는 것 외에도 composition-spec을 사용하며, 다시 쓰기의 일부는 동작 차이가 발생할 수 있습니다.

입니다.docker-compose되지 않고 /의 v1 , 이 v2 로.v2를 설치하려면 다음과 같이 하십시오.docker compose를 통해 의 CLI으로서를 할 수 docker-compose-plugin꾸러미의예를 들어, 데비안에서, 나는 달립니다.apt-get install docker-compose-plugin.


업데이트: 이 질문이 제기된 이후로 Linux 설치가 구성 v2를 포함하도록 도커에서 업데이트되었으며 도커 구성 v1은 더 이상 업데이트를 받을 수 없습니다.

도커의 캡틴 프로그램Brandon Mitchell가 이 문제에 대해github 문제에 대해 다음과 같이 답했습니다.

Docker/compose-cli 프로젝트는 Docker-cli Linux 패키지의 업스트림 릴리스에서는 사용할 수 없지만 Docker Desktop에는 포함되어 있습니다.일반적으로 설명서 페이지는 도커/cli에 있는 내용을 따르므로 이 내용을 데스크톱에 조기 공개하면 설명서가 곤란해집니다.도커 팀과 함께 이 문제를 제기하여 그들이 이 문제를 어떻게 처리하기를 원하는지 알아보겠습니다.

업데이트: 도커 깃허브 이슈에서:

gtardif가 2일전에 댓글을 달았습니다.

composition command reference doc이 지금 live입니다.

새 도커- compose 명령 참조

https://docs.docker.com/compose/ # compose-v2-그리고 새로운 docker-compose-명령어의 인용

Compose V2 and the new docker compose command
    Important
    The new Compose V2, 
which supports the compose command as part of the Docker CLI, is now available.

    Compose V2 integrates compose functions into the Docker platform, 
continuing to support most of the previous docker-compose features and flags. 
You can run Compose V2 by replacing the hyphen (-) with a space, 
using docker compose, instead of docker-compose.

여기서 이미 말한 것 외에도, 저는 그 둘 사이의 중요한 차이점을 발견했습니다.

우리의 설정에서,docker-compose.yml파일은 템플릿 폴더에 있습니다.이렇게 하면 동일한 템플릿을 기반으로 동일한 프로젝트의 여러 인스턴스를 실행할 수 있습니다.로컬 인스턴스에 고유한 폴더가 있습니다..env파일(및 자체 볼륨).

템플릿도 있습니다..env템플릿 폴더의 file : 스크립트를 사용하여 인스턴스 폴더에 복사 및 적용됩니다.

일을 하기 위해서는.docker-compose.yml파일은 템플릿 폴더에서 다음과 같이 나타납니다.

version: "3"

services:

  wordpress:
    image: wordpress
    container_name: "${COMPOSE_PROJECT_NAME}_wordpress"
    env_file:
      - ${PWD}/.env
 ...

그리고 지역 인스턴스는.env파일:

# compose file location
COMPOSE_FILE=../templateFolder/docker-compose.yml

# this instance name
COMPOSE_PROJECT_NAME=foo

이런 맥락에서:

  • 와 함께docker-compose,그.env파일을 인스턴스 위치에서 읽습니다. 이 위치는 예상됩니다.
  • 와 함께docker compose,그.env파일이 템플릿 위치에서 읽힙니다!

이를 무시하기 위해 템플릿 이름을 변경해야 했습니다..env줄로 늘어놓다dotEnv.

동작은 https://docs.docker.com/compose/features-uses/ #have-multiple-isolated-environments-on-a-single-host와 같이 매우 가볍게 설명됩니다.

후세를 위해 가벼운 설명은 다음과 같습니다.

Composition은 프로젝트 이름을 사용하여 환경을 서로 분리합니다. ...

기본 프로젝트 이름은 프로젝트 디렉토리의 기본 이름입니다. ...

기본 프로젝트 디렉토리는 Composite 파일의 기본 디렉토리입니다.사용자 지정 값은 --project-directory 명령줄 옵션을 사용하여 정의할 수 있습니다.

아직 포함되지 않은 경우docker설치,docker compose는 CLI 플러그인으로 Linux에 설치할 수 있습니다.

COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.tag_name')

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

https://docs.docker.com/compose/cli-command/ #설치 중- compose-v2 참조

변경을 원하지 않지만 원래 레거시를 원하는 경우docker-composeComposing 독립 실행형 vs. 라고도 알려진 기능.Compose plugin(플러그인 구성): 다음을 수행할 수 있습니다.

# Run as root
VERSION=v2.12.2
curl -SL https://github.com/docker/compose/releases/download/$VERSION/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

# Test it
docker-compose

이를 통해 계속 사용할 수 있습니다.docker-compose셸 스크립트에 포함되어 있습니다.

이 페이지에서 버전을 확인합니다.

이 둘 사이의 또 다른 주목할 만한 차이점은 도커 이미지 태그가 생성되는 방식입니다.두 명령 모두 이미지 태그는 COMPOSE_PROJECT_NAME envar(envar가 설정되지 않은 경우 project dir name)의 연결이고name작성 파일의 값입니다.나이든분들은docker-composeCOMPOSE_PROJECT_NAME에 밑줄을 붙여 이름을 추가하지만 새로 추가됩니다.docker compose명령어는 하이픈/으로 둘을 추가합니다.-

작성 파일을 고려합니다.

services:
  web:
    build: ./webapp

이 합성 파일이 my_proj 디렉토리에 있다고 가정하면 빌드 명령은 다른 이미지 태그를 생성합니다.

docker-compose build web생성할 것입니다.docker.io/library/my_proj_web

docker compose build web생성할 것입니다.docker.io/library/my_proj-web

언급URL : https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose