볼륨지정
#볼륨 공간 만들기
sudo mkdir nginx_log
#볼륨 바인드하기 -v 볼륨지정
sudo docker run -idt -p 8080:80 -v /home/kali/nginx_log:/var/log/nginx nginx:1.19
#로그보기 (한번은 접속을 해야 로그가 생김)
cd nginx_log
cat access.log
#볼륨 바인딩없이 로그 보기
sudo docker logs -f ContainerName
컨테이너 안의 정보 보기 & 쓰레기 정리
# 컨네이터 안의 정보 보기
# 굳이 컨테이너 ID가 아니더라도 도커의 객체들은 대부분 다 됨 (network ID 등)
sudo docker inspect Container ID
# 사용하지 않는 이미지 혹은 컨테이너(쓰레기)들을 정리해줌
sudo docker system prune
정보는 너무 길어서 생략
index파일 동기화
sudo mkdir nginx_web
sudo docker run -idt -p 8080:80 -v /home/kali/nginx_web:/usr/share/nginx/html --name=dev_web nginx:1.19
#index.html 파일 만들기
cd nginx_web
sudo vi index.html
위의 log 볼륨 바인딩 방식과 비슷
도커 쉘 가져오기
#쉘 가져오기
sudo docker exec -it Container ID /bin/sh
#접속 후 정보들 봐보기
id
uname -na
apt-get update
apt-get install net-tools
ifconfig
ip대역을 잘 보면 docker0에 지정된 대역대에 속한다는 것을 알 수 있다.
도커 네트워크
기본 개념 정리
#참고
https://itmore.tistory.com/entry/NAT-%EC%99%80-Bridged-Networking-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
NAT : 기본적으로 192.168.x.x와 같은 사설(Private)IP 주소로는 외부와 통신을 할 수 없다. 외부와 통신할 수 있는 주소는 오직 공식적으로 발급한 공인(Public)IP 뿐이다. 이러한 제약을 없애고자 개발된 기술이 NAT이다. NAT은 사설 IP와 공인 IP 주소를 변환해 준다.
사설IP에서 외부로 통신하고자 하면 NAT이 사설IP를 공인IP로 변환해주고 변환된 공인IP로 통신을 하게 되는 것이다.
Bridged Networking : 호스트의 네트워크와 게스트의 네트워크를 브릿지하여(연결) 게스트 컴퓨터가 네트워킹 하는 방식이다. 즉, 호스트와 게스트를 하나로 연결하여 두 개의 네트워크를 마치 하나의 네트워크처럼 쓰는 것이다. VM같은 가상머신이 인터넷이 되는 것이 이러한 브릿지가 존재하기 때문이다.
외부에서 나의 도커 컨테이너 서버에 접근하기 위해서 아래와 같이 무선AP와 내컴퓨터와의 포트포워딩을 해줘야 한다.
실습
#network 보기
sudo docker network ls
#network 만들기 (default : bridge)
sudo docker network create web-net01
#network 지정해서 컨테이너 생성
sudo docker run -idt -p 8080:80 --net=web-net01 --name=dev_web nginx:1.19
#driver = 어떤 network 만들지 정해줄 수도 있음
sudo docker network create --driver bridge --subnet 172.100.1.0/24 --gateway 172.100.1.1 custom-net
도커 로드밸런싱
#80번 포트를 누가 가지고 있을 수 있음 그럴경우 가지고 있는 서비스 종료해서 풀어주기
#sudo service apache2 stop
#nginx 깔기
sudo apt install nginx
sudo service nginx start
#볼륨 생성
sudo mkdir web01
sudo mkdir web02
sudo mkdir web03
#로드밸런싱 할 여러개의 컨테이너 생성
sudo docker run -idt -p 5001:80 --name=nginx_web01 -v /home/kali/web01:/usr/share/nginx/html nginx
sudo docker run -idt -p 5002:80 --name=nginx_web02 -v /home/kali/web02:/usr/share/nginx/html nginx
sudo docker run -idt -p 5003:80 --name=nginx_web03 -v /home/kali/web03:/usr/share/nginx/html nginx
#로드밸런싱 설정 하기
cd /etc/nginx
sudo vi nginx.conf
http {
upstream backend-lb {
server 127.0.0.1:5001;
server 127.0.0.1:5002;
server 127.0.0.1:5003;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass http://backend-lb;
}
}
#재시작해야 수정됨
sudo service nginx restart
설치
기본 설정
같은 url로 서로다른 3개가 나오는 것을 볼 수 있다. - 로드밸런싱이 되고 있음
실습 정리
#sudo su - 로 관리자 터미널에서 할 것
docker stop $(docker ps -q -f status=running)
docker rm $(docker ps -q -f status=exited)