Docker Layer Architecture

!Screenshot 2023-01-01 at 9.14.21 PM.png

실습 코드

/fastcampus-devops/3-docker-kubernetes/2-docker-volume
Screenshot 2023-01-01 at 9.21.19 PM.png

html

<h1>Hello fastcampus!!</h1>

index.html

Host Volume

# 호스트의 /opt/html 디렉토리를 Nginx의 웹 루트 디렉토리로 마운트
docker run -d \
--name nginx \
-v /opt/html:/usr/share/nginx/html \
nginx

실습

#!/usr/bin/env sh

docker run \
  -d \
  -v $(pwd)/html:/usr/share/nginx/html \
  -p 80:80 \
  nginx

host-volume.sh

Volume Container

Screenshot 2023-01-01 at 9.23.43 PM.png

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-volumes \
nginx

실습

/fastcampus-devops/3-docker-kubernetes/2-docker-volume

#!/usr/bin/env sh

docker run \
  -d \
  -it \
  -v $(pwd)/html:/usr/share/nginx/html \
  --name web-volume \
  ubuntu:focal

docker run \
  -d \
  --name fastcampus-nginx \
  --volumes-from web-volume \
  -p 80:80 \
  nginx

docker run \
  -d \
  --name fastcampus-nginx2 \
  --volumes-from web-volume \
  -p 8080:80 \
  nginx

volume-container.sh

Docker Volume

# web-volume 도커 볼륨 생성
docker volume create --name db

# docker의 web-volume 볼륨을 DB의 웹 루트 디렉토리로 마운트
docker run -d \
--name fastcampus-mysql \
-v db:/var/lib/mysql \
-p 3306:3306 \
mysql:5.7

실습

/fastcampus-devops/3-docker-kubernetes/2-docker-volume

#!/usr/bin/env sh

docker volume create --name db

docker volume ls

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

docker-volume.sh

Read-only Volume 연결

# docker의 web-volume 볼륨을 Nginx의 웹 루트 디렉토리로 읽기 전용 마운트
docker run -d \
--name nginx \
-v web-volume:/usr/share/nginx/html:ro \
nginx

실습

/fastcampus-devops/3-docker-kubernetes/2-docker-volume

#!/usr/bin/env sh

docker run \
  -d \
  -v $(pwd)/html:/usr/share/nginx/html:ro \
  -p 80:80 \
  --name ro-nginx \
  nginx

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

readonly-volume.sh


#Docker