컨테이너 네트워크
컨테이너 네트워크의 특징
동일한 서비스를 여러 개 띄워도 포트 충돌 없이 사용할 수 있다. 예를 들어 웹 서비스를 제공하는 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
port 매핑 확인하기
podman port -a
POD 네트워크 다시 불러오기
쓸일은 사실 많지 않지만 HOST OS의 네트워크가 변경 되었다던지 하는 경우 사용한다.
podman network reload
POD 네트워크의 설정정보 확인
설치 시 기본으로 제공되는 컨테이너 네트워크는 podman 이다.
podman network inspect <네트워크 이름>
podman network inspect podman