컨테이너 네트워크
컨테이너 네트워크의 특징
동일한 서비스를 여러 개 띄워도 포트 충돌 없이 사용할 수 있다. 예를 들어 웹 서비스를 제공하는 apache와 nginx를 동시에 띄운다던가, nignx를 여러 개 띄워 각기 다른 web app을 제공하는 등 다양한 활용이 가능하다. 이렇게 실행 된 웹 서버는 모두 80번, 또는 443 포트를 사용할 수 있다.
다만, 이렇게 각기 실행 된 웹서버에 접속하려면 reverse proxy를 사용하거나, 혹은 각기 다른 HOST port를 할당 해 주어야 한다.
예제) 1번 POD 8080, 2번 POD 8081 등
1. Docker 네크워크
docker의 네트워크 옵션과 그 속성
docker에서 포트를 사용하는 경우 아래 4가지 선언 방식이 있는데, 각기 작동이 상이하다.
1. EXPOSE나 -p 둘다 선언하지 않는 경우
2. EXPOSE만 선언하는 경우
3. EXPOSE와 -p를 모두 선언한 경우
4. -p만 선언한 경우
경우 1
이 경우 해당 서비스는 오직 해당 POD 내부에서만 접속할 수 있다.
예를 들어, 하나의 POD 안에 여러 컨테이너가 포함되어있고, 내부에서 이 컨테이너끼리만 통신하면 되는 경우가 이 경우에 해당할 것이다.
경우 2 --expose
이 경우에 호스트 네트워크에서는 이 포트가 보이지 않는다. 오직 POD 사이에서만 포트가 인식 되며, POD 사이에서 통신이 가능해진다. 조금 더 기술적으로 이야기 하자면 expose는 127.0.0.1에 대한 포트이다.
경우 3 --publish-all
HOST 네트워크는 물론, POD 네트워크에서도 접속이 된다.
경우 4 --publish (-p)
HOST 네트워크를 경유해서만 접속이 가능하다. 이는 POD간 통신에서도 동일하다.
2. PODMAN 네트워크
podman은 docker 네트워크와는 달리 expose는 POD를 만들 때 외부랑 연결 되는 포트를 선언할 때만 쓰인다.
기본적으로 publish만 작동한다고 생각하면 된다. 또한 podman에서 기본적으로 모든 네트워크 명령은 rootfull 컨테이너에만 적용되고 사용할 수 있다.
podman network ls podman port -a POD 네트워크 다시 불러오기 쓸일은 사실 많지 않지만 HOST OS의 네트워크가 변경 되었다던지 하는 경우 사용한다. podman network reload목록 보기
port 매핑 확인하기
리로드podman network reload
POD 네트워크의 설정정보 확인
설치 시 기본으로 제공되는 컨테이너 네트워크는 podman 이다.
podman network inspect <네트워크 이름>
podman network inspect podman