๊ฐ๋ฐํ๊ฒฝ
๋ณดํต ๊ฐ๋ฐ์๋ค์ ์์ ์ ๋ก์ปฌ ์ปดํจํฐ์์ ๊ฐ๋ฐ์ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ์๋ฒ์์ ์คํ์์ผ ๋ฐฐํฌํ๋ค. ์ด๋ ๊ฒ ๋๋ ค๋ฉด ๊ฐ๋ฐ์์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์๋ฒ์ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๊ฐ์์ผ ํ๋ค. ๊ฐ๋ฐํ๊ฒฝ์ด ๋ค๋ฅด๋ฉด ์ฌ๋ฌ ๊ท์ฐฎ์ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ๋ค. ๊ฒ๋ค๊ฐ ๋ง์ฝ ์๋ก์ด ์๋น์ค๋ฅผ ๋ง๋๋ ค๋๋ฐ ์ด ์๋น์ค๊ฐ ๋ค๋ฅธ ํ๊ฒฝ์์ ๊ฐ๋ฐ๋์๋ค๋ฉด ๋ ์ค์ ์ ์๋กํด์ค์ผํ๋ค.
๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ์ ์๊ฐ๋ณด๋ค ๊ท์ฐฎ์ ์์ ์ด๋ค. ์ด์ ํ๊ฒฝ์ ๊ตฌ์ถํด์ผํ๋๋ฐ ๋ฉ๋ด์ผ๋ ์๊ณ ์ ์์๋ ์๋ค๋ฉด? ๋ค ๊ฐ๋ฐํด๋จ๋๋ ์๋ฒ์ ํ๊ฒฝ์ด ๋ฌ๋ผ์ ๋ค์ ๋ง์ถฐ์ผ ํ๋ค๋ฉด? ์์ฒญ ๊ณจ์น์ํ์ง๋ค...
๊ฒ๋ค๊ฐ, ์์ฆ MSA(Micro Service Architecture) ๊ฐ ํซํ๋ค. ์๋น์ค๋ฅผ ์์ ๋ชจ๋๋ณ๋ก ๋๋์ด ๊ด๋ฆฌํ๋ ์ํคํ ์ฒ์ธ๋ฐ, ๋ชจ๋๋ค์ ๊ฐ๊ฐ ๋ค๋ฅธ ํ๊ฒฝ์ ๊ฐ์ง ์ ์๋ค. ์ด ๋ชจ๋๋ค์ ์ด์ฉํ๋ ค๋ฉด ๊ฐ๊ฐ ๋ค๋ฅธ ์๋ฒ๋ฅผ ์ด์ฉํด์ผ ํ๋ค... ๊ด๋ฆฌ๊ฐ ์ ๋ง ๋ณต์กํ ๊ฒ์ด๋ค.
์ด๋ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ์ปดํจํฐ์ ์๋ฒ ํ๊ฒฝ์ ์์ฝ๊ฒ ๋ง์ถฐ์ค ๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ํ๊ฒฝ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
๋์ปค๋?
๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ์ด๋ค. ๊ฐ์ํ๊ฐ ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๐ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ ๊ฒ์๊ธ์ด ์๋ค. ์ปจํ ์ด๋๊ฐ ๋ฌด์์ธ์ง, ๋ค๋ฅธ ๋ฐฉ์์ธ VM๊ณผ์ ์ฐจ์ด๋ ๋ฌด์์ธ์ง๋ ์ ์ด๋์๋ค.
๋์ปค๋ environment dispartiy๋ฅผ ํด๊ฒฐํด์ค๋ค. ๊ฐ๋ฐ๋ ๊ฒ์ ์๋ฒ์ ์ฌ๋ฆฌ๊ธฐ๋ง ํ๋ฉด ๋๋๋ฐ, ๊ฐ๋ฐํ๊ฒฝ ๋ฌธ์ ๋ก ์๋ฌ๊ฐ ๋ฌ์ ๋! ๋ค๋ฅธ ํ๊ฒฝ์์๋ ์ฝ๊ฒ ๋๊ฐ์ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋ค.
๋ฐฉ๋ฒ๋ ์์ฃผ ๊ฐ๋จํ๋ค. ๋์ปค๋ฅผ ์์ชฝ์ ๋ค ์ค์นํ๊ณ , ๊ฐ๋ฐํ๊ฒฝ์ด ๋ด๊ฒจ ์๋ ์ด๋ฏธ์ง๋ผ๋ ๊ฒ์ ๋ด๋ ค๋ฐ๋๋ค. ๋์ปค๋ ์ด ์ด๋ฏธ์ง๋ฅผ ํตํด ๊ฐ๋ฐํ๊ฒฝ์ด ๊ตฌ์ถ๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ค. ์์ชฝ์ ๊ฐ์ ๊ฐ๋ฐํ๊ฒฝ์ ๊ฐ์ง ์ปจํ ์ด๋ ์์์ ๊ฐ๋ฐ๊ณผ ์คํ์ ํ๋ฉด ๋๋ค.
์ด ์ด๋ฏธ์ง๋ Dockerfile ๋ก ๋ง๋ค ์ ์๋ค. ์ด Dockerfile ์๋ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ๊ณผ ์ปจํ ์ด๋ ์คํ์ ์ํ ๊ฐ์ข ์คํฌ๋ฆฝํธ๋ค์ด ๋ด๊ฒจ ์๋ ํ์ผ์ด๋ค. ๋ ์ด๋ ๊ฒ ๋ง๋ ์์ ์ ์ด๋ฏธ์ง๋ฅผ Docker Hub ๋ผ๋ ๋์ปค์ ์ด๋ฏธ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ก๋ํ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค๋ ๋ค์ด๋ฐ์ ์ ์๋ค.
๊ฐ๋จ ํํ ๋ฆฌ์ผ
๐ ๋์ปค Get Started ์์ ๋์ปค Desktop ์ ์ค์นํ๋ฉด ๋์ปค๊ฐ ์ค์น๋๋ค. ์ ์ค์น๋์๋์ง ํ์ธํด๋ณด๊ธฐ์ํด ํฐ๋ฏธ๋์์ ๋ฒ์ ์ ํ์ธํด๋ณด์.
$ docker -v
Docker version 20.10.10, build b485636
Image pull
๋จผ์ ๋ง๋ค๊ณ ์ถ์ ํ๊ฒฝ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ฌ๊ธฐ์๋ mariaDB ํ๊ฒฝ์ ๋ง๋ค์ด๋ณผ ๊ฒ์ด๋ค. mariaDB ์ด๋ฏธ์ง๋ฅผ ๐ Docker Hub ์์ ๊ฒ์ํ๋ค. ๊ทธ๋ผ Official Image ๋ผ๋ ํ๊ทธ๊ฐ ๋ฌ๋ฆฐ ๋์ปค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ์ด๋ฏธ์ง๊ฐ ๋จ๋๋ฐ, ํด๋น ์ด๋ฏธ์ง์ ๋ค์ด๊ฐ๋ฉด Pull ๋ช ๋ น์ด๊ฐ ์๋ค.
pull ๋ช ๋ น์ด๋ฅผ ๋ณต์ฌํด ํฐ๋ฏธ๋์ ์ ๋ ฅํด์ค๋ค. ๋ค์ :latest ์ต์ ์ ๋ถ์ด๋ฉด ์ต์ ๋ฒ์ ์ผ๋ก ๋ค์ด๋ฐ๋๋ฐ, ์ด ์ต์ ์ default ์ด๋ ์ ๋ถ์ฌ์ค๋ ๋๋ค.
์ ๋ค์ด๋์๋์ง docker images ๋ช ๋ น์ด๋ก ํ์ธํด๋ณธ๋ค.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest e2278f24ac88 2 weeks ago 410MB
container run
์ด์ ๋ค์ด๋ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋ํํ๊ณ ์คํํด๋ณด์.
๋์ปค ๋ฐ์คํฌํ์ ์ด์ฉํด๋ ๋์ง๋ง, ์ฌ๊ธฐ์๋ ์ปค๋งจ๋๋ก ํด๋ณผ ๊ฒ์ด๋ค. ๋ช ๋ น์ด๋ docker run [OPTIONS] IMAGE [COMMAND] [ARG...] ์ด๋ค.
์ต์ ์ด๋ ๋ช ๋ น ์์ด ๊ฐ๋จํ๊ฒ ์์ฑํ๋ฉด docker run mariadb ๋ผ๊ณ ์ ๋ ฅํ๋ฉด ๋๋๋ฐ, db ์ ๊ฒฝ์ฐ์๋ ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์๋ก ์๊ตฌํ๊ณ ๊ทธ ๋ฐ์ ์ค์ ์ ์ํด ์๋์ฒ๋ผ ์ ๋ ฅํด์ค๋ค.
docker run --name mariadb -d -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 mariadb
์ต์ ์ค๋ช
- --name : ์ปจํ ์ด๋์ ์ด๋ฆ
- -d : detack mode ๋ก, ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ์ํค๊ฒ ๋ค๋ ๋ป.
- -e : ์ปจํ ์ด๋ ๋ด ํ๊ฒฝ๋ณ์ ์ค์ . ์ฌ๊ธฐ์๋ root ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํจ.
- -p : ํฌํธ ํฌ์๋ฉ ์ค์ . ์ธ๋ถ์์ ๋ด๊ฐ ์ค์ ํ local port ๋ก ์ ์ํ๋ฉด container port ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด๋ค. ์์๋ local:container ์ด๋ค.
์ด ์ดํ์ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋๋ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
$ docker container start mariadb
์์ฑํ ์ปจํ ์ด๋๋ฅผ ํ์ธํด๋ณด์. ๋ช ๋ น์ด๋ docker ps ์ด๋ค.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c66d4754f83 mariadb "docker-entrypoint.s…" 19 seconds ago Up 18 seconds 0.0.0.0:3306->3306/tcp mariadb
์ด๋ฒ์๋ ์ปจํ ์ด๋ ๋ด์ ๋ฐฐ์ฌ์ ์ ์ํด๋ณด์. ๋ช ๋ น์ด๋ docker exec ๋ค.
$ docker exec -it mariadb bash
root@8c66d4754f83:/#
๋ฐฐ์ฌ์ ์ ์ํ ํ maria db์ ๋ก๊ทธ์ธํ๋ค.
root@8c66d4754f83:/# mysql -u root -p
Enter password: [์ค์ ํ๋ ๋น๋ฐ๋ฒํธ]
MariaDB [(none)]>
์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ณ ์ถ๋ค๋ฉด exit ๋ก ๋ฐฐ์ฌ์์ ๋น ์ ธ๋์ค๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
$ docker container stop mariadb