Docker 컨테이너 연결

2370 단어 docker

문제



네트워크 호출을 통해 서로 통신하려면 여러 도커 컨테이너가 필요했습니다.

해결책



"BRIDGE & OVERLAY 네트워크 모드"사용

동일한 Docker 호스트에서 컨테이너 연결

브리지 네트워크 모드 - 동일한 브리지 네트워크에 연결된 컨테이너가 통신할 수 있도록 허용하는 동시에 해당 브리지 네트워크에 연결되지 않은 컨테이너로부터 격리를 제공합니다.

"브리지"라는 기본 브리지는 항상 호스트의 모든 컨테이너 간에 생성됩니다.

다른 Docker 호스트의 컨테이너 연결

오버레이 네트워크 모드 - 이 네트워크는 호스트별 네트워크 위에 위치하여 암호화가 활성화되었을 때 연결된 컨테이너가 안전하게 통신할 수 있도록 합니다.

네트워크에 추가하려는 각 컨테이너에 대해 docker-compose 파일에 다음을 추가합니다.

networks:
    - local //{network_name}

파일 끝에 다음을 추가하십시오.

networks:
local: // {network_name}
    driver: bridge

마지막으로 docker-compose는 다음과 같습니다.

local-redis:
    image: redis
    ports:
        - "6379:6379"
    volumes:
        - redis-data:/data
    networks:
        - local

local-mongo:
    image: mongo:3.2
    command: ["mongod", "--smallfiles"]
    ports:
        - "27017:27017"
    volumes:
        - mongo-data:/data/db
    networks:
        - local
networks:
local:
    driver: bridge

그리고 이것이 다른 도커 컨테이너를 호출하기 위해 네트워크 호출을 수행하는 방법입니다.

{container_name}:{container_port}
"mongo_url": "mongodb://local-mongo:27017/analytics""redis_host": "local-redis"

사이드 노트



컨테이너 포트 및 호스트 포트는 무엇입니까?

컨테이너 포트는 BRIDGE 또는 USER 네트워킹 모드를 사용할 때 컨테이너 내에서 사용되는 포트입니다.

호스트 포트는 바인드할 호스트 시스템의 포트를 지정합니다.

docker-compose 파일에서 다음과 같이 보입니다.

local-application:
    image: ...
    ports:
        - "7602:7600" //{hostPort}:{containerPort}

도커 코드 내부에서 다음과 같이 호출할 수 있습니다.
"app_url": "http://local-application:7600"
도커 외부(브라우저에서)에서 다음과 같이 호출할 수 있습니다.
http://localhost:7602/

참조



Networking Types

Docker Compose Ports

좋은 웹페이지 즐겨찾기