728x90
๋ฐ์ํ
2์ฅ ๋์ปค์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ
2.1 ์ปจํ ์ด๋๋ก Hello World ์คํํ๊ธฐ
$ docker container run diamol/ch02-hello-diamol
- ์์ ๊ฐ๋จํ ์ปค๋งจ๋๋ก ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ์ํฌํ๋ก์ ํต์ฌ์ ๋ณผ ์ ์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์ง, ๊ณต์ , ์คํ ์ ๊ณผ์ ์ด ํฌํจ๋์ด์๋ค.
- ๋์ปค์์๋ ์ด ๊ณผ์ ์ ๋น๋, ๊ณต์ , ์คํ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์๋ฌด๋ฆฌ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ๋์ปค๋ฅผ ์คํํ ์ ์๋ ํ๊ฒฝ์ด๋ผ๋ฉด ์ด๋์๋ ์คํ๊ฐ๋ฅํ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋ค.
- ์ด๊ฒ์ด ๋์ปค์ ํต์ฌ ์ด์ ์ธ ์ด์์ฑ ์ด๋ค.
2.2 ์ปจํ ์ด๋๋ ๋ฌด์์ธ๊ฐ?
- ๋์ปค ์ปจํ ์ด๋๋ ๋ง ๊ทธ๋๋ก ๋ฌผ๊ฑด(์ ํ๋ฆฌ์ผ์ด์ )์ ๋ด๋ ์์(์ปจํ ์ด๋)์ด๋ค.
- ํ๋์ ์ปดํจํฐ(ํธ์คํธ) ๋ ์ฌ๋ฌ๊ฐ์ ์์ (์ปจํ ์ด๋) ๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ๊ฐ ์ปจํ ์ด๋๋ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์ ๊ฐ์ง๋ง, ์ปจํ ์ด๋๊ฐ ์คํ๋๋ ์ปดํจํฐ์ ์์(CPU, ๋ฉ๋ชจ๋ฆฌ, ์ค์์ฒด์ )์ ๊ณต์ ํ๋ค.
- ๊ฐ ์ปจํ ์ด๋๋ ํธ์คํธ ์ปดํจํฐ์ ์ด์์ฒด์ ๋ฅผ ๊ณต์ ํ๋ฏ๋ก ํ์ํ ๋ฆฌ์์ค๊ฐ ํฌ๊ฒ ๊ฒฝ๊ฐํ๋ค.
- ๊ทธ๋งํผ ์คํ๋ ๋น ๋ฅด๊ณ ๊ฐ์ ํธ์คํธ ์ปดํจํฐ์์ ๊ฐ์ ๋จธ์ ์ ๋นํด ๋ ๋ง์ ์(์ผ๋ฐ์ ์ผ๋ก ์ฝ ๋ค์ฏ ๋ฐฐ)์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๋ค.
- ๋ํ, ์ปจํ ์ด๋ ์ญ์ ์ธ๋ถ์ ๋ ๋ฆฝ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ฏ๋ก ๋ฐ์ง๊ณผ ๊ฒฉ๋ฆฌ๊ฐ ๋์์ ๋ฌ์ฑ๋๋ค.
- ์ด๊ฒ์ด ๋์ปค์ ๋ฐ์ง, ๊ฒฉ๋ฆฌ, ํจ์จ์ฑ์ด๋ค.
2.3 ์ปจํ ์ด๋๋ฅผ ์๊ฒฉ ์ปดํจํฐ์ฒ๋ผ ์ฌ์ฉํ๊ธฐ
- ๋์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ตฌ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ๋์ ์ด๋ฏธ์ง๋ก ํจํค์งํด ์ถ๊ฐ์ ์ธ ์ค์น๋ ์ค์ ์์ ์์ด ์ปจํ ์ด๋๋ก ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ๋ก ์คํํ๊ฒ ํ ์ ์๋ค.
- --interactive : ์ปจํ ์ด๋ ์ ์
- --tty : ํฐ๋ฏธ๋ ์ธ์ ์ ํตํด ์ปจํ ์ด๋ ์กฐ์
# ์ปจํ
์ด๋ ์คํ๊ณผ ์ปจํ
์ด๋ ๋ด๋ถ ํฐ๋ฏธ๋ ์ธ์
์ ๊ทผ
$ sudo docker container run --interactive --tty diamol/base
Unable to find image 'diamol/base:latest' locally
latest: Pulling from diamol/base
941f399634ec: Pull complete
716aca3e500c: Pull complete
Digest: sha256:787fe221a14f46b55e224ea0436aca77d345c3ded400aaf6cd40125e247f35c7
Status: Downloaded newer image for diamol/base:latest
/ #
/ # hostname
03c9c7de8cd2
/ # date
Sun Nov 3 06:58:22 UTC 2024
/ #
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03c9c7de8cd2 diamol/base "/bin/sh" 44 seconds ago Up 44 seconds angry_kepler
$ docker container top 03
UID PID PPID C STIME TTY TIME CMD
root 3071 3051 0 07:04 pts/0 00:00:00 /bin/sh
$ docker container logs 03
/ # hostanem
03c9c7de8cd2
...
$ docker container inspect 03
[
{
"Id": "03c9c7de8cd27bd324d12b46563d66c324d9f9f604fc1b7b4231442ff0c6c7f5",
"Created": "2024-11-03T07:04:18.008594904Z",
"Path": "/bin/sh",
"Args": [],
...
}
]
- ์์ ๋ช ๋ น์ด๋ค์ ๋์ปค๋ฅผ ์์ผ๋ก ์ฌ์ฉํ๋ฉด์ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ด๋ค.
- ๋์ปค์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๋ก, ์ปจํ ์ด๋ ๋ด๋ถ์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ด ์ด๋ค๊ฒ์ด๋ ๋์ปค ์ปค๋งจ๋๋ฅผ ์ด์ฉํ์ฌ ๊ณตํต์ ์ผ๋ก ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
2.4 ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํด ์น ์ฌ์ดํธ ํธ์คํ ํ๊ธฐ
- ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ์ฃผ๋ชฉ์ ์ ์น ์ฌ์ดํธ, ๋ฐฐ์น ํ๋ก์ธ์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๊ฒ์ด๋ค.
- --detach : ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๋ฉฐ ์ปคํ ์ด๋ ID๋ฅผ ์ถ๋ ฅ.
- --publish : ์ปจํ ์ด๋์ ํฌํธ๋ฅผ ํธ์คํธ ์ปดํจํฐ์ ๊ณต๊ฐํ๋ค.
-d , -p ์ต์ ์ผ๋ก ์ค์ฌ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. (๋๋ ํด๋น ์ต์ ์ ํ๋ค์์ด ์ ๊ฑฐ์ธ์ง ์ฒ์ ์์๋ค…)
$ docker container run --detach --public 8088:80 diamol/ch02-hello-diamol-web
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26d8b153dc15 diamol/ch02-hello-diamol-web "httpd-foreground" 42 seconds ago Up 42 seconds 0.0.0.0:8088->80/tcp, [::]:8088->80/tcp fervent_carson
- --detach ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋๋ ๋ฆฌ๋ ์ค ๋ฐ๋ชฌ์ฒ๋ผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋์ํ๋ค.
- --publish ๋ ํธ์คํธ๊ฐ ํด๋น ํฌํธ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋์ปค ๋ด๋ถ IP:Port ๋ก ์ ๋ฌํด์ค๋ค.
- ๋์ปค ๋ด๋ถ IP ๋ ๋์ปค๊ฐ ๋ถ์ฌํ ๊ฐ์ ๋คํธ์ํฌ ์ฃผ์์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํธ์คํธ์์ ์ปจํ ์ด๋ IP ๋ฅผ ์ ๊ทผํ ์ ์๋ค.
- ๊ทธ๋ฌ๋, ํฌํธ๋ฅผ ๊ณต๊ฐํด๋์๊ธฐ ๋๋ฌธ์ ํฌํธ ํฌ์๋ฉ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
# ์ปจํ
์ด๋ ๋ฆฌ์์ค ์ํ ์ค์๊ฐ ํ์ธํ๊ธฐ
$ docker container stats 26d
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
26d8b153dc15 fervent_carson 0.01% 4.859MiB / 3.812GiB 0.12% 2.63kB / 1.4kB 0B / 4.1kB 82
# ์ปจํ
์ด๋ ๊ฐ์ ์ญ์ (์คํ์ค์ธ ์ปจํ
์ด๋๋ ์ญ์ ๋จ)
$ docker container rm --force $(docker container ls --all --quiet)
26d8b153dc15
03c9c7de8cd2
5bf1109bf9b4
- --force : ์คํ์ค์ธ ์ปจํ ์ด๋๋ ๋ฐ๋ก ์ญ์
- $() : ๊ดํธ ์ ๋ช ๋ น์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ช ๋ น์ผ๋ก ์ ๋ฌ.
- ํด๋น ๋ช ๋ น์ด๋ ํธ์คํธ์ ์กด์ฌํ๋ ์ปจํ ์ด๋๋ฅผ ๋ชจ๋ ์ญ์ ํ ์ ์๋ ํธ๋ฆฌํ ๋ช ๋ น์ด ์ด์ง๋ง, ๊ทธ ๋งํผ ์ํํ ๋ช ๋ น์ด๋ก ์ฃผ์๊ฐ ํ์ํ๋ค.
2.5 ๋์ปค๊ฐ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ์๋ฆฌ
์ง๊ธ๊น์ง ์ฌ์ฉํ๋ ๋์ปค์ ์กฐ์์ ์ฌ์ค Docker API ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
๋์ปค๋ ํฌ๊ฒ Docker API, Docker Engine , Docker command-line interface 3๊ฐ์ ๊ตฌ์ฑ์ผ๋ก ์ด๋ค์ ธ ์๋ค.
- ๋์ปค ์์ง(Docker Engine)
- ๋์ปค์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๋งก๋ ์ปดํฌ๋ํธ๋ค.
- ๋ก์ปฌ ์ด๋ฏธ์ง ์บ์๋ฅผ ๋ด๋นํ๋ฏ๋ก ์๋ก์ด ์ด๋ฏธ์ง๊ฐ ํ์ํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค๋ฐ์ผ๋ฉฐ, ๊ธฐ์กด ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด ์ ์ ๋ด๋ ค๋ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ค.
- ํธ์คํธ ์ด์์ฒด์ ์ ํจ๊ป ์ปจํ ์ด๋์ ๊ฐ์ ๋คํธ์ํฌ ๋ฑ ๋์ปค ๋ฆฌ์์ค๋ฅผ ๋ง๋๋ ์ผ์ ๋ด๋นํ๋ค.
- ๋์ปค ์์ง์ ํญ์ ๋์ํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ค.
- ๋์ปค ์์ง์ containerd ๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ํตํด ์ปจํ ์ด๋๋ฅผ ์ค์ ๋ก ๊ด๋ฆฌํ๋ค.
- containerd ๋ ํธ์คํธ ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํตํด ์ปจํ ์ด๋, ์ฆ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ๋ค.
- containerd ๋ CNCF ์์ ๊ด๋ฆฌํ๋ ์คํ ์์ค ํ๋ก์ ํธ๋ก, ์ปจํ ์ด๋๋ ๊ฐ๋ฐฉํ ์ปจํ ์ด๋ ์ด๋์ ํฐ๋ธ๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ณต๊ฐ๋ ๊ฐ๋ฐฉํ ํ์ค์ด๋ค.
- ๋์ปค API(Docker API)
- ๋์ปค๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ํ์ค HTTP ๊ธฐ๋ฐ REST API ์ด๋ค.
- ์ธ๋ถ ๋คํธ์ํฌ์์์ ๋์ปค API ํธ์ถ์ ์ ๊ทผ ํ์ฉ ํน์ ์ฐจ๋จํ ์๋ ์๋ค.
- ๋์ปค ๋ช
๋ นํ ์ธํฐํ์ด์ค(Docker command-line interface)
- ๋์ปค API์ ํด๋ผ์ด์ธํธ์ด๋ค.
- ์ฐ๋ฆฌ๊ฐ docker ๋ช ๋ น์ ์ฌ์ฉํ ๋ ์ค์ ๋ก ๋์ปค API๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ๋ฐ๋ก ๋์ปค CLI ๋ค.
2.6 ์ฐ์ต ๋ฌธ์ : ์ปจํ ์ด๋ ํ์ผ ์์คํ ๋ค๋ฃจ๊ธฐ
- Apace ์ปจํ ์ด๋์ index.html ํ์ผ ๋ณ๊ฒฝํ๊ธฐ.
1๋ฒ vi ๋ฅผ ํตํด ์ง์ ๋ณ๊ฒฝํ๊ธฐ
$ docker exec -it 772f24d9c83c sh
$ cd /usr/local/apache2/htdocs
$ vi index.html
2๋ฒ docker cp ๋ฅผ ์ด์ฉํ ๋ณ๊ฒฝํ๊ธฐ
$ docker container cp index.html 772f24d9c83c:/usr/local/apache2/htdocs/index.html
728x90
๋ฐ์ํ
'๐ ์ฑ > ๋์ปค ๊ต๊ณผ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋์ปค ๊ต๊ณผ์ 3์ฅ ๋์ปค ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ (0) | 2024.11.05 |
---|---|
๋์ปค ๊ต๊ณผ์ 1์ฅ ๋์ปค ์ปจํ ์ด๋์ ์ด๋ฏธ์ง ์ดํดํ๊ธฐ (1) | 2024.11.03 |