도커 컨테이너는 서로 격리되어 있어 서로 액세스할 수 없다는 사실을 모두 알고 있지만 종속 서비스가 있는 경우 어떻게 해야 할까요? 다음은 컨테이너 상호 접근 문제를 해결하기 위한 세 가지 방법을 설명합니다.
방법 1, 가상 IP 접속
docker를 설치하면 docker는 기본적으로 내부 브리지 네트워크 docker0을 생성합니다. 생성된 각 컨테이너에는 가상 네트워크 카드가 할당되며, 컨테이너는 IP를 기반으로 서로 접속할 수 있습니다.
[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig ...... docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:35ff:feac:66d8 prefixlen 64 scopeid 0x20<link> ether 02:42:35:ac:66:d8 txqueuelen 0 (Ethernet) RX packets 4018 bytes 266467 (260.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4226 bytes 33935667 (32.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ......
방법 2, 링크
컨테이너 실행 시 매개변수 링크 추가
첫 번째 컨테이너 실행
docker run -it --name centos-1 docker.io/centos:latest
두 번째 컨테이너 실행
[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest
--link: 매개변수의 첫 번째 centos-1은 컨테이너 이름, 즉 두 번째 centos-1은 정의된 컨테이너 별칭입니다(별칭을 사용하여 컨테이너에 액세스). 사용 편의성을 위해 일반적으로 별칭의 기본값은 컨테이너 이름입니다.
테스트 결과는 다음과 같습니다.
[root@e0841aa13c5b /]# ping centos-1 PING centos-1 (172.17.0.7) 56(84) bytes of data. bytes from centos-1 (172.17.0.7): icmp_seq=1 ttl=64 time=0.210 ms bytes from centos-1 (172.17.0.7): icmp_seq=2 ttl=64 time=0.116 ms bytes from centos-1 (172.17.0.7): icmp_seq=3 ttl=64 time=0.112 ms bytes from centos-1 (172.17.0.7): icmp_seq=4 ttl=64 time=0.114 ms
방법 3. 브리지 네트워크 생성
1. docker를 설치한 후 다음 명령을 실행하여 브리지 네트워크를 생성합니다. docker network create testnet
새로 생성된 브리지 테스트넷을 쿼리합니다.
2. 컨테이너를 실행하고 테스트넷 네트워크에 연결합니다.
사용법: docker run -it --name
[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest [root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest
3.
[root@fafe2622f2af /]# ping centos-1 PING centos-1 (172.20.0.2) 56(84) bytes of data. bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms
더 많은 관련 튜토리얼을 보시려면 PHP 중국어 홈페이지의 docker tutorial 칼럼을 참고해주세요.
위 내용은 Docker에서 컨테이너 간 접근 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!