docker container prune
중지 상태의 컨테이너들을 모두 지우는 명령어
docker volume prune
볼륨을 모두 지우는 명령어
docker network prune
docker image prune
docker volume ls
도커의 볼륨 확인
컨테이너를 생성했을 때 볼륨은 자동 생성된다.
컨테이너를 제거했을 때 볼륨은 지워지지 않고 남아있다.
남아있는 이 볼륨을 새로 생성한 컨테이너와 다시 연결해보는 실습.
tmux 실행
tmux로 실시간으로 컨테이너와 볼륨의 상태를 확인한다.
watch -n1 -d docker volume ls
볼륨 상태확인
watch -n1 -d docker ps -a
컨테이너 상태확인
docker volume create mydb
볼륨의 이름을 mydb로 생성
docker run -d --name mydb1 -e MYSQL_ROOT_PASSWORD=1234 -v mydb:/var/lib/mysql mysql:5.7
mysql을 mydb1으로 이름을 지정하여 detach상태로 컨테이너 생성. 환경변수로 패스워드를 지정한다.
docker exec -it mydb1 bash
mysql -u root -p
show databases;
create database hello;
quit
mydb1을 bash 상태로 실행하여 mysql db에 root로 접속한다. 이후 DB를 확인하고 실험용으로
hello라는 이름의 테이블을 생성한다.
docker stop mydb1 && docker rm mydb1
mydb1 컨테이너를 중지하고 삭제.
docker run -d --name mydb2 -v mydb:/var/lib/mysql mysql:5.7
새로운 컨테이너 mydb2를 생성한다. 이때 , 볼륨에 환경변수가 저장되어있기에 패스워드를 다시 생성할 필요가 없다.
docker exec -it mydb2 bash
mysql -u root -p
show databases;
배쉬를 실행하여 mydb1에서 만들었던 테이블이 남아있는지 확인한다.
brctl show
apt install bridge-utils
bridge: 기본 설정
host: 호스트와 네트워크를 공유
null: 네트워크 없음
ipvlan/macvlan: 호스트 네트워크와 컨테이너 네트워크를 동일한 서브넷을 제공할 수 있다.
overlay: Docker Swarm에서 사용하는 오버레이 네트워크
docker network ls
docker network inspect (NAME)
docker run --network (NAME)...
docker network create -d macvlan --subnet=192.168.100.0/24 --ip-range=192.168.100.64/28 -o macvlan_mode=bridge -o parent=enp0s8 my_macvlan
sudo ip link set enp0s8 promisc on
그 뒤에 VM으로 가서 네트워크 설정-> 어댑터2-> 무작위 모두 허용 설정
docker run -it --name con1 --hostname con1 --network my_macvlan c1t1d0s7/network-multitool
ip addr show
ping x.x.x.x(con2)
docker network create -d macvlan --subnet=192.168.100.0/24 --ip-range=192.168.100.128/28 -o macvlan_mode=bridge -o parent=enp0s8 my_macvlan
sudo ip link set enp0s8 promisc on
그 뒤에 VM으로 가서 네트워크 설정-> 어댑터2-> 무작위 모두 허용 설정
docker run -it --name con2 --hostname con2 --network my_macvlan c1t1d0s7/network-multitool
ip addr show
ping x.x.x.x(con1)
docker network create -d bridge --subnet 10.0.0.0/24 wp_net
docker run --name wp_db -d -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_USER=wpadmin -e MYSQL_PASSWORD=qwer1234 -e MYSQL_DATABASE=wordpress -v wp_db_vol:/var/lib/mysql --network wp_net mysql:5.7
docker run --name wp_web -d -e WORDPRESS_DB_HOST=wp_db -e WORDPRESS_DB_USER=wpadmin -e WORDPRESS_DB_PASSWORD=qwer1234 -e WORDPRESS_DB_NAME=wordpress -v wp_web_vol:/var/www/html --network wp_net --link wp_db -p 80:80 wordpress