현대 소프트웨어 개발에서 Docker는 개발자가 다양한 환경에서 개발, 테스트 및 배포할 수 있도록 하는 매우 인기 있는 가상화 기술이 되었습니다. Docker의 중요한 특징은 서로 다른 호스트에서 실행될 수 있다는 것입니다. 따라서 다중 호스트 환경에서 Docker 간의 통신을 구현하는 방법이 화제가 되었습니다.
이 기사에서는 다음을 포함하여 다양한 Docker 호스트 간의 통신을 구현하는 방법을 소개합니다.
1. Docker 네트워크의 개념과 특징
Docker에서 네트워크는 다양한 컨테이너에 통신 기능을 제공하는 독립적인 하위 시스템입니다. Docker 네트워크의 중요한 기능은 서로 다른 네트워크의 서로 다른 컨테이너를 격리하는 것이며 컨테이너 간의 통신은 네트워크를 통해 이루어져야 합니다. 일반적인 Docker 네트워크 유형은 다음과 같습니다.
Docker에서는 맞춤형 네트워크를 통해 서로 다른 컨테이너 간의 통신도 가능합니다.
2. 동일한 호스트에서 실행되는 Docker 컨테이너의 통신 방법
동일한 호스트에서 실행되는 Docker 컨테이너 간의 통신은 가장 쉽게 달성할 수 있습니다. 기본적으로 Docker 브리지 네트워크는 IP 주소를 통해 모든 컨테이너 간의 통신을 허용합니다. 따라서 동일한 호스트에 있는 서로 다른 컨테이너 간의 통신은 해당 컨테이너의 IP 주소만 사용하면 됩니다.
Docker에서는 다음 명령을 사용하여 실행 중인 컨테이너의 IP 주소를 볼 수 있습니다.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>
동일한 호스트에 있는 Docker 컨테이너 간 통신을 위한 샘플 코드는 다음과 같습니다.
import requests response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
3. 다른 컨테이너에서 Docker 컨테이너를 실행합니다. 호스트 통신 방법
다른 Docker 컨테이너가 다른 호스트에서 실행되면 더 이상 동일한 네트워크에 속하지 않기 때문에 컨테이너의 IP 주소를 통해 통신할 수 없습니다. 따라서 이들 간의 통신을 위해서는 다른 수단을 사용해야 합니다.
Docker에서는 다음 두 가지 방법으로 여러 호스트의 컨테이너 통신을 수행할 수 있습니다.
포트 매핑을 사용하기 위한 샘플 코드는 다음과 같습니다.
import requests response = requests.get('http://<host_ip>:<mapped_port>/<api_endpoint>')
오버레이 네트워크를 사용하여 다른 호스트의 컨테이너를 연결하는 경우 다음 단계를 수행해야 합니다.
docker swarm init
;docker swarm init
;docker network create -d overlay <network_name>
;docker service create --name <service_name> --network <network_name> <image_name>
docker network create -d overlay <network_name>
;오버레이 네트워크에서 컨테이너 시작: docker 서비스 생성 - -name <service_name> --network <network_name> <image_name></image_name></network_name></service_name>
.
import requests response = requests.get('http://<container_ip>:<port>/<api_endpoint>')4. Docker Compose를 사용하여 여러 컨테이너의 통신을 관리합니다. Docker Compose는 여러 Docker 컨테이너를 관리하는 도구입니다. YAML 파일 여러 컨테이너의 시작 방법 및 매개변수를 정의합니다. Docker Compose에서는 컨테이너 간 통신 방법을 YAML 파일로 구성할 수 있습니다. 다음은 Docker Compose를 사용하여 여러 컨테이너 간의 통신을 관리하기 위한 샘플 YAML 코드입니다.
version: '3' services: db: image: mysql:5.7 environment: MYSQL_DATABASE: 'mydb' MYSQL_USER: 'root' MYSQL_PASSWORD: 'root' MYSQL_ROOT_PASSWORD: 'root' volumes: - ./db:/var/lib/mysql ports: - '3306:3306' networks: - my-network web: build: . ports: - "5000:5000" volumes: - .:/code networks: - my-network depends_on: - db networks: my-network:위 예에서는 "my-network"라는 네트워크를 정의하여 db 컨테이너와 웹 컨테이너가 동일한 가상 네트워크에 연결됩니다. , 포트 매핑을 사용하여 MySQL의 3306 포트를 호스트의 3306 포트에 매핑합니다. 요약🎜🎜이 글의 소개를 통해 여러분은 서로 다른 Docker 호스트 간의 통신 방법을 마스터하셨을 것입니다. 동일한 호스트의 컨테이너 통신의 경우 컨테이너의 IP 주소만 사용해야 하며, 다른 호스트의 컨테이너 통신의 경우 포트 매핑 및 오버레이 네트워크를 사용할 수 있습니다. 또한 Docker Compose를 사용하면 여러 컨테이너 간의 통신을 더 쉽게 관리할 수 있습니다. 🎜
위 내용은 Docker 간 통신을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!