2017-05-03 19 views
8

nginx-proxy 컨테이너를 설정하여 특수 포트 대신 포트 80의 하위 도메인을 통해 다른 컨테이너에 액세스하려고했습니다. 당신이 짐작할 수 있듯이, 나는 그것을 작동시키지 못했습니다.docker-compose v2를 사용하여 기본 브리지 네트워크에 가입하는 방법은 무엇입니까?

나는 도커 자체에 새로운 것이므로 docker-compose.yml 파일을 작성하는 것이 더 편하다는 것을 알았으므로 계속적으로 긴 문자를 쓸 필요가 없습니다. docker run ... 명령. 컨테이너를 시작하는 방법에 차이가 없다고 생각했는데 docker 또는 docker-compose 중 하나입니다. 그러나 내가 알아챈 한가지 차이점은 콘테이너를 docker으로 시작한다고해서 새로운 네트워크가 생성되는 것이 아니라 docker-compose으로 그 이후에 xxx_default 네트워크가 생길 것입니다.

다른 네트워크의 컨테이너가 서로 액세스 할 수 없으며 nginx-proxy가 요청을 다른 컨테이너로 전달하지 않는 이유 일 수 있습니다. 그러나 docker-compose.yml 파일을 구성하여 새로운 네트워크를 만들지 않고 대신 docker run 같은 기본 브리지 네트워크에 가입하는 방법을 찾지 못했습니다.

나는 다음을 시도하지만, 나는이 같은 시스템 네트워크에 가입 할 수 없다는 오류가 발생했습니다 :

networks: 
    default: 
    external: 
     name: bridge 

가 나는 또한 network_mode: bridge을 시도하지만 어떤 차이를 보이지 않았다.

docker-compose.yml 파일을 작성하여 새 네트워크를 만들지 않으려면 어떻게해야합니까? 그렇지 않을 수도 있습니다.

보너스 질문 : 내가 알아야 할 dockerdocker-compose 사이에 다른 차이점이 있습니까?

+0

[V1 포맷 (https://docs.docker.com/compose/compose-file/compose-file-v1/)는 파일을 생성하지 않을 것이다 작성 새로운 네트워크를 만들지 만 기본 브리지의 다른 컨테이너와 통신하기 위해'links'를 설정해야합니다. – Matt

+0

v1은 향후 제공 될 예정이므로 해당 사용을 피해야합니다. – Rawkode

+0

예, 버전 2 형식을 사용하고있었습니다. 힌트를 가져 주셔서 감사합니다. – noone

답변

16

docker-compose.yml의 각 서비스에 network_mode: bridge을 추가하면 작성이 중단됩니다.

서비스가이 브리지 (또는 호스트)로 구성되어 있지 않으면 네트워크가 만들어집니다.

는 검사로 확인 :

version: "2.1" 

services: 
    app: 
    image: ubuntu:latest 
    network_mode: bridge 
+0

아, 그게 문제 일 수도 있습니다. 나는이 서비스 중 하나에 만 추가했다고 생각합니다. 나중에 다시 시도해보고 문제가 해결되는지 확인합니다. – noone

+0

여기를보고 깜빡했는데 ... 사실 문제였습니다. :) – noone

+0

이것은 발견을 어지럽 힙니다. 그래서 서로 대화 할 용기가 1 개 이상이라면 작동하지 않습니다. –