Today I Learn - 42

이정빈·2021년 4월 16일
0

클라우드 엔지니어

목록 보기
43/53
post-thumbnail

리소스 삭제

docker container prune
중지 상태의 컨테이너들을 모두 지우는 명령어

docker volume prune
볼륨을 모두 지우는 명령어

docker network prune

docker image prune

Docker Volume

  • Stateless: 상태 없음(ex: 웹,앱)
  • Stateful: 상태 있음(ex:DB)

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에서 만들었던 테이블이 남아있는지 확인한다.


Docker Network

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)...

Macvlan 설정

  • docker-engine: 192.168.100.10
  • docker-engine2: 192.168.100.11

docker-engine

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-engine2

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)

Wordpress with docker

docker network create -d bridge --subnet 10.0.0.0/24 wp_net
  • MySQL
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
  • Wordpress
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
profile
WAS Engineer, Cloud Engineer(지망)

0개의 댓글