나는 도커에 익숙하지 않고 모든 응용 프로그램을 단일 서버에 묶었습니다. 지금까지 모든 것이 잘 작동합니다. 그러나, 나는 하나의 것을 이해하지 못한다. 나는 도커 - 작성 (모든 프로젝트에 아직 도커 파일을 만들지 않았 음)을 사용하고 있으며이 도우커 - 구성에이 ports
속성이 있습니다. 나는 이런 식으로 뭔가를 작성하는 경우 :다시 시작하면 도커 컨테이너 IP가 변경됩니까?
ports:
8085:80
그것은 내 서버에 액세스 할 수있는 외부 세계를 의미한다 0.0.0.0:8085 수신합니다.
는ports:
172.17.0.1:8085:80
이 크지 인 만 172.17.0.1:8085 수신합니다 : 약간의 토론 후와 구글-ING, 나는 내 고정 표시기 브리지 네트워크에서 IP 주소를 가지고 쉽게 포트 매핑을 할 수 있다는 것을 발견 그것은 단지 내부적으로 듣고 있으며, nginx 프록시는 필요한 포트로 트래픽을 프록시합니다. (예 : proxy_pass http://172.17.0.1:8085
). 도커에 대해 더 많이 알고 그 작동 방식을 이해 한 후에 모든 컨테이너에는 해당 주소에만 노출 된 포트가있는 자체 IP 주소가 있다는 것을 알았습니다. 예를 들어 내 "웹"컨테이너 중 하나에 IPv4 주소가 172.17.0.10이고 포트 80이 노출되어 있습니다. 이 컨테이너 중 하나에서 docker inspect
을 수행하면 컨테이너의 IP 주소가 표시됩니다.
이제이 nginx에서이 IP 주소를 사용하고 싶습니다. proxy_pass http://172.17.0.1:8085
대신 http://172.17.0.10
을하고 싶습니다. 필자는 개인적으로 이것이 매우 우아한 인터페이스라고 생각하지만 저에 관한 한 가지가 있습니다. 내 컴퓨터를 다시 시작하면 어떻게됩니까? 모든 컨테이너는 어떤 종류의 순서로 시작됩니다. 5 개의 웹 컨테이너가 있고 임의의 순서로 시작하면이 컨테이너에 대한 IP가 동일하게 유지 될 수 있습니까? 아니면 바꿀 것인가? nookx에서 docker-compose에 항상 ports
을 사용해야합니까? 그렇다면 동일한 IP를 가진 다른 포트 대신 컨테이너마다 다른 IP를 어떻게 가질 수 있습니까? 다른 docker 네트워크 인터페이스 (서브넷 172.17.1.0에서 보자)를 작성하고 해당 인터페이스의 다른 IP를 노출 된 "공개"포트에 할당해도 괜찮습니까? 이 말은 기본적으로 하나의 컨테이너에 172.17.1.1:80:80
을 사용하고 또 다른 컨테이너에는 172.17.1.2:80:80
을 사용하는 것을 의미합니다.