본문 바로가기
네트워크 수업/Docker

도커네트워크 23.05.16

by 6^6 2023. 5. 16.
728x90

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

mybridge 안쓰면 맨위에 bridge 쓴다.

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번을 사용하는 임의의 컨테이너를 생성하세요.

 

 

 

 

728x90

'네트워크 수업 > 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

댓글