๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DevOps/Docker

[Docker] network์ƒ์„ฑ๊ณผ volume mount (-v) ๋ช…๋ น์–ด

by ํƒœ์˜น 2022. 1. 18.

๐Ÿ‘‡ ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์•„๋ž˜์˜ ๊ฐ•์˜๋ฅผ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.

https://www.inflearn.com/course/%EB%8F%84%EC%BB%A4-%EC%9E%85%EB%AC%B8/dashboard

 

์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋„์ปค๋ฅผ 1๋„ ๋ชจ๋ฅด๋Š” ์ž…๋ฌธ์ž, ์ดˆ๋ณด์ž๋ถ„๋“ค์„ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋‚ด์šฉ์„ ์ œ์™ธํ•˜๊ณ  ๋„์ปค๊ฐ€ ์™œ ์ธ๊ธฐ๊ฐ€ ๋งŽ๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋„๋ก ์ง‘์ค‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค., ๋ฐ๋ธŒ์˜ต์Šค ์ž…๋ฌธ

www.inflearn.com


 

1. network์ƒ์„ฑ

๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๋“ค๋ผ๋ฆฌ ์ด๋ฆ„์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

docker network create app-network
docker network connect app-network mysql

1. app-network๋ผ๋Š” ๊ฐ€์ƒ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ฆ

2. mysql์„ app-network์— ๋ถ™์ž„

 

mysql๊ณผ wordpress๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์— ์žˆ๋˜ wordpress ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ญ์ œํ•œ ํ›„ ์ƒˆ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋•Œ --network=app-network ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  HOST๋ถ€๋ถ„์— mysql์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„์„ ์ ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

docker run -d -p 8080:80 
  --network=app-network
  -e WORDPRESS_DB_HOST=mysql
  -e WORDPRESS_DB_NAME=wp 
  -e WORDPRESS_DB_USER=wp
  -e WORDPRESS_DB_PASSWORD=wp 
  wordpress

๋‹ค์‹œ ์›Œ๋“œํ”„๋ ˆ์Šค ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ž˜ ์ž‘๋™๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 


 

2. volume mount (-v) ๋ช…๋ น์–ด

 

๋งŒ์•ฝ mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋งŒ๋“ ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋  ์ง€ ํ™•์ธํ•ด๋ณด์ž.

docker run -d -p 3306:3306
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true
  --network=app-network
  --name mysql
  -v /my/own/datadir:/var/lib/mysql
  mysql:5.7

(๋ฌผ๋ก  ์ด๋ฒˆ์—๋„ ์—ญ์‹œ ํฌํŠธ๋ฅผ 3366์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋‹ค.)

 

์›Œ๋“œํ”„๋ ˆ์Šค ์ปจํ…Œ์ด๋„ˆ๋Š” ๋„์›Œ๋‘” ์ƒํƒœ์—์„œ ์›Œ๋“œํ”„๋ ˆ์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋˜ ๊ธฐ์กด mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ–ˆ๋Š”๋ฐ, ๊ทธ๋Ÿผ ๊ทธ mysql ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ์ €์žฅ๋˜์–ด์žˆ๋˜ ์ •๋ณด๋“ค์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

์ด ๊ฒฝ์šฐ ์›Œ๋“œํ”„๋ ˆ์Šค ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ด์ „ ๊ณ„์ •์ •๋ณด๋“ค์€ ๋‚ ๋ผ๊ฐ”๊ธฐ ๋•Œ๋ฌธ์—

Error establishing a database connection ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋ ‡๋“ฏ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด ์ €์žฅ๋˜์–ด์žˆ๋˜ ์ •๋ณด๋“ค์ด ํ•จ๊ป˜ ์‚ญ์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด -v ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

-v ์˜ต์…˜ ๋’ค์— (๋‚ด ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ):(์ปจํ…Œ์ด๋„ˆ ๊ฒฝ๋กœ)๋ฅผ ์ ์–ด์ฃผ๋ฉด ๋‚ด ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ฒฝ๋กœ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค.

๋‚ด ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋Š” ๋ณธ์ธ์ด mysql๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ฃผ๋ฉด ๋˜๊ณ , : ๋’ค์˜ ๊ฒฝ๋กœ๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ €์žฅํ•˜๋Š” ๊ฒฝ๋กœ์ด๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ์ ์–ด์ค€๋‹ค.

 

๋‚˜๋Š” C:\Users\sun990520 ์œ„์น˜์— workspace ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— mysqlํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋‹ค. (๋นˆํด๋”)

 

-v C:/Users/์‚ฌ์šฉ์ž์ด๋ฆ„/workspace/mysql:/var/lib/mysql

 

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด mysql ํด๋”๊ฐ€ ๋น„์–ด์žˆ๋˜ ์ƒํƒœ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๊ฒƒ์ €๊ฒƒ ๋“ค์–ด๊ฐ„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

mysql๊ณผ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค ์™€๋ฅด๋ฅด

 

mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ๋กœ ๋„์› ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ wp๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.

PS C:\Users\sun990520> docker exec -it mysql mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database wp CHARACTER SET utf8;
Query OK, 1 row affected (0.02 sec)

mysql> grant all privileges on wp.* to wp@'%' identified by 'wp';
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

mysql> quit
Bye

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค๋ฉด ๋‹ค์‹œ ์›Œ๋“œํ”„๋ ˆ์Šค๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.

๋‚˜๋Š” ๋ฐ”๋กœ localhost:8080์œผ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ธธ๋ž˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋„์›Œ์ฃผ์—ˆ๋‹ค. 

 

์ด์ „ ์‹ค์Šต์ฒ˜๋Ÿผ ์›Œ๋“œํ”„๋ ˆ์Šค ์„ค์น˜ํŽ˜์ด์ง€(์ดˆ๊ธฐํ™”๋ฉด)์ด ๋‚˜์˜ค๋ฉด ์ƒˆ๋กœ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ƒˆ๋กœ ์ƒ์„ฑํ•œ wp๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์ด์ฏค์—์„œ ๋‹ค์‹œ ์ง€์ •ํ–ˆ๋˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด mysql์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์› ์„ ๋•Œ์˜ ์ดˆ๊ธฐ์ƒํƒœ์—์„œ wpํด๋”๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋‚ด ๋กœ์ปฌ์— ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ฐํžˆ ๊ธฐ์กด mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.

(๋ฌผ๋ก  mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์›Œ๋“œํ”„๋ ˆ์Šค๋Š” ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค. ๋‹ค์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค.)

 

PS C:\Users\sun990520> docker stop mysql
mysql
PS C:\Users\sun990520> docker rm mysql
mysql
PS C:\Users\sun990520> docker run -d -p 3366:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --network=app-network --name mysql -v C:/Users/sun990520/workspace/mysql:/var/lib/mysql mysql:5.7
8b0d546c752916a02b0d5a56725d0e54a409356ed266f703de570aff2b12face

(๊ทธ๋ƒฅ ๋‚ด ์ฝ”๋“œ ๊ทธ๋Œ€๋กœ ๋ถ™์ž„)

 

๊ธฐ์กด์— ๋„์› ๋˜ ์›Œ๋“œํ”„๋ ˆ์Šค ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์ด์ „ ๋‚ด์šฉ๋“ค์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š์€์ฑ„ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

-v์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š” mysql ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋„ ๊ฐ™์ด ์‚ญ์ œ๋˜๋Š”๋ฐ, -v์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ •๋ณด๊ฐ€ ๋‚ด ๋กœ์ปฌ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•ด๋„ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€