2023.05.16 - [네트워크 수업/Docker] - 도커네트워크.pdf 23.05.16
메모리제한,CPU제한
∎ 도커 네트워크
//컨테이너 하나 새로 생성
[root@Docker1 ~]# docker run -i -t --name docker_test ubuntu:14.04
[root@21b87fa488f3:/# [root@Docker1 ~]# ifconfig ==> ctrl+shift+p+q 한 후
얘가 virtual 이더넷. 가상랜카드가 컨테이너 랜카드와 연결되어있다.
도커브릿지와 바인딩 되어있다.
[root@Docker1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f33e72c1dd39 bridge bridge local // 호스트 컴퓨터에 연결시켜주는 네트워크--다른 네트워크 대역인데 명칭만 bridge라고 함.
1e7c255594f6 host host local //호스트 컴
37a1518b9d63 none null local
브릿지 네트워크를 만들어보자.
[root@Docker1 ~]# docker rm -f docker_test
docker_test
[root@Docker1 ~]# docker network create --driver bridge mybridge
83557225ddd1c05b41b35f195ea21f67d7ac4c92e98b381165af9096786af7d9
[root@Docker1 ~]# docker run -i -t --name mynetwork_container --net mybridge ubuntu:14.04
root@6832ec427900:/# ifconfig
root@6832ec427900:/# [root@Docker1 ~]# docker network inspect mybridge
기존 브릿지를 써도 되지만 이렇게 mybridge 따로 생성해도 된다.
[root@Docker1 ~]# docker network ls
bridge네트워크는 docker0와 연결되어있다.
docker0는 virtual ethernet과 연결되어있다.
[root@Docker1 ~]# docker network disconnect mybridge mynetwork_container //이렇게하면 끊어진다.
[root@Docker1 ~]# docker exec mynetwork_container ifconfig //이 명령어 치면 도커컨테이너에 attach안하고 명령어 결과를 알수있다. 는 뜻이다.
//다시 연결
[root@Docker1 ~]# docker network connect mybridge mynetwork_container
[root@Docker1 ~]# docker network create --driver=bridge --subnet=172.72.0.0/16 --ip-range=172.72.0.0/24 --gateway=172.72.0.1 my_custom_network
7096e8fb47928cd4d102b9d1d4b55541f100540d1df786a5ee7769e2d594c389
[root@Docker1 ~]# docker network ls
[root@Docker1 ~]# docker network inspect my_custom_network
172.72.0.0 대역 나오는 것을 확인할 수 있다.
//다시 다 지우기
[root@Docker1 ~]# docker rm -f mynetwork_container
[root@Docker1 ~]# docker network rm my_custom_network
[root@Docker1 ~]# docker network rm mybridge
[root@Docker1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f33e72c1dd39 bridge bridge local
1e7c255594f6 host host local
37a1518b9d63 none null local
호스트네트워크
//호스트 네트워크를 쓰는 컨테이너를 만들어보자
[root@Docker1 ~]# docker run -it --name network_host --net host ubuntu:14.04
root@Docker1:/# // 컨테이너 안으로 들어감
root@Docker1:/# ifconfig
그럼 얘는 호스트 컴퓨터랑 통신된다.
ip까지 똑같다 ==> 호스트네트워는 자기복제를 한것임. 컨테이너 내부를 포트포워딩 할 필요없이 바로 쓸 수 있다.는 장점이 있다.
ctrl+shift+p+q
[root@Docker1 ~]# docker run -i -t --name network_host --net host ubuntu:14.04
root@Docker1:/# root@Docker1 ~]# docker run -i -t --name network_host --net host ubuntu:14.04
root@Docker1:/# ifconfig //LAN카드가 없는것 확인
[root@Docker1 ~]# docker run -i -t -d --name network_container_1 ubuntu:14.04
ee18290e956bcad14d59f240a940eb92a6edf30d98394860b25b7f015f4cb0b9
[root@Docker1 ~]# docker run -i -t -d --name network_container_2 --net container:network_container_1 ubuntu:14.04
ed9c269fc9b6cf961953b6a6c7bec1e02ce737045de08ff106c3b4a5fb4cc384 // network_container_1 의 내부 아이피를 공유한다는 뜻
[root@Docker1 ~]# docker exec network_container_1 ifconfig //ip를 할당받지 않고 network_container_1의 아이피를 그대로 공유한다. ==>똑같은 네트워크 환경을 공유한다.
[root@Docker1 ~]# docker network create --driver bridge mybridge
a5348d2d6ba8797bbe7ce98e32b7850b51d4ce3dc926057bb141ccc5e1e97e59
[root@Docker1 ~]# docker run -i -t -d --name net_moon_con1 --net mybridge --net-alias mook ubuntu:14.04
effea8e8740955069259b676c1132b77b4017912df7785e30b4d20d56b2489d9
[root@Docker1 ~]# docker run -i -t -d --name net_moon_con2 --net mybridge --net-alias mook ubuntu:14.04
6530fec6234c1304e8666018e789e83370f2243369b7cbc7f0a3d371ac08c467
[root@Docker1 ~]# docker run -i -t -d --name net_moon_con3 --net mybridge --net-alias mook ubuntu:14.04
5ed5b579768878411e9d4a1f11c986738b4c564036115023ef62f7d95f42fcd0
root@47cbc6e2a35b:/# apt-get update
root@47cbc6e2a35b:/# apt-get install dnsutils
root@47cbc6e2a35b:/# dig moonk
라운드로빈방식으로 핑이 간다는 것을 알 수 있다.
외부에있는 컨테이너랑은 통신되지만, 내부에있는 자기 컨테이너랑은 통신이 안된다.
cAdvisor
[root@Docker1 ~]# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
http://10.10.51.15:8080/containers/docker/
구글이 만든 감시 프로그램
htop 도커에서 자원할당하는 방법
//htop을 설치해서 cpu가 몇번째를 사용하고 있는지 확인하자
[root@Docker1 ~]# docker run -d --name cpuset_2 --cpuset-cpus=2 moon682/stress stress --cpu 1 // 선생님이 이미 만든 파일이있다.
[root@Docker1 ~]# yum -y install htop
root@Docker1 ~]# yum -y install epel-release && yum -y install htop
시간계산은 quota/period 값
[root@Docker1 ~]# docker run -d --name cpus_container --cpus=0.5 moon682/stress stress --cpu 1
07a0d966e88d0943a044be67773e8c259aae6894378d4863483c290659fbbe7f
과제]
메모리 1G / CPU 코어 1,2,3번을 사용하는 임의의 컨테이너를 생성하세요.
'네트워크 수업 > Docker' 카테고리의 다른 글
Cisco ASA Firewall 23.05.24 (0) | 2023.05.24 |
---|---|
Docker Image (0) | 2023.05.18 |
zfw 23.05.15 (0) | 2023.05.15 |
Docker - NSF 서버구축 23.05.12 (0) | 2023.05.12 |
클라우드서버 구축 nextcoud 23.05.11 (0) | 2023.05.11 |
댓글