Docker 네트워크 관리 및 컨테이너 IP 설정을 기본 지식으로 사용하여 nginx 로드 밸런싱 구현
모든 Docker 네트워크 보기
docker network ls /* network id name driver scope b832b168ca9a bridge bridge local 373be82d3a6a composetest_default bridge local a360425082c4 host host local 154f600f0e90 none null local */ // composetest_default 是上一篇介绍compose时,docker-compose.yml文件所在的目录名, // 所以,用docker-compose创建的容器会默认创建一个以目录名为网络名的网络,并且是dridge(桥接)类型
컨테이너 IP 주소 지정
version: "3" services: web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: 192.169.0.3 web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: 192.169.0.2 networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16
docker-compose를 사용하여 컨테이너 시작
docker-compose up -d
컨테이너가 nginx-lsb 네트워크가 생성되었는지 확인
// 可以查看当前docker-compose.yml配置的容器组里的容器状态 docker-compose ps docker network ls /* network id name driver scope b832b168ca9a bridge bridge local 373be82d3a6a composetest_default bridge local de6f5b8df1c8 composetest_nginx-lsb bridge local a360425082c4 host host local 154f600f0e90 none null local */ // 创建了nginx-lsb网络,命名是容器组项目的 文件名开头_网络名
네트워크 nginx-lsb의 세부정보 보기
docker network inspect composetest_nginx-lsb // 详情里面可以看到使用这个网络的每个容器的ip 如: /* ... "containers": { "039aa860ef04f20a7566fdc943fb4398a61d2ad6dd3e373b17c86ac778af89e3": { "name": "web2", "endpointid": "1bc206661179e65999015f132c2889d3d4365b8d42b8a89cf9c260016fedd5ee", "macaddress": "02:42:c0:a9:00:02", "ipv4address": "192.169.0.2/16", "ipv6address": "" }, "437ad7a07da8e46c0abaf845c4b08425338009fbe972bde69478cf47c75c315b": { "name": "web1", "endpointid": "5a36e602a5364ee9ad06e9816d09e3966d56ebf06b9394ebc25b8bcee9546607", "macaddress": "02:42:c0:a9:00:03", "ipv4address": "192.169.0.3/16", "ipv6address": "" } }, ... */
env_file 환경 파일 사용:
다음과 같이 쉽게 이해할 수 있습니다: docker-compose에서 변수 정의 .yml을 생성하고 외부 .env 파일에서 참조합니다. 변수 정의
공식 문서 주소:
// 还是在composetest目录中定义个 .env文件,用来存放变量 web1_addr=192.169.0.2 web2_addr=192.169.0.3 // 修改docker-compose.yml文件,加入变量定义 version: "3" services: web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web1_addr} web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web2_addr} networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16
composetest 프로젝트를 다시 시작하고 네트워크 세부 정보를 확인하여 컨테이너 IP가 성공적으로 설정되었는지 확인하세요.
// 重新启动composetest项目 docker-compose up -d // 查看网络详情 docker network inspect composetest_nginx-lsb
nginx 서버를 a로 추가하세요. composetest 프로젝트의 로드 밸런싱 서버
// 在.env文件里添加一个变量 nginx_lsb web1_addr=192.169.0.2 web2_addr=192.169.0.3 nginx_lsb=192.169.0.100 // 修改docker-compose.yml文件,加入变量定义 version: "3" services: nginx-lsb: container_name: nginx-lsb image: "centos:nginx" ports: - "8000:80" privileged: true volumes: - "/app/nginx/nginx.conf:/etc/nginx/nginx.conf" networks: nginx-lsb: ipv4_address: ${nginx_lsb} web1: container_name: web1 image: "centos:httpd" ports: - "8080:80" privileged: true volumes: - "/app/www/web1/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web1_addr} web2: container_name: web2 image: "centos:httpd" ports: - "8081:80" privileged: true volumes: - "/app/www/web2/:/var/www/html/" command: ['/usr/sbin/init'] networks: nginx-lsb: ipv4_address: ${web2_addr} networks: nginx-lsb: driver: bridge ipam: config: - subnet: 192.169.0.0/16 // 重新启动composetest项目 docker-compose up -d
nginx.conf 구성 파일 수정, 로드 밸런싱 구성
upstream mydocker { server 192.169.0.2; server 192.169.0.3; } server { listen 80; server_name mydocker; location / { proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_buffering off; proxy_pass http://mydocker; } }
nginx-lsb 재시작, 구성 파일 로드
docker-composer restart nginx-lsb
http://서버 IP 주소:8000 방문, 서버 로드 밸런싱 테스트 !
위 내용은 Docker의 Compose를 사용하여 nginx 로드 밸런싱을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!