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

[Docker] ๋„์ปค ๊ธฐ๋ณธ ๋ช…๋ น์–ด run ์‚ฌ์šฉํ•˜๊ธฐ (windows)

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. ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

$ docker run ubuntu:20.04 ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์šฐ๋ถ„ํˆฌ 20.04 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

sun990520@LAPTOP-RU096RMK MINGW64 ~
$ docker run ubuntu:20.04
Unable to find image 'ubuntu:20.04' locally
20.04: Pulling from library/ubuntu
ea362f368469: Pulling fs layer
ea362f368469: Verifying Checksum
ea362f368469: Download complete
ea362f368469: Pull complete
Digest: sha256:b5a61709a9a44284d88fb12e5c48db0409cfad5b69d4ff8224077c57302df9cf
Status: Downloaded newer image for ubuntu:20.04

์œ„์ฒ˜๋Ÿผ ์ฒ˜์Œ ubuntu์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šฐ๋Š” ๊ฒฝ์šฐ, ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›์€ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กญ๊ฒŒ ๋‹ค์šด๋ฐ›๋Š” ๊ณผ์ •์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

run๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋จผ์ € ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

->  ์ด๋ฏธ์ง€๊ฐ€ ์—†๋‹ค๋ฉด ๋‹ค์šด๋กœ๋“œ(pull)ํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ create

-> start

(์ด๋Ÿฐ ๊ณผ์ •์ž„)

 

์ปจํ…Œ์ด๋„ˆ๋Š” ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ํ–ˆ์ง€๋งŒ ์–ด๋–ค ์ผ์„ ํ•  ์ง€ ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์ข…๋ฃŒ๋œ๋‹ค.
(์ปจํ…Œ์ด๋„ˆ๋Š” ํ”„๋กœ์„ธ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์œผ๋ฉด ์ข…๋ฃŒ๋จ --> ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹จ์ˆœํžˆ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๊ฒฉ๋ฆฌํ•ด๋†“์€ ๊ฒƒ)

 

 

docker run --rm -it ubuntu:20.04 /bin/sh ๋ช…๋ น์–ด๋กœ /bin/sh๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
sh๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€๋ฉด ํ‚ค๋ณด๋“œ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก -it ์˜ต์…˜์„ ์ค€๋‹ค.
--rm ์˜ต์…˜์˜ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋„๋ก ํ•œ๋‹ค.

shell ์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ls ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด ํ˜„์žฌ ๋ณธ์ธ์˜ ์ปดํ“จํ„ฐ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ€์ƒ์„œ๋ฒ„(์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„)์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

exit ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.
(--rm ์˜ต์…˜์ด ์—†๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ์‚ญ์ œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ•„์š”์‹œ์— ๋‹ค์‹œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.)

 

๋„์ปค๋Š” ๋‹ค์–‘ํ•œ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ณตํ†ต์ ์€ ๋ชจ๋‘ ๋™์ผํ•œ ์ปค๋„์„ ์‚ฌ์šฉํ•œ๋‹ค.

 


 

2. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ํ•˜๊ธฐ

์ด๋ฒˆ์—๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ runํ•ด๋ณด์ž.
docker run --rm -p 5678:5678 hashicorp/http-echo -text="hello world" ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด "hello world"๋ผ๋Š” ํ…์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
(hashicorp/http-echo๋ผ๋Š” ๊ฒƒ์€ hashicorp๋ผ๋Š” ํšŒ์‚ฌ์—์„œ ๋งŒ๋“  ์›น ์„œ๋ฒ„๋ฅผ ๋งํ•œ๋‹ค.)
-p ์˜ต์…˜์˜ ๊ฒฝ์šฐ port๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, (๋‚ด pc์˜ port):(hashicorp/http-echo์˜ port)์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

localhost:5678์— ์ ‘์†ํ•˜๋ฉด "hello world"๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ docker run --rm -p 5679:5678 hashicorp/http-echo -text="docker!!" ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด hashicorp/http-echo ์„œ๋ฒ„๋ฅผ ๋‚ด pc์˜ 5679ํฌํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ "docker!!"๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ€์ƒ์˜ ์›น์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.


 

3. MySQL ์‹คํ–‰ํ•˜๊ธฐ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”๊ฐ€

docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7 ๋ช…๋ น์–ด๋กœ mysql ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.


mysql์€ ์›๋ž˜ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅ๋ฐ›๋„๋ก ๋˜์–ด์žˆ์ง€๋งŒ EMPTY_PASSWORD=true ์†์„ฑ์„ ๋ถ€์—ฌํ•ด์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜์˜€๋‹ค.
--name ์˜ต์…˜์—๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ ,

-d ์˜ต์…˜์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„์˜ ์ƒํƒœ๊ฐ€ ๊ณ„์† ํ™”๋ฉด์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ๋กœ ์‹คํ–‰์ด ๋˜์–ด ๋™์ž‘ํ•˜๊ฒŒ ํ•œ๋‹ค.

 

๋‚˜๋Š” ์‹ค์Šต ๋„์ค‘์— 3306 ํฌํŠธ ์ค‘๋ณต์‚ฌ์šฉ ์˜ค๋ฅ˜๊ฐ€ ๋– ์„œ ๊ทธ๋ƒฅ ํฌํŠธ๋ฒˆํ˜ธ์™€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด๋ฒ„๋ ธ๋‹ค. ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ž˜ ์ž‘๋™ํ•œ๋‹ค.

ํฌํŠธ ๋ณ€๊ฒฝ 3306 -> 3366 / ์ด๋ฆ„๋ณ€๊ฒฝ mysql -> mysql1

 

docker exec -it mysql mysql ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด mysql์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
exec๋ช…๋ น์–ด๋Š” run๋ช…๋ น์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ์‹คํ–‰์ค‘์ธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ssh server ๋“ฑ์„ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  exec๋ช…๋ น์–ด๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

(ssh server๋Š” ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๋กœ ์ธํ•ด ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.)

 

๋‚œ ์ด๋ฆ„์„ mysql1์œผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— docker exec -it mysql1 mysql๋ผ๊ณ  ์ž…๋ ฅํ•ด์ฃผ์—ˆ๋‹ค.

 

 

mysql์— ์ ‘์†ํ•ด์„œ show databases; ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์Šคํ‚ค๋งˆ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ์ž‘์—…ํ•  new database ์ƒ์„ฑ : create database wp CHARACTER SET utf8;
  • ๊ถŒํ•œ ๋ถ€์—ฌ : grant all privileges on wp.* to wp@'%' identified by 'wp';
  • ๊ถŒํ•œ ์ ์šฉ : flush privileges;

 

4. ์›Œ๋“œํ”„๋ ˆ์Šค ๋ธ”๋กœ๊ทธ ์‹คํ–‰ํ•˜๊ธฐ

docker run -d -p 8080:80  
-e WORDPRESS_DB_HOST=host.docker.internal
-e WORDPRESS_DB_NAME=wp 
-e WORDPRESS_DB_USER=wp 
-e WORDPRESS_DB_PASSWORD=wp 
wordpress

๋งŒ์•ฝ ๋‚˜์ฒ˜๋Ÿผ mysql์˜ port๋ฅผ 3306์ด ์•„๋‹Œ ๋‹ค๋ฅธ port๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค๋ฉด

-e WORDPRESS_DB_HOST=host.docker.internal:3366์ฒ˜๋Ÿผ internal:(๋ณ€๊ฒฝํ•œ port)๋กœ ์ˆ˜์ •ํ•œ ๋’ค ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

๐Ÿ‘‡ ๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ž˜๋ชป ๋งŒ๋“  ๊ฒฝ์šฐ

  1. docker ps ๋ช…๋ น์–ด๋กœ ์‚ญ์ œํ•  ์ปจํ…Œ์ด๋„ˆid ํ™•์ธ
  2. docker stop ์ปจํ…Œ์ด๋„ˆid ๋ช…๋ น์–ด๋กœ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€
  3. docker rm ์ปจํ…Œ์ด๋„ˆid ๋ช…๋ น์–ด๋กœ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ

(์ด๋ฏธ์ง€๋Š” ์‚ญ์ œํ•  ํ•„์š” ์—†์Œ)

 

๋ธŒ๋ผ์šฐ์ €์—์„œ localhost:8080๋กœ ์ ‘์†ํ•˜๋ฉด ์›Œ๋“œํ”„๋ ˆ์Šค ํ™”๋ฉด์ด ๋œฌ๋‹ค!

๊ณ„์†ํ•ด์„œ ์›Œ๋“œํ”„๋ ˆ์Šค ๊ณ„์ •์„ ๋งŒ๋“œ๋Š” ์ž‘์—…๊นŒ์ง€ ์ง„ํ–‰ํ•ด๋ณด์ž. ๋‚˜๋Š” ์‚ฌ์šฉ์ž๋ช…์„ taeong์œผ๋กœ ํ•ด์„œ ๊ณ„์ • ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.

 

 

์ง€๊ธˆ๊นŒ์ง€ ํ•œ ์ž‘์—…๋“ค์„ ๋ฆฌ๋ทฐํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

1. ๋กœ์ปฌ์—์„œ mysql ์ปจํ…Œ์ด๋„ˆ ๋„์›€

2. mysql ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑํ•จ

3. wordpress ์ปจํ…Œ์ด๋„ˆ ๋„์›€

4. wordpress ๊ณ„์ •์„ ์ƒ์„ฑํ•จ

 

 

๊ทธ๋Ÿผ docker exec -it mysql1 mysql ๋ช…๋ น์–ด๋กœ ๋‹ค์‹œ mysql์— ์ ‘์†ํ•ด์„œ ์›Œ๋“œํ”„๋ ˆ์Šค ๊ณ„์ •์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.
mysql์— ์ ‘์†ํ–ˆ๋‹ค๋ฉด ์•„๋ž˜์˜ sql๋ฌธ์„ ํ†ตํ•ด ์œ ์ € ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค.

show databases;
use wp
show tables;
select * from wp_users;

ํ™•๋Œ€ํ•ด์„œ..๋ด์ฃผ์„ธ์š”

select์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด taeong์ธ ๊ณ„์ •์ด ํ…Œ์ด๋ธ” ์•ˆ์— ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€