Explanation
Docker ์ปจํ ์ด๋๊ฐ ์์ํ ๋, ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์ปจํ ์ด๋๋ ์คํ ๊ฐ๋ฅํ ์คํฌ๋ฆฝํธ๋ ํ์ผ์ ์ด๋ฏธ์ง ์ค์ ์์ ๊ฐ์ ธ์ต๋๋ค. ์ปจํ ์ด๋๋ ๋ณดํต ์ ์๋ํ๋ ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ์ ธ์ค์ง๋ง, ํ์ํ๋ค๋ฉด ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ด ์ ์ฉ์ ์ปจํ ์ด๋์ ํ๋ก๊ทธ๋จ์ด ์ ํํ ๋น์ ์ด ์ํ๋ ๋๋ก ์๋ํ๋๋ก ๋์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ธฐ๋ณธ ํฌํธ์์ ๋ฆฌ์ค๋ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปจํ ์ด๋๊ฐ ์๊ณ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด, ๋น์ ์ ์๋ก์ด ์ปจํ ์ด๋์ ์ด๋ฏธ ์๋ ์ปจํ ์ด๋์ ํฌํธ๊ฐ ์ถฉ๋ํ์ง ์๋๋ก ์๋ก์ด ์ปจํ ์ด๋์ ํฌํธ ์ค์ ์ ๋ฐ๊พธ๊ณ ์ถ์ ์ ์์ต๋๋ค. ๊ฐ๋ ํ๋ก๊ทธ๋จ์ด ๋ฌด๊ฑฐ์ด ์์ ์ ๋ค๋ฃจ๊ธฐ ์ํด ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ด ์ ์ ํ ์๋ํ๋๋ก ํน์ ํ ์ค์ ์ ์ฃผ๊ธฐ ์ํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ ๊ณตํ๊ณ ์ถ๋ค๋ฉด, ๋น์ ์ ์ปจํ ์ด๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ฆฌ๊ณ ์ถ์ ์ ์์ต๋๋ค.
docker run ๋ช
๋ น์ด๋ ๊ธฐ๋ณธ ์ค์ ๊ฐ์ ์ค๋ฒ๋ผ์ด๋ฉ ํ ์ ์๋ ๊ฐ๋ ฅํ ๋ช
๋ น์ด๋ฅผ ์ ๊ณตํ์ฌ ์ํ๋ ๋๋ก ์ปจํ
์ด๋๊ฐ ๋์ํ ์ ์๊ฒ ํฉ๋๋ค. ๊ทธ ๋ช
๋ น์ด๋ ์ปจํ
์ธ๋์ ํ๋์ ์ปค์คํ
ํ ์ ์๋ ๋ช ๊ฐ์ง ํ๋๊ทธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฌ๊ธฐ์ ์ด๊ฒ์ ์ํํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
Overriding the network ports
๊ฐ๋ ๋น์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฐ ๋ชฉ์ ๊ณผ ํ
์คํ
๋ชฉ์ ์ ์ํด ๋ถ๋ฆฌํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ๊ฐ์ ํฌํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๋ฅผ ์คํํ๋ ๊ฒ์ ์ถฉ๋์ ๋ฐ์ํ ์ ์์ต๋๋ค. docker run ๋ช
๋ น์ด์์ -p ใ
์ต์
์ ์ฌ์ฉํด ์ปจํ
์ด๋ ํฌํธ๋ฅผ ํธ์คํธ ํฌํธ๋ก ๋งคํํ ์ ์๊ณ , ์ด๊ฒ์ ์ด๋ ํ ์ถฉ๋ ์์ด ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค.
$ docker run -d -p HOST_PORT:CONTAINER_POER postgres
Setting environment variabels
์ด ์ต์
์ ํ๊ฒฝ๋ณ์ foo๋ฅผ ์ปจํ
์ด๋ ๋ด๋ถ์ ํ๊ฒฝ๋ณ์ bar์ ๊ฐ์ผ๋ก ์ธํ
ํฉ๋๋ค.
$ docker run -e foo=bar postgres env
๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ๋์ต๋๋ค:
HOSTNAME=2042fe6ebe4
foo=bar
Tip
.envํ์ผ์ ์๋ง์-eํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ๋ณต์กํ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ์ผ ์์ด ์ปจํ ์ด๋์ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ ์ ์ฉํ ๋ฐฉ๋ฒ์ ๋๋ค..envํ์ผ์ ์ฌ์ฉํ๊ธฐ ์ํด,docker runใ ๋ช ๋ น์ด์--env-file๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.$ docker run --env-file .env postgres env
Restricting the container to consume the resources
--memory ํ๋๊ทธ์ --cpus ํ๋๊ทธ๋ฅผ docker run ๋ช
๋ น์ด์ ์ฌ์ฉํด ์ปจํ
์ด๋๊ฐ ์ฌ์ฉํ๋ CPU์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํธ์คํธ ๋จธ์ ์์ ๊ณผ๋ํ ๋ฆฌ์์ค๋ฅผ ์๋นํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด Python API ์ปจํ
์ด๋์ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๊ทธ ๋ช
๋ น์ด์
๋๋ค:
$ docker run -e POSTGRES_PASSWORD=secret --memory="512m" --cpus="0.5" postgres
์ด ๋ช ๋ น์ด๋ ์ปจํ ์ด๋๊ฐ 512MB์ ๋ฉ๋ชจ๋ฆฌ์ CPU์ ์ ๋ฐ์ ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํํฉ๋๋ค.
Monitor
docker stats๋ช ๋ น์ด๋ก ์ปจํ ์ด๋์ ์ค์๊ฐ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋ง ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํ์ฉ๋ ๋ฆฌ์์ค๊ฐ ์ ์ ํ์ง ๋๋ ์์ ์ด ํ์ํ์ง ์ดํดํ๋๋ฐ ๋์์ ์ค๋๋ค.
docker run ๋ช
๋ น์ด์ ์ ์ ํ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์, ๋น์ ์ ์ปจํ
์ด๋ํ ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋์์ ํน์ ํ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
Try it out
์ด๋ฒ ํธ์ฆ์จ ๊ฐ์ด๋์์, ์ปจํ
์ด๋ ๊ธฐ๋ณธ๊ฐ์ ์ค๋ฒ๋ผ์ด๋ฉ ํ๊ธฐ ์ํด docker run ๋ช
๋ น์ด๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ ์ ์์ต๋๋ค.
- Docker Desktop์ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํฉ๋๋ค.
Run multiple instances of the Postgres database
- ๋ค์ ๋ช ๋ น์ด๋ก Postgres ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด ์ปจํ ์ด๋๋ฅผ ์์ํ์ธ์:
$ docker run -d -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres
์ด๊ฒ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ Postgres ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์คํ ํ ๊ฒ์ด๊ณ , ์ปจํ
์ด๋ ํฌํธ 5432์ ํธ์คํธ ๋จธ์ ์ ํฌํธ 5432๋ฅผ ๋งคํํฉ๋๋ค.
- ๋ค๋ฅธ ํฌํธ๋ก ๋งคํ๋ ๋ ๋ฒ์งธ Postgres ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๋ค.
$ docker run -d -e POSTGRES_PASSWORD=secret -p 5433:5432 postgres
์ด๊ฒ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค๋ฅธ Postgres ์ปจํ
์ด๋๋ฅผ ์์ํ ๊ฒ์ด๊ณ , ์ปจํ
์ด๋์ ๊ธฐ๋ณธ postgres ํฌํธ์ธ 5432๋ฒ ํฌํธ์์ ์คํ๋์ง๋ง, ํธ์คํธ ๋จธ์ ์ 5433๋ฒ ํฌํธ์ ๋งคํ๋์ด ์์ต๋๋ค. ๋น์ ์ ์๋ก์ด ์ปจํ
์ด๋๊ฐ ์ด๋ฏธ ์คํ์ค์ธ ์ปจํ
์ด๋์ ์ถฉ๋์ ์ผ์ผํค์ง ์๋๋ก ํธ์คํธ ํฌํธ๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ์ต๋๋ค.
- Docker Desktop Dashboard์ Containers์์ ๋ ์ปจํ
์ด๋๊ฐ ์คํ์ค์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
