[[Docker ๐ณ] 2. CLI ์ตํ๊ธฐ
![[[Docker ๐ณ] 2. CLI ์ตํ๊ธฐ](/images/useBlog/docker.png)
์ด๋ฏธ์ง (Image)
์ด๋ฏธ์ง(Image) ๋ค์ด๋ก๋
์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ํ ๋ Dockerhub๋ผ๋ ๊ณณ์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ๋๋ค.

-
์ต์ ๋ฒ์ (
latest) ์ด๋ฏธ์ง ๋ค์ด๋ก๋# docker pull ์ด๋ฏธ์ง๋ช $ docker pull nginx # docker pull nginx:latest์ ๋์ผ
-
ํน์ ๋ฒ์ ์ด๋ฏธ์ง ํน์ ๋ฒ์ ์ ๋ํ๋ ์ด๋ฆ์
ํ๊ทธ๋ช์ด๋ผ๊ณ ํ๋ค.ํ๊ทธ๋ช์ dockerhub์์ ํ์ธํ ์ ์๋ค.# docker pull ์ด๋ฏธ์ง๋ช :ํ๊ทธ๋ช $ docker pull nginx:stable-perl
์ด๋ฏธ์ง ์กฐํ / ์ญ์
์ด๋ฏธ์ง ์กฐํ
[๋ค์ด๋ฐ์ ๋ชจ๋ ์ด๋ฏธ์ง ์กฐํ]
$ docker image ls

์ด๋ฏธ์ง ์ญ์
[ํน์ ์ด๋ฏธ์ง ์ญ์ ]
$ docker image rm [์ด๋ฏธ์ง ID ๋๋ ์ด๋ฏธ์ง๋ช
]
-
rm: remove์ ์ฝ์ -
์ด๋ฏธ์ง ID๋ฅผ ์ ๋ ฅํ ๋ ID ์ ๋ถ ์ ๋ ฅํ์ง ์๊ณ ์ผ๋ถ๋ง ์ ๋ ฅํด๋ ๋๋ค. (๋จ, ID ์ผ๋ถ๋ง ์ ๋ ฅํ์ ๋, ์ ๋ ฅํ ID์ ์ผ๋ถ๋ฅผ ๊ฐ์ง ์ด๋ฏธ์ง๊ฐ ๋จ 1๊ฐ์ฌ์ผ ํ๋ค.)
[์ค์ง๋ ์ปจํ ์ด๋์์ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ฏธ์ง ๊ฐ์ ์ญ์ ]
$ docker image rm -f [์ด๋ฏธ์ง ID ๋๋ ์ด๋ฏธ์ง๋ช
]
- ์คํ ์ค์ธ ์ปจํ ์ด๋์์ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ฏธ์ง๋ ๊ฐ์ ๋ก ์ญ์ ํ ์ ์๋ค.
[์ ์ฒด ์ด๋ฏธ์ง ์ญ์ ]
# ์ปจํ
์ด๋์์ ์ฌ์ฉํ๊ณ ์์ง ์์ ์ด๋ฏธ์ง๋ง ์ ์ฒด ์ญ์
$ docker image rm $(docker images -q)
# ์ปจํ
์ด๋์์ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ฏธ์ง๋ฅผ ํฌํจํด์ ์ ์ฒด ์ด๋ฏธ์ง ์ญ์
$ docker image rm -f $(docker images -q)
docker images -q: ์์คํ ์ ์๋ ๋ชจ๋ ์ด๋ฏธ์ง์ ID๋ฅผ ๋ฐํํ๋ค. ์ฌ๊ธฐ์ -q ์ต์ ์ quite๋ฅผ ์๋ฏธํ๋ฉฐ, ์์ธ ์ ๋ณด ๋์ ์ ๊ฐ ์ด๋ฏธ์ง์ ๊ณ ์ ํ ID๋ง ํ์ํ๋๋ก ์ง์ํ๋ค.
์ปจํ ์ด๋ (Container)
์ปจํ ์ด๋ ์์ฑ
์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค. ์ด ๋, ์ปจํ ์ด๋๋ฅผ ์คํ์ํค์ง๋ ์๋๋ค. (์ปจํ ์ด๋๋ฅผ ์คํํ์ง ์๊ณ ์์ฑ๋ง ํ๋ ๊ฒฝ์ฐ๊ฐ ์ ์์ด์, ์ด ๋ช ๋ น์ด๋ ์ ์ฌ์ฉํ์ง ์๋๋ค.)
# docker create ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker create nginx
$ docker ps -a # ๋ชจ๋ ์ปจํ
์ด๋ ์กฐํ

์ปจํ ์ด๋ ์คํ
์ ์ง๋์ด ์๋ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค.
# docker start ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
$ docker start ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
$ docker ps # ์คํ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
# Nginx ์ปจํ
์ด๋ ์ค๋จ ํ ์ญ์ ํ๊ธฐ
$ docker ps # ์คํ ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
$ docker stop {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ค๋จ
$ docker rm {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ญ์
$ docker image rm nginx # Nginx ์ด๋ฏธ์ง ์ญ์


์ปจํ ์ด๋ ์์ฑ + ์คํ
์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋ค, ์ปจํ ์ด๋๋ฅผ ์คํ๊น์ง ์ํจ๋ค. (์ฒ์์ ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํ์ํค๊ณ ์ถ์ ๋, ์ด ๋ช ๋ น์ด๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค.)
ํฌ๊ทธ๋ผ์ด๋(foreground)์ ๋ฐฑ๊ทธ๋ผ์ด๋(background)์ ์ฐจ์ด
ํฌ๊ทธ๋ผ์ด๋๋ ๋ด๊ฐ ์คํ์ํจ ํ๋ก๊ทธ๋จ์ ๋ด์ฉ์ด ํ๋ฉด์์ ์คํ๋๊ณ ์ถ๋ ฅ๋๋ ์ํ๋ฅผ ๋ปํ๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ํฌ๊ทธ๋ผ์ด๋ ์ํ์์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์กฐ์ํ ์๊ฐ ์๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋๋ ๋ด๊ฐ ์คํ์ํจ ํ๋ก๊ทธ๋จ์ด ์ปดํจํฐ ๋ด๋ถ์ ์ผ๋ก ์คํ๋๋ ์ํ๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋์ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์คํ๋๊ณ ์๋ ์ง์ ๋ํ ์ ๋ณด๋ฅผ ํ๋ฉด์์ ํ์ธํ ์ ์๋ค. ์ด๋ฐ ํน์ฑ ๋๋ฌธ์ ๋ค๋ฅธ ๋ช ๋ น์ด๋ฅผ ์ถ๊ฐ๋ก ์ ๋ ฅํ ์๋ ์๊ณ , ์๋ก์ด ํ๋ก๊ทธ๋จ์ ์กฐ์ํ ์๋ ์๋ค.
[์ปจํ ์ด๋๋ฅผ ํฌ๊ทธ๋ผ์ด๋์์ ์คํ]
# docker run ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run nginx # ํฌ๊ทธ๋ผ์ด๋์์ ์คํ (์ถ๊ฐ์ ์ธ ๋ช
๋ น์ด ์กฐ์์ ํ ์๊ฐ ์์)
# Ctrl + C๋ก ์ข
๋ฃํ ์ ์์

- ๋ก์ปฌ ํ๊ฒฝ์ ๋ค์ด๋ฐ์ ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด Dockerhub์ผ๋ก๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด(
docker pull)๋ฐ์์ ์คํ์ํจ๋ค. - Dockerhub์ผ๋ก๋ถํฐ ์๋กญ๊ฒ ๊ฐฑ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ๊ณ ์ถ๋ค๋ฉด
docker pull๋ช ๋ น์ด๋ฅผ ํ์ฉํด์ผ ํ๋ค.
[์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ]
# docker run -d ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run -d nginx
# Nginx ์ปจํ
์ด๋ ์ค๋จ ํ ์ญ์ ํ๊ธฐ
$ docker ps # ์คํ ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
$ docker stop {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ค๋จ
$ docker rm {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ญ์
$ docker image rm nginx # Nginx ์ด๋ฏธ์ง ์ญ์

[์ปจํ ์ด๋์ ์ด๋ฆ ๋ถ์ฌ์ ์์ฑ ๋ฐ ์คํํ๊ธฐ]
# docker run -d --name [์ปจํ
์ด๋ ์ด๋ฆ] ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run -d --name my-web-server nginx
# Nginx ์ปจํ
์ด๋ ์ค๋จ ํ ์ญ์ ํ๊ธฐ
$ docker ps # ์คํ ์ค์ธ ์ปจํ
์ด๋ ์กฐํ
$ docker stop {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ค๋จ
$ docker rm {nginx๋ฅผ ์คํ์ํจ Contnainer ID} # ์ปจํ
์ด๋ ์ญ์
$ docker image rm nginx # Nginx ์ด๋ฏธ์ง ์ญ์

[ํธ์คํธ์ ํฌํธ์ ์ปจํ ์ด๋์ ํฌํธ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ]
# docker run -d -p [ํธ์คํธ ํฌํธ]:[์ปจํ
์ด๋ ํฌํธ] ์ด๋ฏธ์ง๋ช
[:ํ๊ทธ๋ช
]
$ docker run -d -p 4000:80 nginx



์ปจํ ์ด๋ ์กฐํ/์ค์ง/์ญ์
[์คํ ์ค์ธ ์ปจํ ์ด๋๋ค๋ง ์กฐํ]
$ docker ps
ps: process status์ ์ฝ์
[๋ชจ๋ ์ปจํ ์ด๋ ์กฐํ (์๋ ์ค์ธ ์ปจํ ์ด๋ + ์๋์ ๋ฉ์ถ ์ปจํ ์ด๋)]
$ docker ps -a
-a: all์ ์ฝ์
[์ปจํ ์ด๋ ์ค์ง]
$ docker stop ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
$ docker kill ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
- ์ง์ ์๋ ์ปดํจํฐ๋ก ๋น์ ํ์๋ฉด
stop์ ์์คํ ์ข ๋ฃ ๋ฒํผ์ ํตํด ์ ์์ ์ผ๋ก ์ปดํจํฐ๋ฅผ ์ข ๋ฃํ๋ ๊ฑธ ์๋ฏธํ๊ณ ,kill์ ๋ณธ์ฒด ๋ฒํผ์ ๋๋ฌ ๋ฌด์ํ๊ฒ ์ข ๋ฃํ๋ ๊ฑธ ์๋ฏธํ๋ค.
[์ค์ง๋์ด ์๋ ํน์ ์ปจํ ์ด๋ ์ญ์ ]
$ docker rm ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
- ์คํ ์ค์ธ ์ปจํ ์ด๋๋ ์ค์งํ ํ์๋ง ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค.
[์คํ๋๊ณ ์๋ ํน์ ์ปจํ ์ด๋ ์ญ์ ]
$ docker rm **-f** ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID]
[์ค์ง๋์ด ์๋ ๋ชจ๋ ์ปจํ ์ด๋ ์ญ์ ]
$ docker rm $(docker ps -qa)
[์คํ๋๊ณ ์๋ ๋ชจ๋ ์ปจํ ์ด๋ ์ญ์ ]
$ docker rm **-f** $(docker ps -qa)
์ปจํ ์ด๋ ๋ก๊ทธ ์กฐํ
[ํน์ ์ปจํ ์ด๋์ ๋ชจ๋ ๋ก๊ทธ ์กฐํ]
# docker logs [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
$ docker run -d nginx
$ docker logs [nginx๊ฐ ์คํ๋๊ณ ์๋ ์ปจํ
์ด๋ ID]

[์ต๊ทผ ๋ก๊ทธ 10์ค๋ง ์กฐํ]
# dokcer logs --tail [๋ก๊ทธ ๋๋ถํฐ ํ์ํ ์ค ์] [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
$ dokcer logs --tail 10 [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]

[๊ธฐ์กด ๋ก๊ทธ ์กฐํ + ์์ฑ๋๋ ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ]
# docker logs -f [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
# Nginx์ ์ปจํ
์ด๋์ ์ค์๊ฐ์ผ๋ก ์์ด๋ ๋ก๊ทธ ํ์ธํ๊ธฐ
$ docker run -d -p 80:80 nginx
$ docker logs -f
-f: follow์ ์ฝ์ด
[๊ธฐ์กด ๋ก๊ทธ๋ ์กฐํํ์ง ์๊ธฐ + ์์ฑ๋๋ ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ]
$ docker logs --tail 0 -f [์ปจํ
์ด๋ ID ๋๋ ์ปจํ
์ด๋๋ช
]
์คํ์ค์ธ ์ปจํ ์ด๋ ๋ด๋ถ์ ์ ์ํ๊ธฐ
# docker exec -it ์ปจํ
์ด๋๋ช
[๋๋ ์ปจํ
์ด๋ ID] bash
$ docker run -d nginx
$ docker exec -it [Nginx๊ฐ ์คํ๋๊ณ ์๋ ์ปจํ
์ด๋ ID] bash
$ ls # ์ปจํ
์ด๋ ๋ด๋ถ ํ์ผ ์กฐํ
$ cd /etc/nginx
$ cat nginx.conf

- ์ปจํ
์ด๋ ๋ด๋ถ์์ ๋์ค๋ ค๋ฉด
Ctrl + D๋๋exit์ ์ ๋ ฅํ๋ฉด ๋๋ค. bash: ์(Shell)์ ์ผ์ข-it:-it์ต์ ์ ์ฌ์ฉํด์ผ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.-it์ต์ ์ ์ ์ง ์์ผ๋ฉด ๋ช ๋ น์ด๋ฅผ 1๋ฒ๋ง ์คํ์ํค๊ณ ์ข ๋ฃ๋์ด ๋ฒ๋ฆฐ๋ค. ์ฆ,-it์ต์ ์ ์ ์ด์ผ ๊ณ์ํด์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ์ ์๋ค.