
(๋
ธ์
์์ ๊ธ ์์ฑํ๊ณ ํฐ์คํ ๋ฆฌ์ ๋ณต๋ถํ๋ฉด ๊นจ์ง๋๊ฑฐ ์๋ฌ์ ๊ฒฐ๊ตญ ๋ค์ ๋ฒจ๋ก๊ทธ๋ก,,, ์ฐํํ,,)
๐ณ์ฉ๊ธฐ์ด ์ค์ตํ๊ฒฝ ๊ตฌ์ฑํ๊ธฐ
๐ ์๋์ฐ ํ๊ฒฝ
Windows์์ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด,ย ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ
ํย CMDย ๋๋ย PowerShell์ ์ด์ฉ
๐๊ณต์ ์ด๋ฏธ์ง ๋ด๋ ค๋ฐ๋ ๋ฒ
# docker pull**[์ด๋ฏธ์ง ์ด๋ฆ]:[์ด๋ฏธ์ง ํ๊ทธ(๋ฒ์ )]**
# docker pull ubuntu:20.04
๐๋์ปค ํ๋ธ ๋ก๊ทธ์ธ
docker login
# ๋ก๊ทธ์์์ ๋ฐ๋๋ก docker logout
- ๊ฐ๋ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ pull ํ ๋ , ๋์ปคํ๋ธ์ ์ด๋ฏธ์ง ์
๋ก๋ํ ๋ ๋ก๊ทธ์ธ ํ์
- ๊ณ์ ์ด ์๋ค๋ฉดย https://hub.docker.com/ย ๋ฅผ ํตํด ํ์๊ฐ์
๐ณDockerfile
๐Dockerfile์ด๋?
- DockerImage๋ฅผ ์์ฑํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ(์ค์ ํ์ผ)
- Dockerfile์ ์์ฑํ ํ build ๋ช
๋ น์ด๋ฅผ ํตํด DockerImage ์์ฑํ๋ค.
์ฝ๊ฒ ๋งํ๋ฉด ย ํ
์คํธ ํ์ผ์ด๊ณ build ์ ์ฌ์ฉ๋ ๋ช
๋ น์ด๋ค์ ๋ชจ์๋์ ๊ฒ
๐Dockerfile์ ๋ง๋๋ ์ด์
(1) ์ด๋ฏธ์ง๊ฐ ์ด๋ป๊ฒ ๋ง๋ค์ด์ก๋์ง๋ฅผ ๊ธฐ๋กํ๋ค.
- ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ๋ณดํต ์ฌ๋๋ค๊ณผ ๋ค๋ฅด๊ฒ ์ด๋ฏธ์ง์ ๊ตฌ์ฑ์ ๋ํ์ฌ ์์์ผ ํ๋ค. ์ด๋ ํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ด๊ณ ์๋ ์ด๋ฏธ์ง๊ฐ ์ค์น ๋๊ธฐ ์ํ ๊ณผ์ , ์ค๊ฐ์ ์ด๋ ํ ๊ณผ์ ์ ์์ ํด์ผ ํ๋์ง ๋ฑ์ ์์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.(Dockerfile์ด ์๋ํ๋ ์คํฌ๋ฆฝํธ ํํ์ด๊ธฐ ๋๋ฌธ)
(2) ๋ฐฐํฌ์ ์ฉ์ด
- ์ด๋ ํ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ ๋, ์ด๋ฏธ์ง ํ์ผ ์์ฒด๋ฅผ ๋ฐฐํฌํ๊ธฐ๋ณด๋ค๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋ ์คํฌ๋ฆฝํธ์ธ Dockerfile๋ง์ ๋ฐฐํฌํ๋ค๋ฉด ํธ๋ฆฌํ๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํค๊ธฐ๋ง ํ๋ฉด ์ค์ค๋ก๊ฐ ๊ทธ Dockerfile์ ํด๋นํ๋ ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์๋ค.
(3) ์ปจํ
์ด๋(์ด๋ฏธ์ง)๊ฐ ํน์ ํ๋์ ์ํํ๋๋ก ํ๋ค.
- ์ปจํ
์ด๋ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด, ํน์ ํ๋์ ์ทจํ๋๋ก ํ๋ ์ปจํ
์ด๋๋ฅผ(์ด๋ฏธ์ง๋ฅผ) ๋ง๋ค์ด์ผ ํ ๋๊ฐ ์๋ค.
- ์ด๋ ์ฌ์ค ๋ง๋ก์ ์ค๋ช
ํ๊ธฐ๋ ์ข ์ด๋ ต๊ณ , ์ค์ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด '์, ์ด๊ฑฐ Dockerfile ์ฐ๋ฉด ์ข ๊ฐ๋จํด ์ง๊ฒ ๊ตฌ๋...' ๋ผ๋ ์๊ฐ์ด ๋จธ๋ฆฟ์์์ ๋ถํ๋ฏ ๋ฒ๊ฐ์ฒ๋ผ ์ค์น ๋๊ฐ ์๋ค.
๐Dockerfile ์์ฑ
๐ก ํ์ฅ์๊ฐ dockerfile์ด ์๋๊ณ ํ์ผ์ ์ ๋ชฉโโ ์ Dockerfile๋ก ๋ง๋ ๋ค (์คํฌ๋ฆฝํธ ์์ฑํ ์ ์๋ ๊ฑธ๋ก ์๋ฌด๊ฑฐ๋โ ๋๋ vscode๋กํจ )
๐ Dockerfile ๊ธฐ๋ณธ ๋ช
๋ น์ด

- FROMย : ์์ฑํ ์ด๋ฏธ์ง์ ๋ฒ ์ด์ค๊ฐ ๋ ์ด๋ฏธ์ง
- ์ด๋ ์ด๋ฏธ์ง์์ ์์ํ ๊ฑด์ง๋ฅผ ์๋ฏธํ๋ค. ๋ฐ๋์ ํ ๋ฒ ์ด์ ์
๋ ฅ
- MAINTAINERย : ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๊ฐ๋ฐ์์ ์ ๋ณด (1.13.0 ์ดํ ์ฌ์ฉ X) ๋ฐ๋์ ํ์ํ ๊ฑด ์๋.
- LABELย : ์ด๋ฏธ์ง์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ (key-value ํํ)
- ****COPY, ADD**** : COPY ๋ก์ปฌ ๋๋ ํฐ๋ฆฌ์์ ์ฝ์ด ๋ค์ธ ์ปจํ
์คํธ๋ก๋ถํฐ ์ด๋ฏธ์ง์ ํ์ผ์ ๋ณต์ฌ โ ADD ํ์ผ์ ์ด๋ฏธ์ง ์ถ๊ฐํ๋๋ฐ dockerfile์ด ์์นํ ๋๋ ํฐ๋ฆฌ์์ ํ์ผ์ ๊ฐ์ ธ์ด. ์ธ๋ถ URL ๋ฐ tar ํ์ผ์์๋ ํ์ผ์ ์ถ๊ฐ ๊ฐ๋ฅ(๊ถ์ฅX)
- RUNย : ์ปจํ
์ด๋ ๋ด๋ถ์์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ , ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค.
- RUN ๋ช
๋ น์ ์คํํ ๋ ๋ง๋ค ์ ๋ ์ด์ด๊ฐ ์์ฑ๋๊ณ ์บ์๋๋ค.
- ๋ฐ๋ผ์ RUN ๋ช
๋ น์ ๋ฐ๋ก ์คํํ๋ฉด apt-get update๋ ๋ค์ ์คํ๋์ง ์์์ ์ต์ ํจํค์ง๋ฅผ ์ค์นํ ์ ์๋คโ RUN ๋ช
๋ น ํ๋์ apt-get update์ install์ ํจ๊ป ์คํ
- WORKDIRย : ๋ช
๋ น์ด๋ฅผ ์คํํ ๋๋ ํฐ๋ฆฌ. ํด๋น ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ์๋ก ์์ฑํ๋ค. ์ปจํ
์ด๋ ๋ด๋ถ์์ ์๋ํ๋ค.
- ์์
๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํ๋ฉด ๊ทธ ์ดํ ๋ช
๋ น์ด๋ ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์ํ๋ค.
- cd ๋ช
๋ น์ด์ ๋์ผ
- EXPOSEย : Dockerfile์ ๋น๋๋ก ์์ฑ๋ ์ด๋ฏธ์ง์์ ์ด์ด์ค ํฌํธ๋ฅผ ์๋ฏธํ๋ค.
- ํธ์คํธ ๋จธ์ ๊ณผ ์ปจํ
์ด๋์ ํฌํธ ๋งคํ์์ ์ฌ์ฉ๋๋ค.
- ์ปจํ
์ด๋ ์์ฑ ์ -p ์ต์
์ ์ปจํ
์ด๋ ํฌํธ ๊ฐ์ผ๋ก EXPOSE ๊ฐ์ ์ ์ด์ผํ๋ค.
- USERย : ์ด๋ฏธ์ง๋ฅผ ์ด๋ค ๊ณ์ ์์ ์คํ ํ๋์ง ์ง์
- ๊ธฐ๋ณธ์ ์ผ๋ก root์์ ํด์ค๋ค.
- COPY / ADDย : build ๋ช
๋ น ์ค๊ฐ์ ํธ์คํธ์ ํ์ผ ๋๋ ํด๋๋ฅผ ์ด๋ฏธ์ง์ ๊ฐ์ ธ์ค๋ ๊ฒ
- ADD ๋ช
๋ น๋ฌธ์ ์ข ๋ ํ์ํํ COPY ๋ช
๋ น๋ฌธ์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค.
- ADD ๋ช
๋ น๋ฌธ์ ์ผ๋ฐ ํ์ผ ๋ฟ๋ง ์๋๋ผ ์์ถ ํ์ผ์ด๋ ๋คํธ์ํฌ ์์ ํ์ผ๋ ์ฌ์ฉํ ์ ์๋ค.
- ์ด๋ ๊ฒ ํน์ํ ํ์ผ์ ๋ค๋ฃจ๋ ๊ฒ ์๋๋ผ๋ฉด COPY ๋ช
๋ น๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
- ENVย : ์ด๋ฏธ์ง์์ ์ฌ์ฉํ ํ๊ฒฝ ๋ณ์ ๊ฐ์ ์ง์ ํ๋ค.
- CMD :
- ์ปจํ
์ด๋๊ฐ ์์๋ ๋๋ง๋ค ์คํํ ๋ช
๋ น์ด๋ฅผ ์ค์ ํ๋ค. dockerfile์์ ํ๋ฒ๋ง! ์ฌ์ฉํ ์ ์๋ค.
- ์ปจํ
์ด๋๋ฅผ ์์ฑํ ๋๋ง ์คํ๋๋ค. (docker run)
- ์ปจํ
์ด๋ ์์ฑ ์, ์ถ๊ฐ์ ์ธ ๋ช
๋ น์ด์ ๋ฐ๋ผ ์ค์ ํ ๋ช
๋ น์ด๋ฅผ ์์ ํ ์ ์๋ค.
- โ ENTRYPOINT
- ์ปจํ
์ด๋๋ฅผ ์์ํ ๋ ์ํํ ๋ช
๋ น์ ์ง์ ํ๋ค. (docker start)
- ์ปจํ
์ด๋ ์์ ์, ์ถ๊ฐ์ ์ธ ๋ช
๋ น์ด ์กด์ฌ ์ฌ๋ถ์ ์๊ด ์์ด ๋ฌด์กฐ๊ฑด ์คํ๋๋ค.
- ์ปค๋งจ๋๋ฅผ ์ธ์๋ก ๋ฐ์ ์ฌ์ฉํ๋ ์คํฌ๋ฆฝํธ์ ์ญํ ์ ํ ์ ์๋ค๋ ์ ์ด CMD์์ ์ฐจ์ด์ ์ด๋ค.
- ๋ช
๋ น์ด ํ์
- CMD ["<์ปค๋งจ๋>", "<ํ๋ผ๋ฏธํฐ1>", "<ํ๋ผ๋ฏธํฐ2>"]
- CMD <์ปค๋งจ๋> <ํ๋ผ๋ฏธํฐ1> <ํ๋ผ๋ฏธํฐ2>
- ENTRYPOINT ["<์ปค๋งจ๋>", "<ํ๋ผ๋ฏธํฐ1>", "<ํ๋ผ๋ฏธํฐ2>"]
- ENTRYPOINT <์ปค๋งจ๋> <ํ๋ผ๋ฏธํฐ1> <ํ๋ผ๋ฏธํฐ2>
๐ณDocker Image
๐Docker ์ด๋ฏธ์ง ์์ฑ ๋ฐฉ๋ฒ
ํฌ๊ฒ ๋ ๊ฐ์ง ๋ช
๋ น์ด๋ก ์ํ
docker commit
docker container
๋ฅผย image
๋ก ์์ฑ
commit
ย ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ์์ ์ docker container ์ํ๊ฐ ๋ณด์กด
- ํ์ฌย
docker container
์ ์ํ๋ฅผ ๋ฐฑ์
ํ๋ ๊ฒฝ์ฐ์ ์์ฃผ ์ฌ์ฉ
docker build
Dockerfile
ย ์ด๋ผ๋ ๋จ์ ํ
์คํธ ํ์ผ๋ฅผ ์ฌ์ฉํ์ฌย image
ย ์์ฑ
Dockerfile
ย ์ ์ง์ ๋ ๋ฌธ๋ฒ์ ์ง์ผ์ผ ํจ
Dockerfile
ย ์ ์์ฑํ๊ณ ๊ณต์ ํ๋ฉด image์ ๊ตฌ์ฑ์ ์ฝ๊ฒ ์ ์ ์์
๐docker build ๊ณผ์
docker build
ย ๋ช
๋ น์ด๋ย docker image
ย ๋ฅผ ๋น๋ํ ๋ ๋ค์ ๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ๋ค.
Dockerfile
build context
ย โ PATH
ย ๋๋ย URL
ย ์ ํตํด ์ง์ ๋ย ๋ค์์ ํ์ผ์ ๊ฐ๋ ๊ฒฝ๋ก(์์น)
PATH
ย ๋ ํ์ฌ ๋ก์ปฌ์ ํ์ผ ์์คํ
์ ๋๋ ํ ๋ฆฌ, URL
ย ์ย Git repository
ย ์ ์์น
docker build . # . ์ด ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ฏธ. build context๋ฅผ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ก ์ง์ ํ ๊ฒ
docker build ์ ์ค์ ์ฒ๋ฆฌ๋ย Docker daemon
ย ์ด ํ๋ฉฐ docker build ์์ฒญ์ด ์์๋๋ฉด ์ ์ผ ๋จผ์ ย Docker daemon
ย ์๊ฒย build context
ย ์ ํ์ ๋ชจ๋ ํ์ผ์ ๋ํ ์ ๋ณด(contents
)๋ฅผ ์ ์กํ๋ค. Docker daemon
ย ์ย build
ย ๋ช
๋ ์ด๋ฅผ ์ํํ๋ ๊ณผ์ ์์Dockerfile
ย ์ ์ฌ์ฉํ๋ฉฐ ์์ ๊ธฐ์ฌ๋ ๋ช
๋ น์ด๋ค์ ํ๋ํ๋ ์คํํ๋ค.
์ด๋ฐ ์ ์ ๊ณ ๋ คํ์ฌ docker build ๋ช
๋ น์ด๋ย /(๋ฃจํธ ๊ฒฝ๋ก)
ย ๊ฐ์ ๊ณณ์์ ์ฐ๋ฉด ์ ๋๋ค.
๋์ ํ๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ก ์์ฑํ๊ณ , ๊ทธ ์์ย Dockerfile
์ ๋๊ณ ,build ์์ ํ์ํ ์ถ๊ฐ์ ์ธ ํ์ผ๋ค์ ๋ฃ์ด๋ ํ์ ํด๋น ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก์์ย docker build
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
build context ๋ด์์ build ์ ์ฌ์ฉํ์ง ๋ง์์ผ๋ฉด ํ๋ ๋ชฉ๋ก์ ย .dockerignore
ย ํ์ผ์ ๊ธฐ์ฌํ๋ค.
์ผ๋ฐ์ ์ผ๋ก Dockerfile ์ย build context
์ย root
ย ๊ฒฝ๋ก์ ๋ฃ๋๋ค.
๋ค๋ฅธ ๊ฒฝ๋ก์ ์๋ Dockerfile์ ์ฐ๊ณ ์ถ๋ค๋ฉด ์๋์ฒ๋ผ ํ๋ฉด ๋๋ค.
docker build -f /path/to/a/Dockerfile .
์ต์ข
์ ์ผ๋กย build
ย ๊ฐ ์๋ฃ๋๋ฉด ์ต์ข
์์ฑ ์ด๋ฏธ์ง์ ID๋ฅผ ์ถ๋ ฅํ๊ณ ,Docker daemon
ย ์์ ์ฌ์ฉ๋ย context
ย ์ ๋ชจ๋ ์ ๋ณด๋ค์ย clean up
ย ๋๋ค.
๐Docker ๊ธฐ๋ณธ ๋ช
๋ น์ด๋ค
docker build -t (image ์ด๋ฆ):(๋ฒ์ ์ด๋ฆ) .
๋์ปคํ์ผ ๋น๋ํ๊ธฐ โ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ ๋์ปคํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋น๋. ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ ๋๋ -f ์ฌ์ฉ
docker login
๋์ปคํ๋ธ ๋ก๊ทธ์ธ
docker image ls
docker images
ํ์ฌ ์
๋ก๋๋ ์ด๋ฏธ์ง ํ์ธ
docker run (์ต์
) (์ด๋ฏธ์ง์ด๋ฆ):(๋ฒ์ ์ด๋ฆ)
๋ค์ด๋ฐ์ ์ด๋ฏธ์ง๋ฅผ ์คํํ ํํ์ธ ์ปจํ
์ด๋๋ก ๋ง๋๋ ๋ช
๋ น์ด ์ปจํ
์ด๋๋ ์คํ์ค์ธ ๋์ปคํ์ผ์ ๋งํจ
์ต์
-i (interactive) : ์ฌ์ฉ์๊ฐ ์
์ถ๋ ฅ์ ํ ์ ์๋ ์ํ๋ก ํ๋ค
-t : ๊ฐ์ ํฐ๋ฏธ๋ ํ๊ฒฝ์ ์๋ฎฌ๋ ์ด์
ํ๊ฒ ๋ค๋ ๋ง Bash ์ฌ์ฉํ ๋ ํ์ ์ด ์ต์
์ค์ ํด์ผ ์
์ด ํ์๋จ.
-d(detach) : background๋ก ์ปจํ
์ด๋ ์คํ (์ปจํ
์ด๋๋ฅผ ์ผ๋ฐ ํ๋ก์ธ์ค๊ฐ ์๋ ๋ฐ๋ชฌํ๋ก์ธ์ค ํํ๋ก ์คํํ์ฌ ํ๋ก์ธ์ค๊ฐ ๋๋๋ ์ ์ง๋๋๋ก)
--name : ์ปจํ
์ด๋ ์ด๋ฆ ์ค์
-p : ํธ์คํธ์ ์ปจํ
์ด๋์ ํฌํธ ์ฐ๊ฒฐ <ํธ์คํธํฌํธ>:<์ปจํ
์ด๋ ํฌํธ>
ex) docker run --name mypyserver -d -p 8090:9000 mypython:1.0
๐ก ์ปจํ
์ด๋๋ฅผ ์คํํ๋๋ฐ ๋ฐ๋ก ์ข
๋ฃ๋๋คโโdocker๋ image๋ฅผ ์คํํ๊ณ ์คํํ ๊ฒฐ๊ณผ๋ฌผ๋ง ๋ฐํํ๊ธฐ ๋๋ฌธ์!! ๊ณ์ ์คํ์ํค๊ณ ์ถ์ผ๋ฉด bin/bash๊ฐ์๊ฑฐ ์ด์ฉํด์ผํจ !!
docker ps
#์คํ์ค์ธ ์ปจํ
์ด๋ ๋ณด๊ธฐ docker container ls๋ ๊ฐ์.
docker ps -a
#์คํ์ค์ด์ง ์์ ์ปจํ
์ด๋๋ ๋ณด์ฌ์ค. ๋์ปค ์ด๋ฏธ์ง ํ์ผ ์ด๋ฆ ๋ณด๊ธฐ NAMES๋ฅผ ๋ณด๋ฉด๋จ.
docker image push <image tag> myname/myimage:<image tag>
#์ด๋ฏธ์ง ์
๋ก๋