03. Docker ์ฌ์ฉํด๋ณด๊ธฐ
03. Docker ์ฌ์ฉํด๋ณด๊ธฐ ๊ด๋ จ
Docker์ ๋ช
๋ น์ docker run
, docker push
์ ๊ฐ์ด docker <๋ช
๋ น>
ํ์์ด๋ฉฐ, ํญ์ root
๊ถํ์ผ๋ก ์คํํด์ผ ํฉ๋๋ค.
๋จผ์ Docker์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์์๋ณด๊ธฐ ์ํด Docker Hub์์ ์ ๊ณตํ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
search
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง ๊ฒ์ํ๊ธฐ
Docker๋ Docker Hub๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ๋ ์ํ๊ณ๊ฐ ๊ตฌ์ถ๋์ด ์์ต๋๋ค. ์ ๋ช ๋ฆฌ๋ ์ค ๋ฐฐํฌํ๊ณผ ์คํ ์์ค ํ๋ก์ ํธ(Redis, Nginx ๋ฑ)์ Docker ์ด๋ฏธ์ง๋ ๋ชจ๋ Docker Hub์์ ๊ตฌํ ์ ์์ต๋๋ค. ํนํ ์ด๋ฏธ์ง์ ๊ด๋ จ๋ ๋ชจ๋ ๋ช ๋ น์ ๊ธฐ๋ณธ์ ์ผ๋ก Docker Hub๋ฅผ ์ด์ฉํ๋๋ก ์ค์ ๋์ด ์์ต๋๋ค.
docker search
๋ช
๋ น์ผ๋ก Docker Hub์์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
sudo docker search ubuntu
#
# NAME DESCRIPTION STARS OFFICIAL AUTOMATED
# ubuntu Ubuntu is a Debian-based Linux operating sysโฆ 14904 [OK]
# websphere-liberty WebSphere Liberty multi-architecture images โฆ 288 [OK]
# ubuntu-upstart DEPRECATED, as is Upstart (find other procesโฆ 112 [OK]
# neurodebian NeuroDebian provides neuroscience research sโฆ 92 [OK]
# ubuntu/nginx Nginx, a high-performance reverse proxy & weโฆ 58
# open-liberty Open Liberty multi-architecture images basedโฆ 54 [OK]
# ubuntu-debootstrap DEPRECATED; use "ubuntu" instead 46 [OK]
๋ค์ํ ์ด๋ฏธ์ง๊ฐ ๊ฒ์๋ ๊ฒ์
๋๋ค. ๋ณดํต ubuntu
, centos
, redis
๋ฑ OS๋ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ ๊ฐ์ง ์ด๋ฏธ์ง๊ฐ ๊ณต์ ์ด๋ฏธ์ง์
๋๋ค. ๋๋จธ์ง๋ ์ฌ์ฉ์๋ค์ด ๋ง๋ค์ด ๊ณต๊ฐํ ์ด๋ฏธ์ง์
๋๋ค.
Docker Hub์์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ ๋ค ํด๋น ์ด๋ฏธ์ง์ Tags
ํญ์ ๋ณด๋ฉด ํ์ฌ ์ฌ์ฉํ ์ ์๋ ์ด๋ฏธ์ง์ ๋ฒ์ ์ ๋ณผ ์ ์์ต๋๋ค.
sudo ์ ๋ ฅํ์ง ์๊ธฐ
docker ๋ช
๋ น์ root ๊ถํ์ผ๋ก ์คํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ๊ณ์ ์์๋ ํญ์ sudo๋ฅผ ์ฌ์ฉํฉ๋๋ค. sudo
๋ฅผ ๋งค๋ฒ ์
๋ ฅํ๊ธฐ ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ ๋น ๋จ๋ฆด ๋๋ ๋ง์ต๋๋ค. sudo
๋ฅผ ์
๋ ฅํ์ง ์๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ฒ์๋ถํฐ root ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๊ฑฐ๋
sudo su
๋ช ๋ น์ ์ฌ์ฉํ์ฌ root ๊ณ์ ์ผ๋ก ์ ํ
sudo su
#
- ํ์ฌ ๊ณ์ ์
docker
๊ทธ๋ฃน์ ํฌํจ(docker
๊ทธ๋ฃน์ root ๊ถํ๊ณผ ๋์ผํ๋ฏ๋ก ๊ผญ ํ์ํ ๊ณ์ ๋ง ํฌํจ์ํต๋๋ค).
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
ํ์ฌ ๊ณ์ ์์ ๋ก๊ทธ์์ํ ๋ค ๋ค์ ๋ก๊ทธ์ธํฉ๋๋ค.
pull
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง ๋ฐ๊ธฐ
Docker Hub์์ ์ฐ๋ถํฌ ๋ฆฌ๋ ์ค ์ด๋ฏธ์ง๋ฅผ ๋ฐ์๋ณด๊ฒ ์ต๋๋ค.
sudo docker pull ubuntu:latest
docker pull <์ด๋ฏธ์ง ์ด๋ฆ>:<ํ๊ทธ>
ํ์์
๋๋ค. latest๋ฅผ ์ค์ ํ๋ฉด ์ต์ ๋ฒ์ ์ ๋ฐ์ต๋๋ค. ubuntu:22.04
, ubuntu:20.10
์ฒ๋ผ ํ๊ทธ๋ฅผ ์ง์ ํด ์ค ์๋ ์์ต๋๋ค.
์ด๋ฏธ์ง ์ด๋ฆ์์ pyrasis/ubuntu
์ฒ๋ผ /
์์ ์ฌ์ฉ์๋ช
์ ์ง์ ํ๋ฉด Docker Hub์์ ํด๋น ์ฌ์ฉ์๊ฐ ์ฌ๋ฆฐ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ต๋๋ค. ๊ณต์ ์ด๋ฏธ์ง๋ ์ฌ์ฉ์๋ช
์ด ๋ถ์ง ์์ต๋๋ค.
์ฐธ๊ณ
ํธ์คํธ์ ์ค์น๋ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ๊ณผ Docker ์ด๋ฏธ์ง์ ๋ฐฐํฌํ์ ์ข ๋ฅ๊ฐ ๋ฌ๋ผ๋ ๋ฉ๋๋ค. CentOS์์ ์ฐ๋ถํฌ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
images
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง ๋ชฉ๋ก ์ถ๋ ฅํ๊ธฐ
์ด์ ๋ฐ์ ์ด๋ฏธ์ง์ ๋ชฉ๋ก์ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker images
#
# REPOSITORY TAG IMAGE ID CREATED SIZE
# ubuntu latest 2dc39ba059dc 7 days ago 77.8MB
docker images
๋ช
๋ น์ ๋ชจ๋ ์ด๋ฏธ์ง ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค. docker images ubuntu
์ฒ๋ผ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ค์ ํ๋ฉด ์ด๋ฆ์ ๊ฐ์ง๋ง ํ๊ทธ
๊ฐ ๋ค๋ฅธ ์ด๋ฏธ์ง๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
run
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ์์ฑํ๊ธฐ
์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ์์ฑํ ๋ค Bash ์ ธ์ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker run -i -t --name hello ubuntu /bin/bash
docker run <์ต์
> <์ด๋ฏธ์ง ์ด๋ฆ> <์คํํ ํ์ผ>
ํ์์
๋๋ค. ์ฌ๊ธฐ์๋ ubunbu
์ด๋ฏธ์ง๋ฅผ ์ปจํ
์ด๋๋ก ์์ฑํ ๋ค ubuntu
์ด๋ฏธ์ง ์์ /bin/bash
๋ฅผ ์คํํฉ๋๋ค. ์ด๋ฏธ์ง ์ด๋ฆ ๋์ ์ด๋ฏธ์ง ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
-i
(interactive),-t
(Pseudo-tty) ์ต์ ์ ์ฌ์ฉํ๋ฉด ์คํ๋ Bash ์ ธ์ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ์ ํ ์ ์์ต๋๋ค.--name
์ต์ ์ผ๋ก ์ปจํ ์ด๋์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ฆ์ ์ง์ ํ์ง ์์ผ๋ฉด Docker๊ฐ ์๋์ผ๋ก ์ด๋ฆ์ ์์ฑํ์ฌ ์ง์ ํฉ๋๋ค.
์ด์ ํธ์คํธ OS์ ์์ ํ ๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์ด ์์ฑ๋์์ต๋๋ค. cd
, ls
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ๋ด๋ถ๋ฅผ ํ๋ฒ ๋๋ฌ๋ด
๋๋ค. ํธ์คํธ OS์๋ ๋ค๋ฅด๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. exit
๋ฅผ ์
๋ ฅํ์ฌ Bash ์
ธ์์ ๋น ์ ธ๋์ต๋๋ค. ์ฐ๋ถํฌ ์ด๋ฏธ์ง์์ /bin/bash ์คํ ํ์ผ์ ์ง์ ์คํํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ๋น ์ ธ๋์ค๋ฉด ์ปจํ
์ด๋๊ฐ ์ ์ง(stop)๋ฉ๋๋ค.
ps
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ๋ชฉ๋ก ํ์ธํ๊ธฐ
๋ค์ ๋ช ๋ น์ ์ ๋ ฅํ์ฌ ๋ชจ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker ps -a
#
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# f8b0bf04c340 ubuntu "/bin/bash" 5 seconds ago Exited (0) 3 seconds ago hello
docker ps
ํ์์
๋๋ค. -a
์ต์
์ ์ฌ์ฉํ๋ฉด ์ ์ง๋ ์ปจํ
์ด๋๊น์ง ๋ชจ๋ ์ถ๋ ฅํ๊ณ , ์ต์
์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์คํ๋๊ณ ์๋ ์ปจํ
์ด๋๋ง ์ถ๋ ฅํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์์์ ์ปจํ
์ด๋๋ฅผ ์์ฑํ ๋ ์ด๋ฆ์ hello
๋ก ์ง์ ํ์ผ๋ฏ๋ก ์ปจํ
์ด๋ ๋ชฉ๋ก์์๋ hello
๋ก ํ์๋ฉ๋๋ค.
start
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ์์ํ๊ธฐ
๋ฐฉ๊ธ ์ ์งํ ์ปจํ ์ด๋๋ฅผ ๋ค์๊ธ ์์ํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker start hello
docker start <์ปจํ
์ด๋ ์ด๋ฆ>
ํ์์
๋๋ค. ์ปจํ
์ด๋ ์ด๋ฆ ๋์ ์ปจํ
์ด๋ ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
๋ค์ ๋ช ๋ น์ ์ ๋ ฅํ์ฌ ์คํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker ps
#
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# f8b0bf04c340 ubuntu "/bin/bash" 40 seconds ago Up 4 seconds hello
hello
์ปจํ
์ด๋๊ฐ ์์๋์์ต๋๋ค.
restart
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ์ฌ์์ํ๊ธฐ
OS ์ฌ๋ถํ ์ฒ๋ผ ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker restart hello
docker restart <์ปจํ
์ด๋ ์ด๋ฆ>
ํ์์
๋๋ค. ์ปจํ
์ด๋ ์ด๋ฆ ๋์ ์ปจํ
์ด๋ ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
attach
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋์ ์ ์ํ๊ธฐ
์ด์ ์์ํ ์ปจํ ์ด๋์ ์ ์ํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์ ๋ช ๋ น์ ์คํํ ๋ค ์ํฐ๋ฅผ ํ๋ฒ ๋ ์ ๋ ฅํ๋ฉด Bash ์ ธ์ด ํ์๋ฉ๋๋ค.
sudo docker attach hello
#
# root@f8b0bf04c340:/#
docker attach <์ปจํ
์ด๋ ์ด๋ฆ>
ํ์์
๋๋ค. ์ปจํ
์ด๋ ์ด๋ฆ ๋์ ์ปจํ
์ด๋ ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ /bin/bash๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ๋ช ๋ น์ ์์ ๋กญ๊ฒ ์ ๋ ฅํ ์ ์์ง๋ง, DB๋ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ์ ๋ ฅ์ ํ ์ ์๊ณ ์ถ๋ ฅ๋ง ๋ณด๊ฒ ๋ฉ๋๋ค.
Bash ์
ธ์์ exit
๋๋ Ctrl+D๋ฅผ ์
๋ ฅํ๋ฉด ์ปจํ
์ด๋๊ฐ ์ ์ง๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ Ctrl+P, Ctrl+Q๋ฅผ ์ฐจ๋ก๋๋ก ์
๋ ฅํ์ฌ ์ปจํ
์ด๋๋ฅผ ์ ์งํ์ง ์๊ณ , ์ปจํ
์ด๋์์ ๋น ์ ธ๋์ต๋๋ค.
exec
๋ช
๋ น์ผ๋ก ์ธ๋ถ์์ ์ปจํ
์ด๋ ์์ ๋ช
๋ น ์คํํ๊ธฐ
ํ์ฌ ์ปจํ
์ด๋๊ฐ /bin/bash
๋ก ์คํ๋ ์ํ์
๋๋ค. ์ด๋ฒ์๋ /bin/bash
๋ฅผ ํตํ์ง ์๊ณ ์ธ๋ถ์์ ์ปจํ
์ด๋ ์์ ๋ช
๋ น์ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker exec hello echo "Hello World"
Hello World
docker exec <์ปจํ
์ด๋ ์ด๋ฆ> <๋ช
๋ น> <๋งค๊ฐ ๋ณ์>
ํ์์
๋๋ค. ์ปจํ
์ด๋ ์ด๋ฆ ๋์ ์ปจํ
์ด๋ ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. ์ปจํ
์ด๋๊ฐ ์คํ๋๊ณ ์๋ ์ํ์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ ์ง๋ ์ํ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปจํ
์ด๋ ์์ echo
๋ช
๋ น์ ์คํํ๊ณ ๋งค๊ฐ ๋ณ์๋ก **"Hello World"**๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์ Hello World๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค. docker exec
๋ช
๋ น์ ์ด๋ฏธ ์คํ๋ ์ปจํ
์ด๋์ apt-get
, yum
๋ช
๋ น์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ฑฐ๋, ๊ฐ์ข
๋ฐ๋ชฌ์ ์คํํ ๋ ํ์ฉํ ์ ์์ต๋๋ค.
stop
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ์ ์งํ๊ธฐ
์ด๋ฒ์๋ ์ปจํ ์ด๋๋ฅผ ์ ์งํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ์คํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker ps
#
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# f8b0bf04c340 ubuntu "/bin/bash" 2 minutes ago Up About a minute hello
๋ค์ ๋ช ๋ น์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์ ์งํฉ๋๋ค.
sudo docker stop hello
docker stop <์ปจํ
์ด๋ ์ด๋ฆ>
ํ์์
๋๋ค. ์ปจํ
์ด๋ ์ด๋ฆ ๋์ ์ปจํ
์ด๋ ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
์คํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker ps
#
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hello
์ปจํ
์ด๋๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์๋ฌด๊ฒ๋ ์ ๋์ต๋๋ค.
rm
๋ช
๋ น์ผ๋ก ์ปจํ
์ด๋ ์ญ์ ํ๊ธฐ
์์ฑ๋ ์ปจํ ์ด๋๋ฅผ ์ญ์ ํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker rm hello
docker rm <์ปจํ
์ด๋ ์ด๋ฆ>
ํ์์
๋๋ค. ์ปจํ
์ด๋ ์ด๋ฆ ๋์ ์ปจํ
์ด๋ ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค.
๋ชจ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker ps -a
#
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hello
์ปจํ
์ด๋๋ฅผ ์ญ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฌด๊ฒ๋ ์ ๋์ต๋๋ค.
rmi
๋ช
๋ น์ผ๋ก ์ด๋ฏธ์ง ์ญ์ ํ๊ธฐ
์ด๋ฒ์๋ ์ด๋ฏธ์ง๋ฅผ ์ญ์ ํด๋ณด๊ฒ ์ต๋๋ค.
sudo docker rmi ubuntu:latest
docker rmi <์ด๋ฏธ์ง ์ด๋ฆ>:<ํ๊ทธ>
ํ์์
๋๋ค. ์ด๋ฏธ์ง ์ด๋ฆ ๋์ ์ด๋ฏธ์ง ID๋ฅผ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. docker rmi ubuntu
์ฒ๋ผ ์ด๋ฏธ์ง ์ด๋ฆ๋ง ์ง์ ํ๋ฉด ํ๊ทธ
๋ ๋ค๋ฅด์ง๋ง ubuntu
์ด๋ฆ์ ๊ฐ์ง ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ญ์ ๋ฉ๋๋ค.
์ด๋ฏธ์ง ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
sudo docker images
#
# REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu
์ด๋ฏธ์ง๋ฅผ ์ญ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฌด๊ฒ๋ ์ ๋์ต๋๋ค.