Docker ์ด๋ฏธ์ง ์ ์ด
์ด ๊ธ์์๋ Docker ์ด๋ฏธ์ง ์ ์ดํ๋๋ฐ ํ์๋ก ์์์ผํ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น๊ณผ ์ต์ ๋ค์ ์๊ฐํ๋ค.
์ํ๋ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๊ธฐ ์ํด์๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํด์ผํ๋ค. ์ด๋ฐ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์ด๋ฏธ์ง๊ฐ ํ์ํ๋ค. Docker์์ ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋๋ฐ ์์ด์ ์ฌ์ฉ๋๋ Base, ์ค๊ณ๋, ํ์ด ๋๋ค.
Java์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด๋ณด์ จ๋ค๋ฉด ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ์ ๋น์ทํ๋ค.
Docker CLI command
- [DevOps/Docker] - [Docker] Ubuntu ๋์ปค ์ค์น
- [DevOps/Docker] - [Docker] CentOS ๋์ปค ์ค์น
- [DevOps/Docker] - [Docker] Windows ๋์ปค ์ค์น
Docker๋ฅผ ์ค์นํ๋ค๋ฉด Docker CLI command Tool๋ ํจ๊ป ์ค์น๊ฐ ๋์์ ๊ฒ์
๋๋ค.
์ด๋ Command Line ํํ๋ก Docker๋ฅผ ์ ์ดํ ์ ์๋ ํด ์
๋๋ค.
--help
Docker CLI command๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ Docker Docs ๋ฌธ์๋ฅผ ํตํด ํ์ธํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ํํ ๋ฐฉ๋ฒ์ธ๋ฐ... command์ "--help" ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฐฉ๋ฒ์ด๋ ์ต์ ์ ๋๋ ํ์ธํ ์ ์๋ค. ๋งค์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ๋ฟ๋ง ์๋๋ผ, Docker CLI ๋ง๊ณ ๋ค๋ฅธ CLI ํด์์๋ ์ด๋ฐ ๋ช ๋ น์ด ์ ๊ณต๋์ด "--help"๋ช ๋ น์ผ๋ก ํ์ธํ๋ ๊ฒ์ ์ต๊ดํํ๋ฉด ๋ค๋ฅธ CLIํด๋ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ ๊ฒ๋๋ค.
$ docker image --help
๊ธฐ๋ณธ์ ์ผ๋ก "--help" ์ต์ ์ ํตํด ์ด๋ค ๋ช ๋ น์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ ์ ์๋ค.
$ docker image pull --help
๊ฐ์ฅ ์์ ๋ช ๋ น์์๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ถ command์ ๋ํ ์ฌ์ฉ๋ฒ๋ "--help"๋ช ๋ น์ ์ฌ์ฉํด์ ํ์ธํ ์ ์๋ค. ์ด๋ฐ ์์ผ๋ก ์ธ๋ถ ๋ด์ฉ์ ํ์ธํด๊ฐ๋ฉด์ CLI ํด์ ์ฌ์ฉํ๋ค๋ณด๋ฉด ๊ธ๋ฐฉ ์ต์ํด์ง ์ ์๋ค.
Management Command์ Alias Command
$ docker --help
Docker CLI Tool์๋ Management Command๋ก ๊ทธ๋ฃนํ๋์ด ์๋ ๋ช ๋ น๋ค์ด ์๊ณ ์ผ๋ฐ Command๊ฐ ์๋ค. ์ด์ ์๋ Management Command๊ฐ ๋ฐ๋ก ๊ทธ๋ฃนํ ๋์ด ์์ง ์์์ผ๋... Docker CLI 1.13๋ถํฐ ๊ด๋ฆฌ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์์ฌ์ด ๋ช ๋ น ์ฌ์ฉ์ ์ํด ๋ช ๋ น์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํ ํ๋ค. ๊ทธ๋์ ๋๋ถ๋ถ์ ์ผ๋ฐ Command์๋ Management Command๋ก ์คํํ๋ ๋ช ๋ น์ ๊ฐ๋จํ๊ฒ ์ค์ธ ๋ณ์นญ๊ฐ์ ๋ช ๋ น์ด๋ค.
์์
# ์ด๋ฏธ์ง ๋ฐ๊ธฐ
$ docker image pull NAME[:TAG|@DIGEST]
$ docker pull NAME[:TAG|@DIGEST]
# ์ด๋ฏธ์ง ์กฐํ
$ docker image ls
$ docker images
# ์ด๋ฏธ์ง ์ญ์
$ docker image rm IMAGE [IMAGE...]
$ docker rmi IMAGE [IMAGE...]
์์ ์์๋ ๋ชจ๋ ๊ฐ์ ์์ ์ ํ๋ ๋ช ๋ น์ Management Command์ ์ผ๋ฐ Command๋ก ์์ฑํ ๋ช ๋ น๋ค์ด๋ค. ๊ทธ๋ฅ ๋ช ๋ น๋ง ๋ดค์ ๋ ๋น์ทํ ๋ช ๋ น๋ค์ด ์์ด ์ผ๋ฐ Command๊ฐ ์ด๋ค Management Command์ ์ฐ๊ฒฐ์ด๋๋์ง ์ด๋์ ๋๋ ์์งํ๊ณ ์ฌ์ฉํด์ผ ํผ๋์ ์ค์ผ ์ ์๋ค. ์๋ ๋ช ๋ น์ด ๋ํ์ ์ธ ์์์ด๋ค.
# ๋ชจ๋ ์ด๋ฏธ์ง ์ถ๋ ฅ
$ docker image ls
# ์ด๋ฏธ์ง ์ถ๋ ฅ์ด ์๋๋ค.
$ docker images ls
์์ ์ฒ๋ผ "docker image ls" ๋ช ๋ น์ ์ฌ์ฉํ์ ๋๋ ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ถ๋ ฅ ๋์๋๋ฐ... "docker images ls"๋ก ๋ช ๋ น์ ์ฌ์ฉํ์ ๋๋ ์๋ฌด ์ด๋ฏธ์ง๊ฐ ์ถ๋ ฅ๋์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค. "docker images"๋ "docker image ls"์ ๋ณ์นญ์ฒ๋ผ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด๋ค. ๊ทธ๋์ "docker images ls"๋ "docker image ls ls" ํํ๋ก ๋ช ๋ น์ ์คํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ls ํน์ list๋ก ๋์ด ์๋ ์ด๋ฏธ์ง๊ฐ ์์ด ์๋ฌด ์ด๋ฏธ์ง๊ฐ ๋ชฉ๋ก์ ์ถ๋ ฅ๋์ง ์๋ ๊ฒ์ด๋ค.
Docker Hub(Registry)
Docker CLI command๋ฅผ ์ฌ์ฉํด์ ์์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐ๊ณ , ๋ฐ์ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ ๋ฌผ๋ก ๋ก์ปฌ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ง๋ง... ๋ก์ปฌ์ ์๋ ์ด๋ฏธ์ง๋ ์ด๋ป๊ฒ ๋ฐ์์ค๋ ๊ฒ์ผ๊น์? ๋ฌผ๋ฆฌ์ ์ธ ํ์ผ์ Docker CLI command๋ก Loadํ๋ ๊ฒ๋ ํ๋์ ๋ฐฉ๋ฒ์ด์ง๋ง... ๋๊ตฐ๊ฐ๊ฐ ๋ฐฐํฌํ ์ด๋ฏธ์ง๋ผ๋ฉด... ํ์ผ์ ๋งค๋ฒ ๋ค์ด๋ฐ์์ ์ฌ์ฉํด์ผํ๋ ๋ฒ๊ฑฐ๋ฌ์์ด ์์ต๋๋ค. ๊ทธ๋์ Registry๋ฅผ ์ง์ ํด์ command๋ง ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ์์ ์ฌ์ฉํฉ๋๋ค. Docker ์ด๋ฏธ์ง ์ ์ดํ๋๋ฐ ์์ด์ ๋งค์ฐ ์ค์ํ ์ด๋ฏธ์ง ๊ด๋ฆฌ์๋ค.
Registry๋ ์ธ๋ถ์ ๊ณต๊ฐ๋์ง ์๊ณ Privateํ ์๋ ์๊ณ ... Docker Hub๋ Quay.io์ ๊ฐ์ Public Registry๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Docker์์ ์ ๊ณตํ๋ Registry๊ฐ Docker Hub์ด๊ณ Docker๋ฅผ ์ค์นํ ๋ ์ค์ ๋๋ Default Registry์ด๋ค. ์ด๋ฏธ์ง๋ฅผ pullํด์๋ฐ์ ๋ ๊ธฐ๋ณธ Registry๋ฅผ ๊ผญ ์ค์ ํด์ผ ํด๋น Registry์์ ๋ฐ์ ์ ์๋ ๊ฒ์ ์๋๋ค. ์๋ฅผ ๋ค์ด Docker Hub๊ฐ Default Registry๋ก ๋ฑ๋ก๋์ด ์์ง๋ง... Private Registry์์ ์ด๋ฏธ์ง์ ์ ์ฒด URL ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํด์ ๋ฐ์ ์๋ ์๊ณ ๊ทธ ๋ฐ๋๋ก๋ ๊ฐ๋ฅํ๋ค. Default Registry ์ค์ ์ ๋จ์ง URL ์ฃผ์๋ฅผ ์ ์ธํ Repository๋ถํฐ ๊ฐ๋ตํ๊ฒ CLI command ์ ๋ ฅํ๊ธฐ ์ํด ์ค์ ํ๋ ๊ฒ์ด๋ค.
์์)
- docker pull registry.hub.docker.com/library/busybox:latest
- docker pull busybox:latest
Default Registry๊ฐ Docker Hub์ธ ๊ฒฝ์ฐ ์ ๋ ๋ช ๋ น์ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋๋ค.
Docker Hub์ ๋ค์ด๊ฐ์ ๊ฒ์ํด๋ณด๋ฉด ์ฌ๋ฌ ์ด๋ฏธ์ง๊ฐ ๊ฒฐ๊ณผ๋ก ๋์จ๋ค.
"Official Image" ํ๊ทธ๊ฐ ๋ถ์ด ์๋ ์ด๋ฏธ์ง๋ค์ ๊ณต์ ์ด๋ฏธ์ง๋ค์ด๊ณ ์ผ๋ฐ ์ฌ์ฉ์๋ค๋ ์์ฑํ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ ์ ์๋ค.
Docker ์ด๋ฏธ์ง ์ ์ด ๋ช ๋ น
Docker ์ด๋ฏธ์ง ์ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ผํ๋ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ๋ค.
- ์ด๋ฏธ์ง ๋ฐ๋ ๋ฐฉ๋ฒ
- ์ด๋ฏธ์ง ์กฐํ ํ๋ ๋ฐฉ๋ฒ
- ๋ก์ปฌ
- ์ธ๋ถ Repository
- ์ด๋ฏธ์ง ์ธ๋ถ ์ ๋ณด
- ์ด๋ฏธ์ง ์ญ์ ํ๋ ๋ฐฉ๋ฒ
- ์ด๋ฏธ์ง ํ๊น
์ ์ด์ ํ์ํ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ด ๋ง์ง๋ง... ์ด๋ฏธ์ง๋ฅผ ์น์ํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด ์ผ๋จ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์๋์์ ๋ค๋ฃฌ๋ค.
Docker ์ด๋ฏธ์ง ๋ฐ๊ธฐ
docker pull
"docker pull" ๋ช ๋ น์ Registry๋ก๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ๋ก ๋ฐ๋ ๋ช ๋ น์ด๋ค.
$ docker pull centos:8
or
$ docker image pull centos:8
- NAME[:TAG|@DIGEST] ํํ๋ก ๋ค์ด ๋ฐ์ ์ ์๋ค.
- ์ฌ๊ธฐ์ ํ๊ทธ๋ ์ด๋ฏธ์ง์ ๋ํ ์ถ์ ์ ์ํ ๋ฒ์ ์ด๋ค.
- Tag๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ธ latest ํ๊ทธ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋๋ค.
- latest๋ก ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋ ํน์ ๋ฒ์ ์ผ๋ก ๋์ด ์๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
-a ์ต์
$ docker pull -a centos
- "-a" ํน์ "--all-tags" ์ต์
์ Repository์ ์ ์ฒด ํ๊ทธ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋๋ค.
- ์ ์์์ ๊ฒฝ์ฐ centos Repository์ ์ ์ฒด ํ๊ทธ๋ฅผ ๋ฐ๋๋ค.
Docker ์ด๋ฏธ์ง ์กฐํ
docker images
๋ก์ปฌ์ ์๋ ์ด๋ฏธ์ง๋ค์ ๋ชฉ๋ก์ ๋ณผ ์ ์๋ ๋ช ๋ น์ด๋ค.
$ docker images
or
$ docker image ls
--digests ์ต์
digest๋ ์ด๋ฏธ์ง๋ฅผ ํด์ํจ์์ ๋๋ ค์ ์ป์ ํด์ ๊ฐ์
๋๋ค. Docker ์ด๋ฏธ์ง ์ ์ด๋ฅผ ์ง์ ์ ์ผ๋ก ํ๋ ๊ฒ์ ์๋๊ณ ... ๋ด๋ถ์ ์ผ๋ก ์ด๋ฏธ์ง ์์ฒด์ ๋ํ ๋ณ์กฐ ๋ฐฉ์ง๋ฅผ ์ํ ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด digest ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
ํด์์ ๋ํ ์์ธํ ๋ด์ฉ์ [CS/๋ณด์] - Hash ๋จ๋ฐฉํฅ ์ํธํ ๊ธฐ๋ฒ ์์ ํ์ธํ ์ ์์ต๋๋ค.
$ docker images --digests
- diest์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
- ํ๊ทธ๊ฐ ๋ค๋ฅด๋๋ผ๋ ๊ฐ์ ์ด๋ฏธ์ง์ ๋ํด์๋ ๊ฐ์ digest๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- Docker ์ด๋ฏธ์ง ์ ์ด(pull, push or Dockerfile FROM ์ )ํ๋๋ฐ digest๋ฅผ ํ์ฉํ ์ ์๋ค.
format ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ํ๋ ํํ๋ก ์ด๋ฏธ์ง ๋ชฉ๋ก์ ์ถ๋ ฅํ ์ ์๊ณ ์๋์ ๊ฐ์ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ID
- Repository
- Tag
- Digest
- CreateSince
- CreatedAt
- Size
$ docker images --format "{{.ID}}: {{.Repository}} - {{.Tag}}"
- ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฐ๋ฐ์ ํน์ ํํ๋ก ์ด๋ฏธ์ง ๋ชฉ๋ก ์ถ๋ ฅ์ด ํ์ํ ๋ ํด๋น ์ต์ ์ ์ฌ์ฉํ ์ ์๋ค.
-q ์ต์
$ docker images -q
- ์ด๋ฏธ์ง ID๋ง ์ถ๋ ฅํ๋ค.
- ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ์ญ์ ํ ๋ ํด๋น ์ต์
์ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๊ฒ ์ญ์ ํ ์ ์๋ค.
- docker rmi $(docker images -q)
docker search
Registry์ ์กด์ฌํ๋ ์ด๋ฏธ์ง๋ฅผ ์กฐํํ๋ ๋ช ๋ น์ด๋ค.
$ docker search ubuntu
docker inspect
์ด๋ฏธ์ง์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
$ docker inspect centos:8
- ์ด๋ฏธ์ง์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
- JSON ํํ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
Docker ์ด๋ฏธ์ง ์ญ์
docker rmi
์ด๋ฏธ์ง๋ฅผ ์ญ์ ํ๋ ๋ช ๋ น์ด๋ค.
$ docker rmi centos:8
or
$ docker image rm centos:8
- ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋์ดํด์ ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ๋์์ ์ญ์ ํ ์ ์๋ค
- ์ด๋ฏธ์ง์ ID๋ฅผ ์ฌ์ฉํด์ ์ญ์ ํ ์ ์๋ค.
--force ์ต์
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด์ ์์ฑ๋ ์ปจํ ์ด๋๊ฐ ์์ผ๋ฉด ์ด๋ฏธ์ง ์ญ์ ๊ฐ ์๋๋ค. ์์ฑํ ์ปจํ ์ด๋๊ฐ ์๋๋ผ๋ ๊ฐ์ ๋ก ์ด๋ฏธ์ง๋ฅผ ์ญ์ ํ๊ธฐ ์ํด ํด๋น ์ต์ ์ ์ฌ์ฉํ ์ ์๋ค.
$ docker rmi centos:8 --force
- ์ปจํ
์ด๋๊ฐ ์คํ์ค์ธ ์ํ์์ ์ญ์ ๊ฐ ์๋๋ค.
- ์์ฑ๋์ด ์์ผ๋ ์ข ๋ฃ๋ ์ปจํ ์ด๋๋ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค.
Docker ํ๊น
docker tag
Docker ์ด๋ฏธ์ง ์ ์ด์ ์์ด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋๋ฐ... ๊ฐ์ ์ด๋ฏธ์ง๋๋ผ๋ ๋ค๋ฅด๊ฒ ํ๊น ํด์ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ(centos:8, centos:8.1, latest ๋ฑ)๋ ๋ง๋ค. ์ฃผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ด๋ฏธ์ง๋ฅผ ํ๊น ํ๋ ์์ ์ ํ๋ค.
$ docker tag centos:8 test:1
or
$ docker image tag centos:8 test:1
- docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] ํํ๋ก ์ฌ์ฉ๋๋ค.
- ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด latest๋ก ํ๊น ๋๋ค.
๋ง๋ฌด๋ฆฌ
Docker ์ด๋ฏธ์ง ์ ์ดํ๋๋ฐ ์์ด์ ๋ฐฐํฌ, ํํฐ๋ง, ์ด๋ฏธ์ง ์์นด์ด๋น ๋ฑ ์์ง ๋ค๋ฃจ์ง ์์ ๋ด์ฉ๋ ๋ง๋ค. ์ด๋ฒ ๊ธ์์๋ Docker ์ด๋ฏธ์ง ์ ์ดํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ๋ค์ ๋ํด์ ์์๋ดค๊ณ ์์ผ๋ก์ ๋ค๋ฅธ ๊ธ๋ค์์ ์์ง ๋ค๋ฃจ์ง ๋ชปํ Docker ์ด๋ฏธ์ง ์ ์ด ๊ธฐ๋ฅ๋ค์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋๊ธ