2022. 9. 30. 14:02ㆍ교육/클라우드 인프라
실습환경
Ubuntu(우분투), Docker Desktop(실행만함)
실습하기
네트워크 드라이버 확인하기
docker network ls |
자신의 네트워크 드라이브를 확인합니다.
- bridge : 하나의 호스트에서 여러 컨테이너가 통신합니다. (기본 네트워크 드라이버)
- host : 컨테이너가 호스트의 네트워크 내에서 실행(격리x)합니다.
- none : 네트워크를 완전히 격리합니다.
- overlay : 여러 호스트에서 분산되어 돌아가는 컨테이너 간 통신합니다.
- macvlan : 컨테이너에 MAC 주소를 할당하여, 물리적 장치로 인식하게 합니다.
Bridge Network 사용하여 테스트
docker run -dit --name alpine1 alpine ash docker run -dit --name alpine2 alpine ash |
2개의 컨테이너를 만듭니다.
생성한 컨테이너를 확인합니다.
Bridge 네트워크에 연결이 된 것을 확인할 수 있습니다.
docker attach alpine1 # ping -c (ping 보내는 횟수) (alpine1 IPv4 주소) # ping -c (ping 보내는 횟수) alpine2 |
alpine1에 접속한 후 각각 alpine1, alpine2에 각각 Ping을 3번 보냅니다.
※ 자신의 주소인 alpine1은 Ping이 전달이 되고, 자신의 주소가 아닌 alpine2는 Ping이 전달이 안되는 것을 알 수 있습니다.
이후
- exit로 연결되어 있는 alpine1을 나갑니다. (하지만 alpine1에서 exit로 나가면 작동중인 것이 중단됩니다.)
- ctrl + p + q 누르고 빠져나옵니다.
docker container stop alpine1 docker container stop alpine2 docker container rm alpine1 docker container rm alpine2 |
순서대로 작동을 중지한 후 alpine1, alpine2를 제거합니다.
사용자 정의 브릿지 네트워크 사용하여 테스트
docker network create --driver bridge alpine-net |
alpine-net 사용자 브릿지 네트워크를 만듭니다.
docker network ls |
정상적으로 추가되었음을 확인할 수 있습니다.
docker run -dit --name alpine1 --network alpine-net alpine ash docker run -dit --name alpine2 --network alpine-net alpine ash docker run -dit --name alpine3 alpine ash docker run -dit --name alpine4 alpine ash |
alpine1, alpine2는 같은 alpine-net 같은 네트워크 상에 두고 alpine3, alpine4는 각각 다른 네트워크 상에 위치시킵니다.
docker container ls |
container를 확인하여 정상적으로 추가되었는지 확인합니다.
docker network inspect bridge |
bridge 상의 네트워크를 확인합니다. (apline3, alpine4)
docker network inspect alpine-net |
alpine-net 상의 네트워크를 확인합니다.(alpine1, alpine2)
docker container attach alpine1 # ping -c 3 alpine2 # ping -c 3 alpine3 |
alpine1에 접속한 후 alpine2, alpine3에 ping을 보내서 테스트합니다.
alpine1 & alpine2 : 연결양호
alpine1 & alpine3 : 연결 불가능
※ 추가정보
docker network connect alpine-net alpine3 |
alpine-net 네트워크에 alpine 3을 연결합니다.
docker attach alpine1 # ping -c 3 alpine3 |
alpine3은 alpine-net에 연결되어 같은 네트워크 상에 있게되어 핑을 보낼 수 있게됩니다.
link 옵션을 사용하여 통신하기
docker run -dit --name alpine1 alpine ash docker run -dit --name alpine2 alpine ash docker run -dit --name alpine3 alpine ash |
alpine1, alpine2, alpine3 네트워크를 각각 생성합니다.
정상적으로 네트워크가 추가되었음을 확인할 수 있습니다.
docker run -dit --link alpine1 --link alpine2 --name alpine4 alpine ash |
apline4 생성하고, alpine1, alpine2 네트워크에 연결합니다.
docker container ps -a |
alpine4가 정상적으로 생성되었음을 확인할 수 있습니다.
docker attach alpine4 # ping -c 3 alpine1 # ping -c 3 alpine2 # ping -c 3 alpine3 |
alpine4에 접속한 후 alpine1, alpine2, alpine3에 ping을 보내서 테스트합니다.
alpine4 & alpine1 / alpine4 & alpine2 : 연결양호
alpine4 & alpine3 : 연결 불가능
같은 네트워크에 있는 컨테니어간만 통신이 가능하며 사용자가 만든 외부 네트워클르 이용하면 컨테이너 이름으로 연결이 가능합니다.
참고블로그
실습 참고
https://xmobile.tistory.com/m/26
[Docker] 네트워크, 컨테이너간 통신
1. 네트워크 드라이버 종류 $ docker network ls NETWORK ID NAME DRIVER SCOPE f5d0db8f813a bridge bridge local 13d25bc6a925 host host local b1f2996399bf none null local 위와 같이 docker 는 3개의 네트..
xmobile.tistory.com
[Docker] 컨테이너간 통신
컨테이너간 통신 1. --link 옵션 사용 해당 기능은 추후 docker 업데이트시 삭제 될 수 있음 / 사용자 정의 네트워크를 사용하자 사용자 정의 네트워크를 사용하는 컨테이너에서도 --link 옵션은 사용
royleej9.tistory.com
호스트 이름 변경
https://blog.dalso.org/linux/wsl2/11162
WSL2 리눅스 Hostname 변경하기. - 달소씨의 하루
원래 리눅스 호스트네임의 경우 /etc/hostname에서 수정하거나 hostnamectl과 같은 명령어로 변경이 가능합니다. WSL2의 리눅스에도 마찬가지로 해당파일이 있지만 이걸 변경한다고 따로 호스트네임이
blog.dalso.org
'교육 > 클라우드 인프라' 카테고리의 다른 글
네트워크 플러그인(Network Plugin) (1) | 2022.09.30 |
---|---|
Kubernetes(쿠버네티스, K8S) 기초 실습 (0) | 2022.09.27 |
Kubernetes(쿠버네티스) 간단한 설명 (0) | 2022.09.27 |
컨테이너 개념 및 이해하기 (0) | 2022.09.26 |
Docker Desktop 이용하여 Nginx 설치하기 (0) | 2022.09.26 |