docker container
์ปจํ ์ด๋
- ์คํ์ ๋ ๋ฆฝ์ฑ์ ํ๋ณดํด์ฃผ๋ ์ด์์ฒด๊ณ ์์ค์ ๊ฒฉ๋ฆฌ ๊ธฐ์
- ํ๋์ application ์ด๋ผ๊ณ ๋ณผ ์ ์์
ํน์ง
- ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋๊ฐ ์์ ํ๊ฒ ๋
๋ฆฝ๋ ๊ณต๊ฐ์ผ๋ก ๋ถ๋ฆฌ๋์ด ๋์
- cpu, memory, disk ๋ฑ์ HW ๋ฆฌ์์ค
- ๊ฐ app์ user id
- Network
- ํ๋์ ์ปจํ ์ด๋(application)์ ์์ ์ฌํญ ์๊ธธ ๊ฒฝ์ฐ ํด๋น ์ปจํ ์ด๋๋ง ์์ ํ ๋ฐฐํฌ ๊ฐ๋ฅ
Docker host
- docker daemon์ด ๋์ํ๋ linux kernel ์ด ์๋ ์์คํ
- daemon
- ํญ์ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ (ex - server)
- ls, rm -> daemon ์๋
- ์ฆ docker๊ฐ container๋ฅผ ์คํํ ์ ์๋ ํ๋ซํผ
container
- ๋ ๋ฆฝ๋ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ค์ ํ๋์ docker daemon ํ์ ๋์
- ๊ฐ๊ฐ์ ์ปจํ ์ด๋๋ค์ ์๋ฒฝํ๊ฒ ๋ ๋ฆฝ๋์ง๋ง ์ปค๋์ ํ๋ -> ๊ฐ ์ปจํ ์ด๋๋ ๋์ผํ ์ปค๋ ์ฌ์ฉ
- docker host ์ ์ฅ์์ ์ปจํ ์ด๋๋ ๋จ์ํ ๋์๋๋ ํ๋์ ํ๋ก์ธ์ค
- ์ฌ์ฉ์ ์ ์ฅ์์ ์ปจํ ์ด๋๋ ์์ ํ ๋ ๋ฆฝ๋์ด ๋์ํ๋ application์ผ๋ก ๊ด๋ฆฌ
๊ตฌ์กฐ
์ด๋ฏธ์ง
- ์ปจํ ์ด๋ ์คํ์ ํ์ํ ํ์ผ๊ณผ ์ค์ ๊ฐ๋ฑ์ ํฌํจํ๊ณ ์๋ ๊ฒ
- ์ํ๊ฐ์ ๊ฐ์ง ์๊ณ ๋ณํ์ง ์๋๋ค.
์ปจํ ์ด๋ ๊ตฌ์กฐ
-
nodejs web application์ด ๋ด๊ธด ์ปจํ ์ด๋๋ผ๊ณ ๊ฐ์
- 3๋ฒ layer
- base image layer
- app.js๊ฐ ์คํ๋๊ธฐ ์ํด ํ์ํ ์ค์น
- 2๋ฒ layer
- source image layer
- app.js ์์คํ์ผ
- 1๋ฒ layer
- app.js(application) ๋ฅผ ์คํ์ํค๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค ๋์ด
- ์น๋ค ํตํ์ด์ container image๋ก ๋ถ๋ฆ
์ปจํ ์ด๋ ์ด๋ฏธ์ง
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ ์ฌ๋ฌ layer ์ด๋ฏธ์ง๋ก ๊ตฌ์ฑ๋จ
- ํ๋์ application์ด ์ ์คํ ๋ ์ ์๊ฒ ๋ชจ์์ ธ ์๋ ์ด๋ฏธ์ง๋ค์ ์กฐํฉ
- ๋์ค์ build ํ ๋ ์ด ๊ตฌ์กฐ๋๋ก build
์ปจํ ์ด๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ์ฐจ์ด
- docker๊ฐ ๋์์ค์ธ docker host ๋ด๋ถ
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ ํ๋๋์คํฌ์ ํ์ผํํ๋ก ์ ์ฅ๋จ
- ๊ฐ ๋ ์ด์ด๋ณ๋ก ํ์ผ์ด ๋ฐ๋ก๋ฐ๋ก ์ ์ฅ๋จ
- ์ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ํ๋์ applicationn process๋ก running ์ค -> container
- container
- ๋์ ์ค์ธ process
- container image
- ํ์ผ
๋์ ๋ฐฉ์
- $docker search nginx
- docker hub์ nginx container image ์๋์ง search, ์์ผ๋ฉด ๋ฆฌ์คํธ๋ก ๋ฝ์์ค
- docker hub
- ์ปจํ ์ด๋ image๋ฅผ ์ ์ฅํด ๋๊ณ ์๋ ์ฐฝ๊ณ
- ์ฝ 10๋ง์ฌ๊ฐ ๋๊ฒ ์์
- $docker pull nginx:latest
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ฐ๋ฆฌ hdd๋ก ๊ฐ์ ธ์ค๊ธฐ
- ์์ง ์ปจํ ์ด๋ ์๋
- $docker run โd โname web -p 80:80 nginx:latest
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋ํ ์ํด
- docker ํ๋ซํผ ์์ ํ๋์ ์ปจํ ์ด๋ ๋์
- nginx๋ผ๋ ์น ์๋ฒ๊ฐ ์น์ด๋ผ๋ ์ด๋ฆ์ค๋ก ์ปจํ ์ด๋ ํ ๋์ด์ ํ์ฌ ์คํ์ค์ธ application ์ด ๋จ
์ค์ต
1. docker daemon์ด ๋์์ค์ธ์ง ํ์ธ
- $ systemctl status docker
- active(running) -> ํ์ฌ docker ์ ์คํ๋จ
- enabled -> ๋ค์ ๋ถํ ์์๋ ์ ์คํ๋จ
2. docker search
- ๋ด๊ฐ ์ํ๋ container image๊ฐ docker hub์ ์๋์ง search
- permission denied error
- Got permission denied while trying to connect to the Docker daemon socket
- ํด๋น ๋ฌธ์ ๋ ์ฌ์ฉ์๊ฐ /var/run/docker.sock๋ฅผ ์ ๊ทผํ๋ คํ์ง๋ง ๊ถํ์ด ์์ด ๋ฐ์ํ๋ ๋ฌธ์
- ์ฌ์ฉ์๊ฐ root:docker ๊ถํ ๊ฐ๊ณ ์์ด์ผํจ
- ์ฌ์ฉ์๋ฅผ docker group ์ ํฌํจ์ํค๋ฉด ๋จ
- sudo usermod -a -G docker $USER
- ์ ๋ช ๋ น ํ ์์คํ ์ฌ๊ตฌ๋
3. image ํ์ธ
- $ docker images
- ํ์ฌ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ญ ์๋์ง ํ์ธ
4. image pull
- hub์ ์๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ฐ๋ฆฌ ์์คํ ์ ๋ค์ด๋ก๋
- $ docker pull nginx
- ์์ง ์ปจํ ์ด๋ ์๋
5. docker run
- ์ปจํ ์ด๋ ์คํํ๊ณ ํ์ธ
- ์คํ ํ ๋จ๋ ๋ฌธ์๋ค -> uniqueํ container id
- ํ์ธ