몇 가지 정의부터 시작하는 것이 도움이 될 것입니다.
- docker-compose : 관련 컨테이너 그룹을 구성하고 관리하는 데 사용되는 명령입니다. docker cli에서 사용하는 것과 동일한 API에 대한 프런트 엔드이므로
docker run
.
- docker-compose.yml : docker-compose 및 이제 swarm 모드에서 사용되는 컨테이너 그룹에 대한 정의 파일입니다.
- swarm 모드 : Docker 엔진 그룹을 단일 엔티티로 관리하고 오케스트레이션을 제공하는 데 사용됩니다 (현재 상태와 대상 상태 간의 차이를 지속적으로 수정하려고 시도 함).
- 서비스 : 스웜 내에서 동일한 이미지 및 구성에 대한 하나 이상의 컨테이너, 여러 컨테이너가 확장 성을 제공합니다.
- stack : 스웜 내의 하나 이상의 서비스. DAB 또는 docker-compose.yml 파일을 사용하여 정의 할 수 있습니다.
- 브리지 네트워크 : 여러 컨테이너가 서로 통신 할 수있는 단일 도커 엔진에 의해 관리되는 네트워크입니다. 엔진에 의해 관리되는 여러 네트워크가있을 수 있으며 컨테이너는 0 개 이상의 네트워크에 연결될 수 있습니다.
- 오버레이 네트워크 : 브리지 네트워크와 유사하지만 여러 도커 엔진에 걸쳐 있습니다. 상태를 유지하려면 키 / 값 저장소가 필요합니다. Swarm 모드는이를 제공하지만 swarm 모드가 비활성화 된 경우 etcd, consul 또는 zookeeper를 사용할 수도 있습니다.
- links : 브리지 된 네트워크보다 먼저 컨테이너를 연결하는 방법입니다. 더 이상 사용하지 않는 것이 좋습니다.
- 클래식 스웜 : 컨테이너로 실행되는 통합 스웜 모드의 이전 버전으로 여러 엔진을 하나로 표시 할 수 있지만 오케스트레이션을 제공하지 않거나 자체 k / v 저장소를 포함하지 않습니다.
질문에 답하려면 :
docker-swarm이 docker-compose에 성공했으며 오버레이 네트워크는 컨테이너를 연결하는 새로운 (권장) 방법입니까?
또는 docker-compose는 여전히 전체 docker 제품군의 필수 부분이며 컨테이너를 연결하여 협업하는 데 사용하는 것이 예상되고 권장됩니다. 그렇다면 docker-compose는 떼의 여러 노드에서 컨테이너와 함께 작동합니까 ??
그들은 다른 기능을 제공하며 둘 다 계속해서 목적을 제공합니다. docker-compose는 swarm 모드 내에서 컨테이너를 시작할 수 없지만 docker-compose 자체를 사용하지 않고 swarm 모드에서 직접 스택을 정의하는 데 최신 버전의 docker-compose.yml 파일 (버전 3)을 사용할 수 있습니다. docker-compose는 스웜 모드 외부, 단일 도커 엔진 또는 클래식 스웜으로 컨테이너를 관리하는 데 필요합니다.
아니면 오버레이 네트워크가 떼의 다른 호스트에 걸쳐 컨테이너를 연결하기위한 것이고 docker-compose는 내부 링크를 생성하기위한 것입니까 ??
게다가 도커 문서에서 --links는 더 이상 권장되지 않으며 곧 폐기 될 것이라고 언급되어 있습니다.
yml 파일의 버전 2로 시작하는 docker-compose는 기본적으로 프로젝트 당 새로운 브리지 네트워크를 사용하여 여러 컨테이너를 연결합니다 (프로젝트의 기본값은 디렉토리 이름입니다). 클래식 스웜의 경우 기본적으로 외부 k / v 저장소를 사용하는 오버레이 네트워크로 설정됩니다. 그리고 스웜 모드 스택을 사용하면 오버레이 네트워크가됩니다.
Docker 네트워크를 사용하는 것이 컨테이너가 서로 통신하도록하는 데 선호되는 방법입니다. 나머지 Docker 환경에서 격리하려는 컨테이너 그룹당 네트워크가 필요합니다. docker-compose는이 네트워크 생성을 자동화하지만 명령 줄에서 docker networks create
.
연결은 DNS 검색이 내장 된 도커 네트워크로 대체되었습니다. docker-compose.yml에서 링크를 제거 할 때 depends_on
컨테이너 시작 순서를 적용하기 위해 해당 링크를 섹션으로 바꿔야 할 수 있습니다 . 그렇지 않으면 링크가 의미있는 시나리오가 거의 없으며 내가 본 모든 사용법은 오래된 문서를 따르는 사람의 것입니다.