tonykang22 / study

0 stars 0 forks source link

[Docker & K8S] 07. 도커 컨테이너 다루기 - 볼륨 #60

Open leeyuunsung opened 2 years ago

leeyuunsung commented 2 years ago

07. 도커 컨테이너 다루기 - 볼륨

도커 레이어 아키텍처

image

호스트 볼륨

image

#!/usr/bin/env sh

docker run \
  -d \
  -v $(pwd)/html:/usr/share/nginx/html \
  -p 80:80 \
  nginx
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# cat html/index.html
<h1>Hello fastcampus!!</h1>
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                NAMES
3ad5bf9ede58   nginx          "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   angry_goldwasser
23dde9c5b54d   ubuntu:focal   "bash"                   12 minutes ago       Up 12 minutes                            heuristic_hellman
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# docker exec -it 3a bash
root@3ad5bf9ede58:/# cat /usr/share/nginx/html/index.html
<h1>Hello fastcampus!!</h1>
root@3ad5bf9ede58:/#
root@3ad5bf9ede58:/# cat > /usr/share/nginx/html/hello
Hello Waggs!!!!!!!!!!!!!!!!
^C
root@3ad5bf9ede58:/# exit
exit
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# ls html/
hello  index.html
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# cat html/
hello       index.html
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# cat html/hello
Hello Waggs!!!!!!!!!!!!!!!!
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume#

볼륨 컨테이너

image

$ docker run -d \
  --name my-volume \
  -it \
  -v /opt/html:/usr/share/nginx/
  html \
  ubuntu:focal
# my-volume 컨테이너의 볼륨을 공유 
$ docker run -d \
  --name nginx \
  --volumes-from my-volume \
  nginx
        ...
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/root/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume/html",
                "Destination": "/usr/share/nginx/html",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]
        ...
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# docker exec -it 6b bash
root@6b397a04f3ca:/# ls /usr/share/nginx/html/
hello  index.html
root@6b397a04f3ca:/#

도커 볼륨

# db 라는 이름의 도커 볼륨 생성
docker volume create --name db

# 볼륨 목록 확인
docker volume ls

# 도커의 db 볼륨을 MySQL 의 /var/lib/mysql 디렉토리(MySQL 이 데이터를 쌓는 경로)로 마운트
docker run \
  -d \
  --name fastcampus-mysql \
  -e MYSQL_DATABASE=fastcampus \
  -e MYSQL_ROOT_PASSWORD=fastcampus \
  -v db:/var/lib/mysql \
  -p 3306:3306 \
  mysql:5.7
root@mobius-pub:~/docker/volume/fastcampus-devops/3-docker-kubernetes/2-docker-volume# docker volume inspect db
[
    {
        "CreatedAt": "2022-05-18T22:46:46+09:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/db/_data",
        "Name": "db",
        "Options": {},
        "Scope": "local"
    }
]

읽기 전용 볼륨 연결

docker exec ro-nginx touch /usr/share/nginx/html/hello