๐ณ Docker ๋ช ๋ น์ด ์ฒด๊ณ ๋ฐ ์ปจํ ์ด๋ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
๐ณ Docker ๋ช ๋ น์ด ์ฒด๊ณ ๋ฐ ์ปจํ ์ด๋ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
Docker๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ ๊ธฐ์ ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ Docker์ ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ฒด๊ณ์ ์ปจํ ์ด๋ ๋์ ๋ฐฉ์์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.

๐ Docker์ ๋ช ๋ น์ด ์ฒด๊ณ
Docker์ ๋ช ๋ น์ด ์ฒด๊ณ๋ ์ฌ์ฉ์๊ฐ ์ปจํ ์ด๋, ์ด๋ฏธ์ง, ๋คํธ์ํฌ, ๋ณผ๋ฅจ ๋ฑ ๋ค์ํ Docker ๋ฆฌ์์ค๋ฅผ ์ฝ๊ณ ์ผ๊ด์ฑ ์๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋ ๊ตฌ์กฐํ๋ CLI(Command Line Interface) ๋ช ๋ น์ด ์งํฉ์ ๋๋ค.
๋ช ๋ น์ด ๊ทธ๋ฃนํ ๊ตฌ์กฐ
Docker๋ ๋ช ๋ น์ด๋ฅผ ๊ธฐ๋ฅ๋ณ๋ก ๊ทธ๋ฃนํํ์ฌ ๊ด๋ฆฌํฉ๋๋ค. ์ฃผ์ ๊ทธ๋ฃน์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
docker container
: ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋ช ๋ น์ด ๊ทธ๋ฃนdocker image
: ์ด๋ฏธ์ง ๊ด๋ฆฌ ๋ช ๋ น์ด ๊ทธ๋ฃนdocker network
: ๋คํธ์ํฌ ๊ด๋ฆฌ ๋ช ๋ น์ด ๊ทธ๋ฃนdocker volume
: ๋ณผ๋ฅจ ๊ด๋ฆฌ ๋ช ๋ น์ด ๊ทธ๋ฃน
๊ธฐ๋ณธ ๋ช ๋ น์ด ์์
# ์ด๋ฏธ์ง ๋ค์ด๋ก๋
docker image pull python:3.11.6
# ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ
docker image ls
# ๋ชจ๋ ์ปจํ
์ด๋ ๋ชฉ๋ก ํ์ธ(์คํ ์ค + ์ค์ง)
docker ps -a
# ์ฐ๋ถํฌ ์ปจํ
์ด๋ ์คํ
docker container run ubuntu
# ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ
docker image ls
# ๋ชจ๋ ์ปจํ
์ด๋ ๋ชฉ๋ก ํ์ธ
docker container ls -a
# ์คํ ์ค์ธ ์ปจํ
์ด๋๋ง ํ์ธ
docker container ls
# ํ์ด์ฌ ์ปจํ
์ด๋ ์คํ
docker container run python:3.11.6
# ๋ํํ ๋ชจ๋๋ก ์ฐ๋ถํฌ ์ปจํ
์ด๋ ์คํ
docker container run -it ubuntu
# ์คํ ์ค์ธ ์ปจํ
์ด๋ ํ์ธ
docker container ls
๐ Docker ์ปจํ ์ด๋ ๋์ ๋ฐฉ์
docker container run ubuntu
์คํ ์ ์ปจํ
์ด๋ ๋์ ๋ฐฉ์
docker container run ubuntu ๋ช ๋ น์ ์คํํ๋ฉด ์ค์ ๋ก ์ปจํ ์ด๋๊ฐ ์์ฑ๋๊ณ ์คํ๋ฉ๋๋ค. ํ์ง๋ง ํ์ฑํ๋(์คํ ์ค์ธ) ์ปจํ ์ด๋๊ฐ ๋ณด์ด์ง ์๋ ์ด์ ๋, ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํํ ๋ช ๋ น์ด ์ง์ ๋์ง ์์ ์ปจํ ์ด๋๊ฐ ์ฆ์ ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๋ฐ๋ก ๊บผ์ง๋๊ฐ? ๐ค
docker container run ubuntu
๋ Ubuntu ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ์ง๋ง, ๋ณ๋์ ๋ช ๋ น์ ์ฃผ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ ์ด๋๋ ์๋ฌด ์์ ๋ ํ์ง ์์ต๋๋ค.- Docker ์ปจํ ์ด๋๋ ๋ด๋ถ์์ ์คํ๋๋ "๋ฉ์ธ ํ๋ก์ธ์ค"๊ฐ ์ข ๋ฃ๋๋ฉด ์ปจํ ์ด๋๋ ์ฆ์ ์ข ๋ฃ๋ฉ๋๋ค.
- Ubuntu ์ด๋ฏธ์ง๋ ๋ณ๋์ ๋ช ๋ น์ด ์์ผ๋ฉด ์ข ๋ฃ(exit)ํ๊ธฐ ๋๋ฌธ์, ์ปจํ ์ด๋๊ฐ ์์ฑ๋๊ณ ๋ฐ๋ก ๊บผ์ง๋๋ค.
-it
์ต์
์ ์ฃผ๋ฉด ๋ฌ๋ผ์ง๋ ์ด์
-it
์ต์ ์ ์ฃผ๋ฉด, ์ปจํ ์ด๋ ๋ด๋ถ์์ ํฐ๋ฏธ๋์ ํ ๋นํ๊ณ bash ์ ธ์ ์คํํ๊ฒ ๋ฉ๋๋ค.
์ฆ,docker container run -it ubuntu
๋bash
๋ฅผ ์คํํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ง์ ๋ช ๋ น์ ์ ๋ ฅํ ์ ์๋๋ก ๋๊ธฐํฉ๋๋ค.- ์ด ์ํ์์๋ bash ํ๋ก์ธ์ค๊ฐ ์ด์์๋ ๋์ ์ปจํ ์ด๋๋ ์ด์์๊ฒ ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ง์ exit ๋ช ๋ น์ ๋ด๋ฆฌ๊ฑฐ๋ ํฐ๋ฏธ๋์ ๋ซ์ ๋๊น์ง ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋์ง ์์ต๋๋ค.
์ ๋ฆฌ
docker container run ubuntu
โ ์ปจํ ์ด๋๊ฐ ์์ฑ๋๊ณ , ๋ด๋ถ์์ ์คํํ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฏ๋ก ๋ฐ๋ก ์ข ๋ฃ๋จ.docker container run -it ubuntu
โ bash ์ ธ์ด ์คํ๋์ด ์ฌ์ฉ์๊ฐ ์ง์ ๋ช ๋ น์ ์ ๋ ฅํ ์ ์๊ณ , ์ ธ์ด ์ข ๋ฃ๋ ๋๊น์ง ์ปจํ ์ด๋๊ฐ ์ ์ง๋จ.
์ปจํ ์ด๋ ๋ผ์ดํ์ฌ์ดํด โฑ๏ธ
์ปจํ ์ด๋์ ์ํ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณํํฉ๋๋ค:
- Created: ์ปจํ ์ด๋๊ฐ ์์ฑ๋จ(์์ง ์คํ ์ )
- Running: ์ปจํ ์ด๋๊ฐ ์คํ ์ค(๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์ด์์์)
- Stopped: ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ด ์ปจํ ์ด๋๊ฐ ๋ฉ์ถค
์ปจํ ์ด๋๋ ๋ด๋ถ์์ ์คํํ ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ๋๋๋ฉด ์๋์ผ๋ก Stopped ์ํ๊ฐ ๋ฉ๋๋ค.
"Docker ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ํ ์คํ๋์ง ์์ต๋๋ค. ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋๊ฑฐ๋ ๋ช ์์ ์ผ๋ก ์ค์ง๋ ๋๊น์ง๋ง ์คํ๋ฉ๋๋ค."
๊ฒฐ๋ก :docker container run
๋ช
๋ น์ ์ค์ ๋ก ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํ์ง๋ง, ๋ด๋ถ์์ ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ์๊ฑฐ๋ ๋ฐ๋ก ์ข
๋ฃ๋๋ฉด ์ปจํ
์ด๋๋ ์ฆ์ ๊บผ์ง๋๋ค. -it
์ต์
์ ์ฌ์ฉํ๋ฉด bash ์
ธ์ด ์คํ๋์ด ์ปจํ
์ด๋๊ฐ ์ด์์๋ ์ํ๊ฐ ๋ฉ๋๋ค.
๐ฎ ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋ช ๋ น์ด
# ์ปจํ
์ด๋ ์ค์ง
docker container stop {CONTAINER ID}
# ์ปจํ
์ด๋ ์์
docker container start {CONTAINER ID}
# ์คํ ์ค์ธ ์ปจํ
์ด๋ ๋ชฉ๋ก ํ์ธ
docker container ls
# ์ปจํ
์ด๋์ ์ ์
docker container attach {CONTAINER ID}
docker container start
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ
์ด๋๊ฐ "์ฃฝ์ง ์๊ณ " ์ ์ง๋๋ ์ด์ ๋, ์ปจํ
์ด๋๊ฐ ์์ฑ๋ ๋ ์ง์ ๋ ๋ฉ์ธ ํ๋ก์ธ์ค(์: /bin/bash
๋ฑ)๊ฐ ์คํ๋๊ณ , ๊ทธ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ๋์ํ๋ ํ ์ปจํ
์ด๋๋ ๊ณ์ ์คํ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์
๋๋ค.(์์ ๋ช
๋ น์ด์์ -it
์ต์
์ผ๋ก ์์ํจ)
์ฆ, ์ปจํ
์ด๋๊ฐ ์ด์์๋์ง ์ฌ๋ถ๋ "๋ด๋ถ์์ ์คํ ์ค์ธ ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ๋์ ์ค์ธ๊ฐ"์ ๋ฌ๋ ค ์์ต๋๋ค. start ๋ช
๋ น์ ํด๋น ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์คํ์ํค๊ธฐ ๋๋ฌธ์, ๊ทธ ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋์ง ์๋ ํ ์ปจํ
์ด๋๋ ์ข
๋ฃ๋์ง ์์ต๋๋ค.
๐ธ Docker Commit: ์ปจํ ์ด๋ ๋ณ๊ฒฝ์ฌํญ์ผ๋ก ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
Docker commit์ ์คํ ์ค์ธ ์ปจํ ์ด๋์ ํ์ฌ ์ํ๋ฅผ ์๋ก์ด ์ด๋ฏธ์ง๋ก ์ ์ฅํ๋ ๋ช ๋ น์ด์ ๋๋ค. ๊ธฐ์กด ์ด๋ฏธ์ง์ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
Docker Commit์ ์๋ ๋ฐฉ์ ๐
docker container commit [์ต์
] <์ปจํ
์ด๋ID/์ด๋ฆ> [์ ์ฅ์[:ํ๊ทธ]]
์ปจํ ์ด๋์์ ๋ณ๊ฒฝ๋ ํ์ผ ์์คํ ์ํ๋ฅผ ์บก์ฒํ์ฌ ์๋ก์ด ๋ ์ด์ด๋ก ์ถ๊ฐํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
์ฃผ์ ํน์ง
- ๋ ์ด์ด ๊ธฐ๋ฐ ์ ์ฅ: ์ค์ง ๋ณ๊ฒฝ๋ ํ์ผ๋ค๋ง ์ ๋ ์ด์ด์ ์ ์ฅ๋ฉ๋๋ค
- ๋ณผ๋ฅจ ์ ์ธ: ๋ง์ดํธ๋ ๋ณผ๋ฅจ์ ๋ฐ์ดํฐ๋ ์ด๋ฏธ์ง์ ํฌํจ๋์ง ์์ต๋๋ค
- ์คํ ์ค์ธ ํ๋ก์ธ์ค ์ ์ธ: ๋ฉ๋ชจ๋ฆฌ ์ํ, ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ ํฌํจ๋์ง ์์ต๋๋ค
- ์ด๋ฏธ์ง ํ์คํ ๋ฆฌ: ๊ธฐ์กด ์ด๋ฏธ์ง์ ๋ ์ด์ด ์คํ ์์ ๋ณ๊ฒฝ์ฌํญ์ด ์ ๋ ์ด์ด๋ก ์ถ๊ฐ๋ฉ๋๋ค
์์ ์๋๋ฆฌ์ค
- Ubuntu ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋ ์คํ
- ์ปจํ
์ด๋ ๋ด์์
net-tools
ํจํค์ง ์ค์น docker commit
์ผ๋ก ๋ณ๊ฒฝ์ฌํญ ํฌํจ๋ ์ ์ด๋ฏธ์ง ์์ฑ
์ด ๊ฒฝ์ฐ:
- ๊ธฐ๋ณธ Ubuntu ์ด๋ฏธ์ง ๋ ์ด์ด๋ ๊ทธ๋๋ก ์ ์ง
- net-tools ์ค์น๋ก ๋ณ๊ฒฝ๋ ํ์ผ๋ค๋ง ์๋ก์ด ๋ ์ด์ด์ ํฌํจ
- ์ ์ด๋ฏธ์ง๋ Ubuntu + net-tools๊ฐ ์ค์น๋ ์ํ
์ฃผ์์ฌํญ โ ๏ธ
- ๋์ปค ํ์ผ๋ก ๋น๋ํ๋ ๊ฒ๋ณด๋ค ์ฌํ์ฑ์ด ๋ฎ์
- ์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์ด ๋ฌธ์ํ๋์ง ์์
- ๋๋ฒ๊น ์ด๋ ์์ ์ด๋ฏธ์ง ์์ฑ ์ธ์๋ Dockerfile ์ฌ์ฉ ๊ถ์ฅ
๐ ์ปจํ ์ด๋ ์ปค์คํฐ๋ง์ด์ง ๋ฐ ์ด๋ฏธ์ง ์์ฑ ์ค์ต
1. ์ปจํ ์ด๋ ์คํ ๋ฐ ํจํค์ง ์ค์น
# ์ฐ๋ถํฌ ์ปจํ
์ด๋ ์คํ
docker container run -it ubuntu
# ์ค์ง๋ ์ปจํ
์ด๋ ์์
docker container start {CONTAINER ID}
# ์คํ ์ค์ธ ์ปจํ
์ด๋์ ์ ์
docker container attach {CONTAINER ID}
์ปจํ ์ด๋ ๋ด๋ถ์์:
$ apt update && apt install net-tools
$ ifconfig
2. ๋ณ๊ฒฝ์ฌํญ์ผ๋ก ์ ์ด๋ฏธ์ง ์์ฑ
# ๋ณ๊ฒฝ์ฌํญ์ผ๋ก ์ ์ด๋ฏธ์ง ์์ฑ
docker container commit {CONTAINER ID} my-ubuntu:0.1
# ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ
docker image ls
# ์ปจํ
์ด๋์์ ๋๊ฐ๊ธฐ
$ exit
3. ๊ธฐ์กด ์ปจํ ์ด๋ ์ญ์ ๋ฐ ์ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋ ์คํ
# ๊ธฐ์กด ์ปจํ
์ด๋ ์ญ์
docker container rm {CONTAINER ID}
# ํ์์๋ ์ด๋ฏธ์ง ์ญ์
docker image rm {IMAGE ID}
# ์ ์ด๋ฏธ์ง๋ก ์ปจํ
์ด๋ ์คํ
docker container run -it my-ubuntu:0.1
# net-tools๊ฐ ์ค์น๋ ๊ฒ ํ์ธ
$ ifconfig