✔️

컨테이너 스토리지

볼륨마운트

컨테이너 이미지는 readonly이며, 컨테이너에 추가되는 데이터들은 별도의 RW레이어에 저장
컨테이서 삭제시 데이터도 삭제된다.
따라서 컨테이너 삭제와 상관없이 보존할 수 있는 볼륨마운트가 필요.

-v <host path>:<container mount path>
-v <host path>:<container mount path>:<read wirte mode>
-v <container mount path>
# 컨테이너 mysql 데이터를 host /dbdata에 저장
docker run -d -v /dbdata:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=pass mysql:latest

# 컨테이너 아파치의 웹 데이터 경로를 host의 /webdata 경로에 readonly모드 세팅하고 
docker run -d -v /webdata:/var/www/html:ro httpd:latest

#host경로를 명시하지 않는다면 아래의 경로로 볼륨마운트되어 저장된다
#/var/lib/docker/volumes/UUID~/_data....
#inspect 명령어로 저장위치를 확인할 수 있다.
docker run -d -v /var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=pass mysql:latest

mkdir /dbdata

# 컨테이너 실행
docker run -d --name db -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:latest

# 컨테이너에 접속
docker exec -it db /bin/bash  --> 실행된 mysql 컨테이너에 접속해보자

bash-4.4> mysql -uroot -ppass #mysql에 root 로 접속
mysql> show databases;
mysql> create database bluedove97;
exit; #빠져나온뒤

# 컨테이너 삭제
docker rm -f db

# db데이터 확인
cd /dbdata
ls


#이미 생성된 볼륨조회
docker volume ls

#생성된 볼륨 삭제
docker volume rm 67ea5303b4cad~~

컨테이너 간의 데이터 공유

date명령을 주기적으로 실행하여 index.html로 저장하는 컨테이너의 데이터를 받아 웹서비스를 하는 nginx컨테이너

mkdir testdt
cd testdt

#date 명령어를 주기적으로 실행해주는 dt.sh 작성
cat > dt.sh 
#!/bin/bash
mkdir -p /webdata
while true
do
  date / > /webdata/index.html
  sleep 10
done


#dockerfile 작성
cat > dockerfile
FROM ubuntu:18.04
ADD dt.sh /bin/dt.sh
RUN chmod +x /bin/dt.sh
ENTRYPOINT ["/bin/dt.sh"]

docker build -t bluedove97/dt:latest .

#컨테이너 dt run
docker run -d -v /webdata:/webdata --name dt bluedove97/dt:latest

#볼륨마운트를 /webdata를 바라보고 readonly 형태로 실행 nginx 컨테이너 실행
docker run -d --name web -v /webdata:/usr/share/nginx/html:ro -p 80:80 nginx:1.14

# inspect 명령어로, nginx 컨테이너 ip를 알아온뒤
curl 172.17.0.3
Mon Dec 12 02:24:36 UTC 2022

컨테이너를 이용한 server client 서비스 운영

워드프레스 컨테이너에서 생성된 데이터를 mysql 컨테이너에 저장

# mysql 5.7 컨테이너 실행 및 볼륨마운트 처리
docker pull mysql:5.7
docker run -d --name mysql -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_PASSWORD=wordpress mysql:5.7

# 워드프레스 4 컨테이너 실행 및 mysql 연결 처리
docker pull wordpress:4
docker run -d --name wordpress --link mysql:mysql -e WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4