์ด์ ๊ธ ๐
2024.02.06 - [IT/DevOps] - [Docker] Container์ filesystem, Database ์ ์งํ๊ธฐ: 1. Volume mount
Bind mount
bind mount๋ host filesystem์ ํน์ directory์ container๋ฅผ ์ฐ๊ฒฐํด์ค๋๋ค.
๋ฐ๋ผ์, host filesystem์ ํน์ directory์์ ์์ค์ฝ๋๋ฅผ ์์ ํ์ฌ ์ ์ฅํ๊ฒ ๋๋ฉด, ์ด๋ฌํ ๋ณํ๋ Container์ ์ฆ์ ๋ฐ์๋ฉ๋๋ค.
โ host filesystem๊ณผ container์ directory ๊ณต์ ์ค์ต
getting-started-app ๋๋ ํ ๋ฆฌ ์์น์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด,
container filesystem์ root ๋๋ ํ ๋ฆฌ ์์น์์ ubuntu์ bash๊ฐ ์์๋ฉ๋๋ค.
docker run -it --mount "type=bind,src=%cd%,target=/src" ubuntu bash
src: host machine์์์ ํ์ฌ ์์ ๋๋ ํ ๋ฆฌ (getting-started-app)
target: ์ ๋๋ ํ ๋ฆฌ๊ฐ container ๋ด์์ ๋ํ๋ ์์น (/src)
์๋ ๋ช ๋ น์ด๋ฅผ ํตํด, src ๋๋ ํ ๋ฆฌ๋ก ์์น๋ฅผ ๋ณ๊ฒฝํ ๋ค ํด๋์ ๋ญ๊ฐ ๋ค์๋์ง ํ์ธํด๋ณด๋ฉด,
host machine์ getting-started-app ํด๋ ๋ด๋ถ์ ๋์ผํฉ๋๋ค!
root@???:/# cd src
root@???:/src# ls
container → host
ํ์ฌ ์์น์์, ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด myfile.txt๋ฅผ ์์ฑํด๋ด ์๋ค.
root@???:/src# touch myfile.txt
์ด์ host์์ getting-started-app ํด๋๋ฅผ ๋ณด๋ฉด, myfile.txt๊ฐ ์๋ก ์์ฑ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค!
host → container
host์ getting-started-app ํด๋์์, myfile.txt๋ฅผ ์ญ์ ํด๋ณด์ธ์.
๊ทธ๋ฆฌ๊ณ ์ด๋ฒ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ container์์ src ํด๋ ๋ด๋ถ๋ฅผ ํ์ธํด ๋ณด๋ฉด, myfile.txt๊ฐ ์ฌ๋ผ์ก์์ ํ์ธํ ์ ์์ต๋๋ค!
root@???:/src# ls
interactive session์ Ctrl + D๋ก ์ข ๋ฃํ ์ ์์ต๋๋ค.
โ application ์ ๋ฐ์ดํธ ์ค์ต: ์์ค์ฝ๋ ๋ณ๊ฒฝ์ด container์ ์ฆ์ ๋ฐ์๋จ
getting-started-app ๋๋ ํ ๋ฆฌ ์์น์์, ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด bind mount๊ฐ ๋ Container๋ฅผ ์์ํด ๋ด ์๋ค.
docker run -dp 127.0.0.1:3000:3000 \
-w /app --mount type=bind,src="$(pwd)",target=/app \
node:18-alpine \
sh -c "yarn install && yarn run dev"
host machine์ src/static/js/app.js ํ์ผ์์, 109๋ฒ์งธ ๋ผ์ธ์ ์๋์ ๊ฐ์ด ์์ ํ ๋ค ์ ์ฅํด์ฃผ์ธ์.
- {submitting ? 'Adding...' : 'Add Item'}
+ {submitting ? 'Adding...' : 'Add'}
๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด, ์ ์์ ๋ด์ฉ์ด ์ฆ์ ๋ฐ์๋์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค.
โป host machine์์์ ๋ณํ๊ฐ container์ ์ฆ์ ๋ฐ์๋ ๊ฒ์ bind mount ๋๋ถ์ด์ง๋ง,
container์ ๋ณํ์ ๋ฐ๋ผ์ Application์ด ์ฆ์ ์ ๋ฐ์ดํธ๋ ๊ฒ์ Nodemon ๋๋ถ์ ๋๋ค.
์์ค์ฝ๋๋ฅผ ์ํ๋๋๋ก ์์ ํ ํ, ๋ง๋ฌด๋ฆฌ๋์๋ค๋ฉด ์ด๊ฒ์ ์ด์ ์ Image๋ก์ buildํ๋ฉด ๋ฉ๋๋ค.
docker build -t getting-started .
๊ฐ์ฌํฉ๋๋ค~!
'IT > DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GitHub] ์ ๋ ํฌ์งํ ๋ฆฌ์ ๋ก์ปฌ ํด๋ ์ ๋ก๋ํ๊ธฐ (0) | 2024.02.18 |
---|---|
[Docker] multi-container application: Docker compose (0) | 2024.02.07 |
[Docker] Container์ filesystem, Database ์ ์งํ๊ธฐ: 1. Volume mount (0) | 2024.02.06 |
[Docker] Application ๊ณต์ ํ๊ธฐ: Docker registry, Docker Hub (0) | 2024.02.05 |
[Docker] Application ์ ๋ฐ์ดํธํ๊ธฐ (2) | 2024.02.05 |