์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ! ๊ทธ์
์ฒ์
์ด ๋ชจ๋ ์ผ์ ๋ด๊ฐ Digital Ocean์์ 5๋ฌ๋ฌ์ ๋น๋ฆฐ ๊ธฐ๊ณ๋ฅผ ์ฒญ์ํ๋ 24์์ ๋น์ค๋ ๋ ์ ๋
์ ์์๋์์ต๋๋ค. Docker๊ฐ XNUMXGB์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋์คํฌ ๊ณต๊ฐ์ ์ด๋ฏธ์ง์ ์ปจํ
์ด๋๋ก ๋ชจ๋ ์ฑ์ ๊ธฐ ๋๋ฌธ์ ๊ธฐ๊ณ๊ฐ ์ ์ง๋์์ต๋๋ค. ์์ด๋ฌ๋ํ ์ ์ ์ด๋ฌํ ๋ชจ๋ ์ด๋ฏธ์ง์ ์ปจํ
์ด๋๊ฐ ์ผ์์ ์ด๋ฉฐ ์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๊ฐ ์ถ์๋ ๋๋ง๋ค ๋ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ์ ํ
์คํธํ๋ ๋ฐ๋ง ํ์ํ๋ค๋ ๊ฒ์
๋๋ค. ์ฐ๋ ๊ธฐ๋ฅผ ์ ๋ฆฌํ๊ธฐ ์ํด ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ cron ์ผ์ ์ ์ค์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ๋์์ด ๋์ง ์์์ต๋๋ค. ๋งค๋ฒ ์๋ฒ์ ๋์คํฌ ๊ณต๊ฐ์ด ์๋ชจ๋๊ณ ์๋ฒ๊ฐ ์ค๋จ๋๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค(๊ธฐ๊ปํด์ผ). ์ด๋ ์์ ์์ ์ปจํ
์ด๋์์ Jenkins๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ๊ณผ ์ปจํ
์ด๋์ ์ ๋ฌ๋ Docker ๋ฐ๋ชฌ ์์ผ์ ํตํด ๋น๋ ํ์ดํ๋ผ์ธ์ ์์ฑ ๋ฐ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธฐ์ฌ๋ฅผ ์ ํ๊ฒ ๋์์ต๋๋ค. ์์ด๋์ด๋ ๋ง์์ ๋ค์์ง๋ง ๋ ๋์๊ฐ Docker ๋ด๋ถ์์ Docker๋ฅผ ์ง์ ์คํํ๋ ์คํ์ ํด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ ๋น์์๋ Docker ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ๋ค๋ฅธ ์ปจํ
์ด๋ ๋ด๋ถ์์ ํ
์คํธํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์์ ํ ๋
ผ๋ฆฌ์ ์ธ ์๋ฃจ์
์ธ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค(์ด๋ฅผ ์คํ
์ด์ง ์ปจํ
์ด๋๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค). ์์ด๋์ด๋ -rm ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ
์ด์ง ์ปจํ
์ด๋๋ฅผ ์์ํ๋ ๊ฒ์ด์์ต๋๋ค. ์ด ํ๋๊ทธ๋ ์ค์ง ์ ์ ์ฒด ์ปจํ
์ด๋์ ๋ชจ๋ ํด๋น ๋ด์ฉ์ ์๋์ผ๋ก ์ญ์ ํฉ๋๋ค. ๋๋ Docker ์์ฒด์ Docker ์ด๋ฏธ์ง๋ฅผ ์กฐ์ํ์ต๋๋ค(
๊ดํ. ์ฝ
๋๋ ์ปจํ ์ด๋๊ฐ ๋ด๊ฐ ํ์๋ก ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋๋ก ๋ง๋ค๊ธฐ ์์ํ๊ณ ์คํ์ ๊ณ์ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ ์๋ง์ ์์น์ด ํ์ํ์ต๋๋ค. ๋ด ์ํ์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด์์ต๋๋ค.
-
๋ํํ ๋ชจ๋์์ Docker ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๋ค.
docker run --privileged -it docker:18.09.6
์ปจํ ์ด๋ ๋ฒ์ ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๊ณ ์ค๋ฅธ์ชฝ์ด๋ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด DinD๊ฐ ํธ๋ฐ์ผ๋ก ๋ณํฉ๋๋ค. ์ค์ ๋ก ์ ๋ฒ์ ์ด ์ถ์๋๋ฉด ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ฆ์ ์์ ๋ค์ด๊ฐ์ผ ํฉ๋๋ค. -
์ด๋ค ์ปจํ ์ด๋๊ฐ ์คํ๋๊ณ ์๋์ง ์์๋ด๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ง๋ง(๋ต๋ณ: ์์) ์ด์จ๋ ๋ช ๋ น์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
docker ps
์กฐ๊ธ ๋๋ผ์๊ฒ ์ง๋ง Docker ๋ฐ๋ชฌ์ด ์คํ๋๊ณ ์์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 192.168.65.1:53: no such host
-
์ง์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค.
dockerd &
๋ ๋ค๋ฅธ ๋ถ์พํ ๋๋ผ์:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
-
iptables ๋ฐ bash ํจํค์ง๋ฅผ ์ค์นํ์ญ์์ค(๋ชจ๋ ๊ฒ์ด sh๋ณด๋ค bash์์ ์์ ํ๋ ๊ฒ์ด ๋ ์ฆ๊ฒ์ต๋๋ค):
apk add --no-cache iptables bash
-
bash๋ฅผ ์คํํด ๋ด ์๋ค. ๋ง์ง๋ง์ผ๋ก ์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ธ ์๋ก ๋์์์ต๋๋ค
-
Docker๋ฅผ ๋ค์ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
dockerd &
๋ค์์ผ๋ก ๋๋๋ ๊ธด ๋ก๊ทธ ์ํธ๊ฐ ํ์๋ฉ๋๋ค.
INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock
-
์ํฐ ํค๋ฅผ ์น์์ค. ์ฐ๋ฆฌ๋ ๋ค์ ๋ฐฐ์ฌ๋ก ๋์์์ต๋๋ค.
์ด์ ๋ถํฐ Docker ์ปจํ ์ด๋ ๋ด๋ถ์์ ๋ค๋ฅธ ์ปจํ ์ด๋๋ฅผ ์์ํ๋ ค๊ณ ์๋ํ ์ ์์ง๋ง Docker ์ปจํ ์ด๋ ๋ด๋ถ์์ ๋ค๋ฅธ Docker ์ปจํ ์ด๋๋ฅผ ์์ํ๋ ค๊ณ ํ๊ฑฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ปจํ ์ด๋๊ฐ ์ถฉ๋ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๋ค์ ์์ํ์ธ์.
์์ฒด DinD ์ปจํ ์ด๋ ๋ฐ ์๋ก์ด ์คํ
์ ๋จ๊ณ๋ฅผ ๊ณ์ํด์ ๋ฐ๋ณตํ์ง ์๊ธฐ ์ํด ๋๋ง์ DinD ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์์ต๋๋ค.
์๋ ์ค์ธ DinD ์๋ฃจ์
์ ํตํด Docker ๋ด๋ถ์์ Docker๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์คํํ๊ณ ๋ ๋ชจํ์ ์ธ ์คํ์ ์ํํ ์ ์๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์์ต๋๋ค.
์ด์ MySQL๊ณผ Nodejs๋ฅผ ์คํํ๋ (์ฑ๊ณต์ ์ธ) ์คํ ์ค ํ๋๋ฅผ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ฐธ์์ฑ์ด ์๋ ์ฌ๋์ ์ฌ๊ธฐ๊ฐ ์ด๋ ๋์ง ์ ์ ์์ต๋๋ค
์์ํด ๋ณด๊ฒ ์ต๋๋ค.
-
๋ํํ ๋ชจ๋์์ DinD๋ฅผ ์์ํฉ๋๋ค. ์ด ๋ฒ์ ์ DinD์์๋ ํ์ ์ปจํ ์ด๋๊ฐ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ํฌํธ๋ฅผ ์๋์ผ๋ก ๋งคํํด์ผ ํฉ๋๋ค(์ด๋ฏธ ์์ ์ค์ ๋๋ค).
docker run --privileged -it -p 80:8080 -p 3306:3306 alekslitvinenk/dind
bash์ ๋ค์ด๊ฐ ์ฆ์ ํ์ ์ปจํ ์ด๋ ์คํ์ ์์ํ ์ ์์ต๋๋ค.
-
MySQL์ ์คํํฉ๋๋ค:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql
-
๋ก์ปฌ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ๋์ง ํ์ธํด ๋ด ์๋ค.
-
๋ ๋ฒ์งธ ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๋ค.
docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server
ํฌํธ ๋งคํ์ ์ ํํ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 8080:8080, ์ด๋ฏธ ํธ์คํธ์ ํฌํธ 80์ ์์ ์ปจํ ์ด๋์ ํฌํธ 8080์ ๋งคํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
-
๋ธ๋ผ์ฐ์ ์์ localhost๋ก ์ด๋ํ์ฌ ์๋ฒ๊ฐ "Hello World!"๋ผ๊ณ ์๋ตํ๋์ง ํ์ธํฉ๋๋ค.
๋ด ๊ฒฝ์ฐ์๋ ์ค์ฒฉ๋ Docker ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์คํ์ด ๋งค์ฐ ๊ธ์ ์ ์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ผ๋ฉฐ ๊ณ์ํด์ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์คํ ์ด์ง์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ์ ๊ฐ ๋ณด๊ธฐ์๋ ์ด๊ฒ์ด Kubernetes๋ Jenkins X๋ณด๋ค ํจ์ฌ ๋ ๊ฐ๋ฒผ์ด ์๋ฃจ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ ์ฃผ๊ด์ ์ธ ์๊ฒฌ์ ๋๋ค.
์ค๋ ๊ธฐ์ฌ๋ ์ฌ๊ธฐ๊น์ง์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค์ ๊ธฐ์ฌ์์๋ Docker์์ Docker๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์คํํ๊ณ ์ค์ฒฉ๋ ์ปจํ ์ด๋์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง์ดํธํ๋ ์คํ์ ๋ํด ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
PS ์ด ํ๋ก์ ํธ๊ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด GitHub์์ ๋ณ์ ์ ์ฃผ๊ณ ํฌํฌํ ํ ์น๊ตฌ๋ค์๊ฒ ์๋ฆฌ์ธ์.
Edit1 2๊ฐ์ ๋์์์ ์ค์ฌ์ผ๋ก ์ค๋ฅ ์์
์ถ์ฒ : habr.com