도커허브에서 가져온 이미지는 수정이 불가능함.
컨테이너가 지워지는건 이미지가 지워지는게 아니라 write layer가 지워지는 것
새로운 데이터가 추가되면 write layer에 추가되는것임
컨테이너가 날라갈 수도 있음 > 데이터가 사라짐 > 방지하기 위해 호스트(물리적인 공간)의 일정부분인 저장공간(볼륨)을 만들어 저장
우분투(이미지 따오기)>엔진엑스 웹서버(write layer)> 워드프레스(웹 소스)
볼륨을 컴퓨터의 하드디스크에 저장하는게 아니라 스토리지 장치에 저장해야함.
게시판의 이미지를 사용자들이 올릴때 어떻게 저장할까? 클라우드 버킷에 저장 도커 이미지+ 에디어블 레이어
도커이미지 하나당 컨테이너 여러개 만들기 가능
안쓰는거 삭제: 가지치기
1단계 도커 환경 설치
$ sudo apt update && sudo apt upgrade
$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
2단계 도커 설치
$ sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
$ docker -v //설치가 잘 되었는지 확인해 봅니다.
볼륨관리
volume: 호스트위에 도커, 도커위에 컨테이너인데 컨테이너가 날라가면 데이터도 날라가서 호스트인 우분투 위에 데이터를 저장하는데 그곳이 볼륨.
* 볼륨이 어디에 저장되는지 확인
inspect를 활용한 조사 > json으로 표기됨
# docker inspect myvolume
# docker container inspect wordpress // 컨테이너의 정보 확인
# docker volume inspect myvolume // 볼륨 정보 확인
* 사용 안하면 삭제
# docker volume prune // 사용하지 않는 볼륨 삭제
# docker container prune // 사용하지 않는 컨테이너 삭제
docker volume ls // 리스트로 볼륨 확인
docker ps -a > 현재 컨테이너 확인
docker container prune > 안쓰는 컨테이너 알아서 삭제
Docker Network
브릿지: 다른 컴퓨터를 연결해주는 장치 > 요즘은 스위치를 사용 스위치가 브릿지역할
같은 네트워크를 만들어줌. 내부망 사용가능하게.
브릿지는 포트개수가 적어서 1:1연결함 > 스위치 사용해서 여러 컴퓨터 사용가능
공유기가 공인IP 사설IP를 VM에 들어갔을때
브릿지방식으로 들어갈때 하나의 네트워크처럼 사용가능
도커에서는 NAT과 브릿지를 구분하지 않음
웹서버와 DB서버를 같은네트워크에 두면 해킹당했을때 위험함
따라서 웹서버와 DB서버를 나눔
* 브릿지 연결 : 외부 네트워크와 직접 연결하는 방식
sudo -i > 루트권한
* 도커 네트워크 확인
# docker network ls
# docker network inspect bridge //json 형식으로 나옴
# docker network inspect host
# docker run -i -t ubuntu:14.04 //우분투14.04컨테이너 만들
root@ace2cf651416:/# ifconfig
eth0 : 172.17.0.6
-------> Ctrl +P,Q // 실행중인 상태로 나옴
# apt install bridge-utils
// 컨테이너에서 나와서 호스트에서 하는중
# brctl show docker0
//도커0번에 대한 정보를 줘
# docker network ls
//도커에 있을땐 앞에 도커 써주기
# docker network inspect bridge
# docker network create --driver bridge mybridge
// mybridge라는 브리지 생성
# docker network ls
// 생성 확인
# docker run -i -t --name mynetwork_container --net mybridge ubuntu:14.04
// mybridge에 우분투 컨테이너 생성
(exit로 컨테이너에서 빠져나옴)
172.16.0.0 ~ 172.31.0.0> 사설IP범위
도커에서는 172.17.0.0을 기본 네트워크로 사용함
네트워크를 따로 만드는 이유 :접근통제
- 외부에서 직접 접근 가능한 public subnet을 구성해서 웹서버를 배치하고
-public subnet에서만 접근 가능한 private subnet을 구성해서 사용할 수 있음
-private subnet에는 외부에서 접근이 불가능하도록 해서 DB server등을 배치함
Bridge Network 설정
# docker network disconnect mybridge mynetwork_container // 연결 해제
# docker network connect mybridge mynetwork_container // 연결 설정
* my_custom_network에 서브넷, IP주소범위, 게이트웨이 설정
# 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
// ip 지정해서 사용할거임
* 호스트 네트워크
# docker run -i -t --name network_host \
--net host \
ubuntu:14.04
# echo "Here is inside of container"
# exit
( 원래 호스트로 돌아옴 )
Container Network
# docker run -i -t -d --name network_container_1 ubuntu:14.04
# docker network ls // 없음
# docker ps // 있음 (가장 최근에 생성된 것)
# docker run -i -t -d --name network_container_2 \
> --net container:network_container_1 \
> ubuntu:14.04
* 브릿지 네트워크와 --net-alias
mybridge:172.18
# docker run -i -t -d --name network_alias_container_1 --net mybridge --net-alias netflix ubuntu:14.04
# docker run -i -t -d --name network_alias_container_2 --net mybridge --net-alias netflix ubuntu:14.04
# docker run -i -t -d --name network_alias_container_3 --net mybridge --net-alias netflix ubuntu:14.04
//네트워크 별칭을 넷플릭스로해서 세 대를 만듦 > 노드밸런싱 가능:나눠서할당
웹서버가 한대면 처리할 수 있는 사용자가 오만명이라 세 대면 15만명 가능
# docker inspect network_alias_container_1 | grep IPAddress
# docker run -i -t --name network_alias_ping --net mybridge ubuntu:14.04
// ping을 칠 컨테이너 생성
# ping -c 1 netflix
// 별칭에 ping 1번 전송
-------> 172.19.0.2, 172.19.0.3, 172.19.0.4번이 라운드로빈(RR)으로 응답함
//순차응답 세개가 대답이 하나씩 옴
'CS > Cloud Computing' 카테고리의 다른 글
[Cloud Computing] 16. Cloud Storage (0) | 2024.07.17 |
---|---|
[Cloud Computing] 15. 블록체인 도커에 구현 (0) | 2024.07.17 |
[Cloud Computing] 13. Docker Container (0) | 2024.07.17 |
[Cloud Computing] 12. Docker 실습 (0) | 2024.07.17 |
[Cloud Computing] 11. Docker (0) | 2024.07.17 |