docker run -it --name rocky-container rockylinux/rockylinux
docker exec -it rocky-1 bash
์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ๋์์ ์งํํ ๋ ํจ์จ์ ์ด๋ค.
๋์ปค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ, ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ํ๋์ ์๋ฒ์์ ์ฌ์ฉํ ์ ์๋ค.
ํ๋ก์ ํธ์ ๊ฐ์๋งํผ ์๋ฒ๋ฅผ ๊ตฌ๋งคํด ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฒ์ ์ผ๋ก ์ค์ ํด์ผ ํ๋ฏ๋ก ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค.
๋์ปค๋ ๊ฐ ํ๋ก์ ํธ๋ง๋ค ๋ ๋ฆฝ๋ ํ๊ฒฝ์์ ์ถฉ๋ ์์ด ์์ ํ ์ ์๋๋ก ์ง์ํ๋ค.
๋์ปค๋ HOST OS์ ์ปค๋์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ง์ ์ค์นํ์ง ์์๋ ์ด๋ฏธ์ง๋ง ์ค์นํ๋ฉด ์ฌ์ฉํ ์ ์๋ค.
๋์ปค๋ ๊ฐ์ํ๋ก ์ธํ ์๋ ์ ํ๊ฐ ๊ฑฐ์ ๋ฐ์ํ์ง ์๋๋ค.
๊ฐ์๋จธ์ ์ฒ๋ผ OS๋ฅผ ํต์งธ๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ํ์ํ ๋ถ๋ถ๋ง ๊ฒฉ๋ฆฌํ์ฌ ์ฌ์ฉํ๋ค.
์ปจํ ์ด๋๋ ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ ๊ธฐ์ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ฐ๋ณ๊ฒ ๋์ํ๋ค โ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๋์๋ ๊ด์ฐฎ๋ค.
๐ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ ๊ธฐ์ ?
: ์ปจํ
์ด๋๋ผ๋ฆฌ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ปจํ
์ด๋๊ฐ ์์์ ๋
์ํ์ง ๋ชปํ๊ฒ ๋ง๊ธฐ ๋๋ฌธ์, ํธ์คํธ OS ์์์ ์์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค
๋์ปค | ์ผ๋ฐ ํ๋ก๊ทธ๋จ |
---|---|
๋์ปค ์ด๋ฏธ์ง(=OS + ํ๋ก๊ทธ๋จ) | ํ๋ก๊ทธ๋จ |
๋์ปค ์ด๋ฏธ์ง ๋ค์ด๋ก๋ | ํ๋ก๊ทธ๋จ ์ค์น |
๋์ปค ์ด๋ฏธ์ง ์ ๊ฑฐ | ํ๋ก๊ทธ๋จ ์ ๊ฑฐ |
๋์ปค ์ด๋ฏธ์ง ์คํ => ๋์ปค ์ปจํ ์ด๋ ์์ฑ | ํ๋ก๊ทธ๋จ ์คํ => ํ๋ก์ธ์ค ์์ฑ |
๋์ปค ์ด๋ฏธ์ง 1๊ฐ => ๋์ปค ์ปจํ ์ด๋ N๊ฐ | ํ๋ก๊ทธ๋จ 1๊ฐ => ํ๋ก์ธ์ค N๊ฐ |
ํน์ง | ๋์ปค ์ปจํ ์ด๋ (Docker) | ๊ฐ์๋จธ์ (Virtual Machine) |
---|---|---|
๋น์ | ์ํํธ์ ๋ฐฉ์ ๋น๋ ค ์ฐ๋ ๊ฒ (๊ณต์ฉ ๊ณต๊ฐ์ ๊ณต์ , ๋ฐฉ์ ๋ ๋ฆฝ์ ) | ๋ ์ ์ฌ์ ๋ ๋ฆฝ๋ ์ง์ ์ง๋ ๊ฒ (๋ชจ๋ ๊ณต๊ฐ์ด ๋ ๋ฆฝ์ ) |
๊ฐ์ํ ๋ฐฉ์ | OS ์์ค์์ ๊ฐ์ํ (ํธ์คํธ OS์ ์ปค๋์ ๊ณต์ ) | ํ์ดํผ๋ฐ์ด์ ๋ฅผ ํตํ ํ๋์จ์ด ์์ค ๊ฐ์ํ |
์ด์์ฒด์ | ๋ณ๋์ OS ๋ถํ์ (ํธ์คํธ OS ๊ณต์ ) | ๊ฐ VM๋ง๋ค ๋ ๋ฆฝ๋ OS ์ค์น ํ์ |
์์ ์๋น | ๊ฐ๋ณ๊ณ ์ ์ ๋ฆฌ์์ค ์ฌ์ฉ (๊ณต์ฉ ์์์ ํ์ฉ) | ๋ฌด๊ฒ๊ณ ๋ง์ ๋ฆฌ์์ค ์ฌ์ฉ (์์ฒด ์์ ํ์) |
์์ ์๋ | ๋น ๋ฆ (๋ช ์ด ๋ด๋ก ์คํ ๊ฐ๋ฅ, ๋ฐฉ์ ๋ค์ด๊ฐ๋ ๊ฒ์ฒ๋ผ) | ๋๋ฆผ (์ง์ ์ง๋ ์๊ฐ ํ์, ์ ๋ถ์ด ๊ฑธ๋ฆด ์ ์์) |
๊ฒฉ๋ฆฌ ์์ค | ํ๋ก์ธ์ค ์์ค์์ ๊ฒฉ๋ฆฌ (๊ฐ์ ๊ฑด๋ฌผ ๋ด์ ๋ฐฉ๋ณ๋ก ๋ ๋ฆฝ์ ) | ํ๋์จ์ด ์์ค ๊ฒฉ๋ฆฌ (์ง์ด ๋ฐ๋ก ๋จ์ด์ ธ ์์ด ์์ ํ ๋ ๋ฆฝ์ ) |
์ฑ๋ฅ ์ค๋ฒํค๋ | ๋ฎ์ (์ปค๋ ๊ณต์ ๋ก ์ธํ ์ค๋ฒํค๋ ์ ์) | ๋์ (์ ์ฒด OS๊ฐ ๋์ํ๊ธฐ ๋๋ฌธ) |
์ ์ฐ์ฑ | ํธ์คํธ OS์ ์ข ์์ (๊ฐ์ ์ปค๋ ๋ฒ์ ์ ๊ณต์ ) | ๋ค์ํ OS ์คํ ๊ฐ๋ฅ (์: Windows์์ Linux ์คํ ๊ฐ๋ฅ) |
๋ณด์์ฑ | ๋ฎ์ (์ปค๋ ๊ณต์ ๋ก ์ธํด ๋ณด์์ ์ํ์ด ์กด์ฌํ ์ ์์) | ๋์ (๋ ๋ฆฝ๋ OS์ ์ปค๋๋ก ์๋ฒฝํ ๊ฒฉ๋ฆฌ ์ ๊ณต) |
์ด๋ฏธ์ง ํฌ๊ธฐ | ์์ (ํ์ํ ๋ถ๋ถ๋ง ํฌํจ, ๋ณดํต ์๋ฐฑ MB) | ํผ (์ ์ฒด OS ํฌํจ, ๋ณดํต ์ GB ์ด์) |
๋ฐฐํฌ ๋ฐ ํ์ฅ์ฑ | ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๋ฐฐํฌ ๋ฐ ํ์ฅ ๊ฐ๋ฅ (๋ฐฉ ์ถ๊ฐ๋ง ํ๋ฉด ๋จ) | ์๋์ ์ผ๋ก ๋๋ฆฌ๊ณ ๋ณต์กํจ (์๋ก์ด ์ง์ ์ง๋ ๊ณผ์ ํ์) |
์ฃผ์ ์ฌ์ฉ ์ฌ๋ก | ๋ง์ดํฌ๋ก์๋น์ค, CI/CD ํ์ดํ๋ผ์ธ, ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ, ํ ์คํธ ํ๊ฒฝ | ๋ณต์กํ ์ธํ๋ผ, ๋ ๊ฑฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ, ๋ค์ํ OS ํ๊ฒฝ ํ ์คํธ |
๋์ปค ์ด๋ฏธ์ง ๋ค์ด๋ก๋ : docker pull [์ด๋ฏธ์ง ์ด๋ฆ]
๋ค์ด๋ก๋ ๋ ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ : docker images
์ด๋ฏธ์ง ์ญ์ : docker rmi [์ด๋ฏธ์ง ์ด๋ฆ]
docker run [์ปจํ
์ด๋ ์ด๋ฆ]
docker ps -a
docker rm
์ผ๋ฐ์ ์ผ๋ก OS๋ ํน์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ด๋ OS๊ฐ ์ข ๋ฃ๋์ง๋ ์๋๋ค.
But, ๋์ปค ์ด๋ฏธ์ง(OS+ํ๋ก๊ทธ๋จ) ์คํ โ ๋์ปค ์ปจํ ์ด๋ ์์ฑ โ ์ปจํ ์ด๋ ๋ด๋ถ ์ฃผ ํ๋ก์ธ์ค ์คํ
if) ์ฃผ ํ๋ก์ธ์ค ์ข ๋ฃ โ ๋์ปค ์ปจํ ์ด๋ ์ข ๋ฃ
๋์ปค์์ docker run ๋ช ๋ น์ด๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ถ์์ ์๋ํ๋ ์ฃผ ํ๋ก์ธ์ค ๊ฐ ์๋ค.
ํ๋์ ์ปจํ ์ด๋์๋ ๋ฌด์กฐ๊ฑด 1๊ฐ์ ์ฃผ ํ๋ก์ธ์ค๊ฐ ์์ด์ผ ํ๋ค.
๋ฌผ๋ก ์ฃผ ํ๋ก์ธ์ค ๋ง๊ณ ๋ ์ปจํ ์ด๋ ์์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ์์ ์ ์๋ค.
์ฃผ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ช ๋ น์ด๋ฅผ ์ต์ข ์คํ ๋ช ๋ น์ด ๋ผ๊ณ ํ๋ค.
์ต์ข ์คํ ๋ช ๋ น์ด๋ ์ํธ๋ฆฌํฌ์ธํธ + ๋ช ๋ น์ด๋ก ์ด๋ฃจ์ด์ง๋ค.
์ปจํ ์ด๋๋ ๋ด๋ถ์์ ์คํ๋ ์ฃผ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ปจํ ์ด๋๋ ์๋์ผ๋ก ์ข ๋ฃ๋๋ค.
docker run nginx : entrypoint๋ก ์ง์ ํ nginx ์น์๋ฒ๊ฐ ์คํ๋๋ค. -> ctrl+C ํ์ง ์์ ํ ๊ณ์ ์คํ๋จ
docker run --entrypoint ls nginx : ls ๋ช
๋ น์ด ์คํ ํ ์ข
๋ฃ๋จ
docker run hello-world : /hello ํ๋ก๊ทธ๋จ ์คํ๋์ด ๋ฉ์ธ์ง ์ถ๋ ฅ ํ ์ข
๋ฃ๋จ
docker run --entrypoint ls nginx #๋จ์ผ ๋ช
๋ น
docker run --entrypoint ls -al nginx (X) #๋ณตํฉ ๋ช
๋ น
docker run --entrypoint bash nginx -c "ls -al" (o)
docker run --entrypoint bash nginx -c "echo Hello"(O)
$ docker run -it --entrypoint bash nginx
-it
: interaction์ ์ฝ์
: ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋๋ Nginx ํ๋ก์ธ์ค๋ฅผ ์คํํ์ง ์๊ณ , ๋์ bash ์
ธ์ ์คํ
์ปจํ
์ด๋ ๋ด๋ถ์์ ์ง์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ ์ ์๋ ์ํ๋ก ์ง์
ex. root@<container_id>:/#
...์ข ๋ฃ๋ฅผ ์ํ๋ฉด exit์ ์ ๋ ฅ
"์ปจํ ์ด๋๋ ๋ฉ์ธ ํ๋ก์ธ์ค(main process)๊ฐ ์คํ๋๋ ๋์๋ง ์ ์ง๋๊ณ , ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ปจํ ์ด๋๋ ์ข ๋ฃ๋๋ค."
๐ENTRYPOINT ์ CMD ์ค์ ๊ฐ์ ์ด๋ป๊ฒ ์์ง?
โ docker inspect
๋ช
๋ น์ด๋ก ํ์ธ
docker run nginx
= docker run --entrypoint bash nginx -c '/docker-entrypoint.sh nginx -g "daemon off;"'
โ ๋ด๋ถ์์ ๋๋ธ ์ฟผํธ (" ")๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ธ๋ถ๋ ์ฑ๊ธ ์ฟผํธ (' ')๋ก ๊ฐ์ธ์ผํ๋ค.
๋ฌธ์ ) docker run nginx ls -al ๋ง ํด๋ ๋ง์น ์ํธ๋ฆฌํฌ์ธํธ๊ฐ ๋์ฒด๋๋ ๊ฒ ์ฒ๋ผ ์คํ๋๋ ์ด์ ๋?
์ํฉ) ENTRYPOINT๊ฐ Nginx ๋ช ๋ น์ด๋ฅผ ์คํํด์ผํ๋๋ฐ ls -al ๋ช ๋ น์ด๋ฅผ ์ํํ๋๊น ์ํธ๋ฆฌํฌ์ธํธ๊ฐ ํด๋น ๋ช ๋ น์ด ์ํ์ผ๋ก ๋์ฒด๋๋ ๊ฒ์ฒ๋ผ ์คํ๋๋ ๊ฒ ๊ฐ์ ๋ณด์ธ๋ค.
์ ๋ต) ENTRYPOINT (/docker-entrypoint.sh)๋ ํญ์ ์คํ๋๋ค.
๋จ, ENTRYPOINT๋ฅผ ๋ช
์์ ์ผ๋ก ๋์ฒดํ๋ ๊ฒฝ์ฐ ๋นผ๊ณ
ํ์ง๋ง exec "$@" ๋ช
๋ น์ด๊ฐ ์๊ธฐ ๋๋ฌธ์, ์ ๋ฌ๋ ๋ช
๋ น์ด(์: ls -al)๊ฐ ์คํ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋ผ์ผ ํ Nginx ๋ช
๋ น์ด ๋์ ์ ๋ฌ๋ ๋ช
๋ น์ด๊ฐ ์คํ๋๋ ๊ฒ์ด๋ค.
docker run nginx โ ENTRYPOINT + ๊ธฐ๋ณธ CMD ์คํ โ Nginx ์๋ฒ ์คํ
docker run nginx ls -al โ ENTRYPOINT + ์๋ก์ด CMD(ls -al) ์คํ โ ํ์ผ ๋ชฉ๋ก ์ถ๋ ฅ