veth : 가상 이더넷
docker0 : 여러 Docker 컨테이너들의 eth와 호스트 eth를 연결지어 주는 브릿지 네트워크
$ docker run -p [Host IP:HOST]:[CONTAINER PORT] [container]
# nginx 컨테이너의 80번 포트를 호스트 모든 IP의 80번 포트와 연결하여 실행
$ docker run -d -p 80:80 nginx
# nginx 컨테이너의 80번 포트를 호스트 127.0.0.1 IP의 80번 포트와 연결하여 실행
$ docker run -d -p 127.0.0.1:80:80 nginx
# nginx 컨테이너의 80번 포트를 호스트의 사용 가능한 포트와 연결하여 실행
$ docker run -d -p 80 nginx
expose: 문서화 용도
$ docker run -d --expose 80 nginx
publish: 실제 포트를 바인딩
$ docker run -d -p 80 nginx
container network model에 따라 Native Driver/Remote Driver로 나뉜다.
단일/다중 호스트에 동작하느냐에 따름
$ docker run -it --net none ubuntu:focal
root@34ef872980b1:/#
해당 컨테이너가 네트워크 드라이버가 필요없을 때 또는 커스텀 네트워크 설정하고 싶을 때 사용한다.
docker가 기본으로 제공해주는 veth를 사용하지 않고 직접 호스트 네트워크에 붙여서 쓰고 싶을 때 사용
$ docker run -d --network=host grafana/grafana
# aaa라는 브릿지 네트워크 드라이버 생성
$ docker network create --driver=bridge aaa
# net-alias 옵션은 브릿지에서만 사용할 수 있으며, 네트워크 내에서 컨테이너 IP를 쉽게 찾을 수 있도록 내부 도메인을 부여하는 것
$ docker run -d --network=aaa --net-alias=hello nginx
$ docker run -d --network=aaa --net-alias=grafana grafana/grafana