G: μλ νμΈμ! π³ νλ κ°λ°/μ΄μ νκ²½μμ Dockerλ μ΄μ μ νμ΄ μλ νμκ° λμ΄κ°κ³ μμ£ . 컨ν μ΄λ κΈ°μ μ ν΅μ¬μΈ Dockerλ₯Ό ν΅ν΄ μ°λ¦¬λ μ ν리μΌμ΄μ μ λ λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ λ°°ν¬νκ³ κ΄λ¦¬ν μ μμ΅λλ€. νμ§λ§ μ²μ μ νλ λΆλ€μ μλ§μ λͺ λ Ήμ΄μ μ΅μ λ€ λλ¬Έμ νΌλμ€λ¬μΈ μ μμ΄μ.
μ΄ κΈμ κ·Έλ° μ¬λ¬λΆλ€μ μν΄ μ€λΉνμ΅λλ€! μ€λ¬΄μμ λ°λ‘ μΈ μ μλ ν΅μ¬ Docker λͺ λ Ήμ΄μ μμ£Ό μ¬μ©λλ μ΅μ λ€μ νλμ νμ ν μ μλλ‘ μΉνΈμνΈ νμμΌλ‘ μ 리νκ³ , νλΆν μμμ ν¨κ» μ€λͺ ν΄ λ릴κ²μ. μ΄ κΈ νλλ©΄ μ¬λ¬λΆλ Docker κ³ μκ° λ μ μμ΅λλ€! β¨
π‘ Docker ν΅μ¬ κ°λ μ§κ³ κ°κΈ°
본격μ μΈ λͺ λ Ήμ΄ μ€λͺ μ μμ, Dockerλ₯Ό μ΄ν΄νλ λ° κΌ νμν λͺ κ°μ§ ν΅μ¬ κ°λ μ μ§§κ² μ§κ³ λμ΄κ°κ²μ. μ΄ κ°λ λ€μ μκ³ λλ©΄ λͺ λ Ήμ΄λ€μ΄ ν¨μ¬ λ λͺ ννκ² λ€κ°μ¬ κ±°μμ.
- μ΄λ―Έμ§ (Image): 컨ν
μ΄λλ₯Ό μμ±νκΈ° μν
μ½κΈ° μ μ©
ν νλ¦Ώμ λλ€. μ ν리μΌμ΄μ , λΌμ΄λΈλ¬λ¦¬, νκ²½ μ€μ λ± λͺ¨λ κ²μ΄ ν¬ν¨λ μΌμ’ μ ‘μ²μ¬μ§’ λλ ‘λΆμ΄λΉ΅ ν’μ΄λΌκ³ μκ°νμλ©΄ λΌμ. π¦ - 컨ν μ΄λ (Container): μ΄λ―Έμ§μ μ€ν κ°λ₯ν μΈμ€ν΄μ€μ λλ€. μ΄λ―Έμ§λ₯Ό λ°νμΌλ‘ λ 립λ νκ²½μμ μ ν리μΌμ΄μ μ΄ κ²©λ¦¬λμ΄ μ€νλλ 곡κ°μ΄μ£ . ‘λΆμ΄λΉ΅ ν’λ‘ λ§λ€μ΄μ§ μ€μ ‘λΆμ΄λΉ΅’μ λΉμ ν μ μμ΅λλ€. λ°νμ νκ²½μ΄λΌκ³ 보μλ©΄ λ©λλ€. πββοΈ
- λ μ§μ€νΈλ¦¬ (Registry): Docker μ΄λ―Έμ§λ₯Ό μ μ₯νκ³ κ³΅μ νλ 곡κ°μ
λλ€. κ°μ₯ μ λͺ
ν κ²μ΄ λ°λ‘
Docker Hub
μ΄λ©°, λΉκ³΅κ° μ΄λ―Έμ§λ₯Ό μν νλΌμ΄λΉ λ μ§μ€νΈλ¦¬λ μ‘΄μ¬ν©λλ€. πΎ - λ³Όλ₯¨ (Volume): 컨ν μ΄λκ° μμ λμ΄λ λ°μ΄ν°κ° μ¬λΌμ§μ§ μκ³ μꡬμ μΌλ‘ μ μ₯λ μ μλλ‘ μ»¨ν μ΄λ μΈλΆμ λ°μ΄ν°λ₯Ό μ°κ²°νλ λ°©μμ λλ€. 컨ν μ΄λμ νλ°μ± λ¬Έμ λ₯Ό ν΄κ²°ν΄ μ€λλ€. ποΈ
- λ€νΈμν¬ (Network): μ¬λ¬ 컨ν μ΄λλ€μ΄ μλ‘ ν΅μ νκ±°λ, 컨ν μ΄λκ° μΈλΆμ ν΅μ ν μ μλλ‘ μ°κ²°νλ λ°©λ²μ λλ€. π
π Docker λͺ λ Ήμ΄ μΉνΈμνΈ & ν΅μ¬ μ΅μ
μ, μ΄μ μ€μ μ λλ€! κ°μ₯ μμ£Ό μ¬μ©νκ³ μ€μν λͺ λ Ήμ΄λ€μ μΉ΄ν κ³ λ¦¬λ³λ‘ λλμ΄ μμΈν μ΄ν΄λ³Όκ²μ.
I. 컨ν μ΄λ κΈ°λ³Έ λΌμ΄νμ¬μ΄ν΄ π
컨ν μ΄λλ₯Ό μμ±νκ³ , μ€ννκ³ , μ€μ§νκ³ , μμ νλ κ°μ₯ κΈ°λ³Έμ μΈ λͺ λ Ήμ΄λ€μ λλ€.
-
docker run
: 컨ν μ΄λλ₯Ό μμ±νκ³ μ€νν©λλ€. Dockerμ κ½μ΄λΌκ³ ν μ μμ£ ! πΉdocker run [μ΅μ ] <μ΄λ―Έμ§ μ΄λ¦>[:νκ·Έ] [μ€νν λͺ λ Ήμ΄]
-
ν΅μ¬ μ΅μ :
-d
(or--detach
): λ°±κ·ΈλΌμ΄λμμ 컨ν μ΄λλ₯Ό μ€νν©λλ€. ν°λ―Έλμ μ μ νμ§ μμ λ§€μ° μ μ©ν©λλ€.-p <νΈμ€νΈν¬νΈ>:<컨ν μ΄λν¬νΈ>
(or--publish
): νΈμ€νΈμ 컨ν μ΄λ κ°μ ν¬νΈ λ§€νμ μ€μ ν©λλ€. μΈλΆμ μλΉμ€λ₯Ό λ ΈμΆν λ νμμ λλ€.--name <컨ν μ΄λμ΄λ¦>
: 컨ν μ΄λμ μμ보기 μ¬μ΄ μ΄λ¦μ λΆμ¬ν©λλ€. μ΄λ¦μ μ§μ νμ§ μμΌλ©΄ Dockerκ° μμμ μ΄λ¦μ μμ±ν©λλ€.--rm
: 컨ν μ΄λ μ’ λ£ μ μλμΌλ‘ 컨ν μ΄λλ₯Ό μμ ν©λλ€. μΌνμ± ν μ€νΈ μ©λμ μ ν©ν©λλ€.-it
(or--interactive --tty
): 컨ν μ΄λμ μνΈμμ© κ°λ₯ν ν°λ―Έλμ μ°κ²°ν©λλ€. λ³΄ν΅ μ»¨ν μ΄λ λ΄λΆλ‘ μ§μ νκ±°λ, νΉμ λͺ λ Ήμ΄λ₯Ό μ€νν λ μ¬μ©ν©λλ€.-v <νΈμ€νΈκ²½λ‘>:<컨ν μ΄λκ²½λ‘>
(or--volume
): νΈμ€νΈμ λλ ν 리λ λ³Όλ₯¨μ 컨ν μ΄λμ λ§μ΄νΈν©λλ€. λ°μ΄ν° μ§μμ±μ μν΄ νμμ λλ€.-e <νκ²½λ³μλͺ >=<κ°>
(or--env
): 컨ν μ΄λ λ΄λΆμ νκ²½ λ³μλ₯Ό μ€μ ν©λλ€. λ°μ΄ν°λ² μ΄μ€ λΉλ°λ²νΈ λ± λ―Όκ° μ 보λ₯Ό μ€μ ν λ μ μ©ν©λλ€.
-
μμ:
- Nginx μΉ μλ²λ₯Ό λ°±κ·ΈλΌμ΄λμμ μ€ννκ³ 80λ² ν¬νΈλ₯Ό νΈμ€νΈμ 8080λ² ν¬νΈμ μ°κ²°νλ©°, μ΄λ¦μ
my-nginx
λ‘ μ§μ :docker run -d -p 8080:80 --name my-nginx nginx:latest
β‘οΈ μ΄μ μΉ λΈλΌμ°μ μμ
http://localhost:8080
μΌλ‘ μ μνλ©΄ Nginx κΈ°λ³Έ νμ΄μ§λ₯Ό λ³Ό μ μμ΄μ! π - MySQL λ°μ΄ν°λ² μ΄μ€ 컨ν
μ΄λλ₯Ό μ€ννλ©° root λΉλ°λ²νΈλ₯Ό μ€μ νκ³ , λ°μ΄ν°λ₯Ό
my-mysql-data
λΌλ λ³Όλ₯¨μ μ μ₯:docker run -d -p 3306:3306 --name my-mysql \ -e MYSQL_ROOT_PASSWORD=mysecretpassword \ -v my-mysql-data:/var/lib/mysql \ mysql:8.0
β‘οΈ λ°μ΄ν°λ² μ΄μ€ 컨ν μ΄λ μ€ν μ νκ²½ λ³μ μ€μ κ³Ό λ³Όλ₯¨ λ§μ΄νΈκ° νμμ μ λλ€! π
- Ubuntu 컨ν
μ΄λλ₯Ό λννμΌλ‘ μ€ννκ³ λ°λ‘ bash μ
Έλ‘ μ§μ
:
docker run -it ubuntu:latest bash
β‘οΈ μ»¨ν μ΄λ λ΄λΆμμ μμ λ‘κ² λͺ λ Ήμ΄(ls, pwd λ±)λ₯Ό μ€νν΄ λ³Ό μ μμ΅λλ€.
exit
λ‘ λΉ μ Έλμ¬ μ μμ΄μ. π»
- Nginx μΉ μλ²λ₯Ό λ°±κ·ΈλΌμ΄λμμ μ€ννκ³ 80λ² ν¬νΈλ₯Ό νΈμ€νΈμ 8080λ² ν¬νΈμ μ°κ²°νλ©°, μ΄λ¦μ
-
-
docker ps
: νμ¬ μ€ν μ€μΈ 컨ν μ΄λ λͺ©λ‘μ 보μ¬μ€λλ€.docker ps [μ΅μ ]
-
ν΅μ¬ μ΅μ :
-a
(or--all
): μ€ν μ€μ΄κ±°λ μ€μ§λ λͺ¨λ 컨ν μ΄λλ₯Ό 보μ¬μ€λλ€.-q
(or--quiet
): 컨ν μ΄λ IDλ§ λ³΄μ¬μ€λλ€. λ€λ₯Έ λͺ λ Ήμ΄μ μ‘°ν©ν λ μ μ©ν©λλ€.
-
μμ:
- μ€ν μ€μΈ 컨ν
μ΄λ 보기:
docker ps
- λͺ¨λ 컨ν
μ΄λ (μ€ν μ€ + μ€μ§λ¨) 보기:
docker ps -a
- λͺ¨λ 컨ν
μ΄λμ IDλ§ λ³΄κΈ°:
docker ps -aq
β‘οΈ μ΄ IDλ€μ
docker stop
,docker rm
λ± λ€λ₯Έ λͺ λ Ήμ΄μ ν¨κ» μ¬μ©λ λ κ°λ ₯ν©λλ€! πͺ
- μ€ν μ€μΈ 컨ν
μ΄λ 보기:
-
-
docker start <컨ν μ΄λID λλ μ΄λ¦>
: μ€μ§λ 컨ν μ΄λλ₯Ό λ€μ μμν©λλ€.- μμ:
docker start my-nginx
- μμ:
-
docker stop <컨ν μ΄λID λλ μ΄λ¦>
: μ€ν μ€μΈ 컨ν μ΄λλ₯Ό μ μμ μΌλ‘ μ€μ§ν©λλ€.- μμ:
docker stop my-nginx
- μμ:
-
docker restart <컨ν μ΄λID λλ μ΄λ¦>
: μ€ν μ€μΈ 컨ν μ΄λλ₯Ό μ€μ§νλ€κ° λ€μ μμν©λλ€.- μμ:
docker restart my-nginx
- μμ:
-
docker rm <컨ν μ΄λID λλ μ΄λ¦>
: μ€μ§λ 컨ν μ΄λλ₯Ό μμ ν©λλ€.-
ν΅μ¬ μ΅μ :
-f
(or--force
): μ€ν μ€μΈ 컨ν μ΄λλ κ°μ λ‘ μμ ν©λλ€. (μ£Όμν΄μ μ¬μ©νμΈμ!)
-
μμ:
my-nginx
컨ν μ΄λ μμ :docker rm my-nginx
- λͺ¨λ μ€μ§λ 컨ν
μ΄λ μμ (κΏν!):
docker rm $(docker ps -aq --filter "status=exited")
β‘οΈ μ΄ λͺ λ Ήμ΄λ
exited
μνμ λͺ¨λ 컨ν μ΄λ IDλ₯Ό μ°Ύμ νλ²μ μμ ν΄ μ€λλ€. ποΈ
-
II. μ΄λ―Έμ§ κ΄λ¦¬ πΌοΈ
컨ν μ΄λμ κΈ°λ°μ΄ λλ μ΄λ―Έμ§λ₯Ό λ€μ΄λ‘λνκ³ , λΉλνκ³ , κ΄λ¦¬νλ λͺ λ Ήμ΄λ€μ λλ€.
-
docker pull <μ΄λ―Έμ§ μ΄λ¦>[:νκ·Έ]
: Docker Hub λ± λ μ§μ€νΈλ¦¬μμ μ΄λ―Έμ§λ₯Ό λ€μ΄λ‘λν©λλ€.- μμ:
docker pull ubuntu:22.04 docker pull nginx
β‘οΈ
:latest
νκ·Έλ κΈ°λ³Έκ°μ΄λΌ μλ΅ κ°λ₯ν©λλ€. β¬οΈ
- μμ:
-
docker build -t <μ΄λ―Έμ§μ΄λ¦>[:νκ·Έ] <Dockerfile κ²½λ‘>
:Dockerfile
μ μ΄μ©ν΄ μ¬μ©μ μ μ μ΄λ―Έμ§λ₯Ό λΉλν©λλ€.-
ν΅μ¬ μ΅μ :
-t <μ΄λ―Έμ§μ΄λ¦>[:νκ·Έ>
(or--tag
): λΉλλ μ΄λ―Έμ§μ μ΄λ¦κ³Ό νκ·Έλ₯Ό λΆμ¬ν©λλ€..
: Dockerfileμ΄ νμ¬ λλ ν 리μ μμ λ μ¬μ©ν©λλ€. (Context path)
-
μμ (Dockerfile μμμ ν¨κ»):
Dockerfile
λ΄μ©:# Dockerfile FROM alpine:latest RUN apk add --no-cache curl CMD ["curl", "https://www.google.com"]
- μ΄λ―Έμ§ λΉλ:
docker build -t my-curl-app:1.0 .
β‘οΈ μ΄ λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄
my-curl-app:1.0
μ΄λΌλ μ΄λ―Έμ§κ° μμ±λ©λλ€. μ΄μ μ΄ μ΄λ―Έμ§λ‘ 컨ν μ΄λλ₯Ό μ€νν μ μμ΄μ! π οΈ
-
-
docker images
: λ‘컬μ μ μ₯λ μ΄λ―Έμ§ λͺ©λ‘μ 보μ¬μ€λλ€.-
ν΅μ¬ μ΅μ :
-a
(or--all
): λΉλ μ€κ°μ μμ±λ λ μ΄μ΄ μ΄λ―Έμ§κΉμ§ λͺ¨λ 보μ¬μ€λλ€.
-
μμ:
docker images
-
-
docker rmi <μ΄λ―Έμ§ID λλ μ΄λ¦>[:νκ·Έ]
: λ‘컬μ μ μ₯λ μ΄λ―Έμ§λ₯Ό μμ ν©λλ€.-
ν΅μ¬ μ΅μ :
-f
(or--force
): ν΄λΉ μ΄λ―Έμ§λ₯Ό μ¬μ©νλ 컨ν μ΄λκ° μμ΄λ κ°μ λ‘ μμ ν©λλ€. (μ£Όμ)
-
μμ:
docker rmi my-curl-app:1.0
β‘οΈ μ¬μ© μ€μΈ μ΄λ―Έμ§λ μμ ν μ μμ΅λλ€. κ΄λ ¨ 컨ν μ΄λλ₯Ό λ¨Όμ μμ ν΄μΌ ν©λλ€. β
-
III. 컨ν μ΄λ μ 보 νμΈ λ° μ§μ π
μ€ν μ€μΈ 컨ν μ΄λμ λ‘κ·Έλ₯Ό νμΈνκ±°λ, 컨ν μ΄λ λ΄λΆλ‘ μ§μ νμ¬ λλ²κΉ νλ λ° μ μ©ν λͺ λ Ήμ΄λ€μ λλ€.
-
docker logs <컨ν μ΄λID λλ μ΄λ¦>
: 컨ν μ΄λμ νμ€ μΆλ ₯(STDOUT) λ° νμ€ μλ¬(STDERR) λ‘κ·Έλ₯Ό νμΈν©λλ€. λλ²κΉ μ νμμ μ λλ€. π-
ν΅μ¬ μ΅μ :
-f
(or--follow
): μ€μκ°μΌλ‘ λ‘κ·Έλ₯Ό κ³μν΄μ 보μ¬μ€λλ€. (Ctrl+Cλ‘ μ’ λ£)--tail <μ«μ>
: λ‘κ·Έμ λ§μ§λ§μ«μ
μ€λ§ 보μ¬μ€λλ€.-t
(or--timestamps
): λ‘κ·Έμ νμμ€ν¬νλ₯Ό μΆκ°ν©λλ€.
-
μμ:
docker logs my-nginx docker logs -f my-nginx docker logs --tail 100 my-nginx
-
-
docker exec -it <컨ν μ΄λID λλ μ΄λ¦> <λͺ λ Ήμ΄>
: μ€ν μ€μΈ 컨ν μ΄λ λ΄λΆμμ λͺ λ Ήμ΄λ₯Ό μ€νν©λλ€. 컨ν μ΄λ λ΄λΆ μ Έλ‘ μ§μ ν λ μ£Όλ‘ μ¬μ©ν©λλ€. π»-
ν΅μ¬ μ΅μ :
-it
: μνΈμμ© κ°λ₯ν ν°λ―Έλ μ°κ²° (νμ!)
-
μμ:
my-nginx
컨ν μ΄λ λ΄λΆμμls -l /etc/nginx
λͺ λ Ήμ΄ μ€ν:docker exec -it my-nginx ls -l /etc/nginx
my-nginx
컨ν μ΄λμ bash μ Έλ‘ μ§μ :docker exec -it my-nginx bash
β‘οΈ μ»¨ν μ΄λ λ΄λΆμ
bash
μ Έμ΄ μμΌλ©΄sh
λλ λ€λ₯Έ μ Έμ μλν΄ λ³΄μΈμ. (docker exec -it my-nginx sh
)
-
-
docker inspect <컨ν μ΄λID λλ μ΄λ¦>
/docker inspect <μ΄λ―Έμ§ID λλ μ΄λ¦>
: 컨ν μ΄λλ μ΄λ―Έμ§μ μμΈ μ 보λ₯Ό JSON νμμΌλ‘ μΆλ ₯ν©λλ€. λ€νΈμν¬ μ€μ , λ³Όλ₯¨ λ§μ΄νΈ, νκ²½ λ³μ λ± λͺ¨λ μ 보λ₯Ό νμΈν μ μμ΅λλ€. π¬-
ν΅μ¬ μ΅μ :
--format "{{.NetworkSettings.IPAddress}}"
: νΉμ νλλ§ μΆμΆνμ¬ λ³΄κΈ° μ½κ² ν¬λ§·ν ν©λλ€.
-
μμ:
my-nginx
컨ν μ΄λμ λͺ¨λ μ 보 νμΈ:docker inspect my-nginx
my-nginx
컨ν μ΄λμ IP μ£Όμλ§ νμΈ:docker inspect --format '{{.NetworkSettings.IPAddress}}' my-nginx
-
-
docker stats <컨ν μ΄λID λλ μ΄λ¦>
: μ€ν μ€μΈ 컨ν μ΄λμ CPU, λ©λͺ¨λ¦¬, λ€νΈμν¬ μ¬μ©λ λ±μ μ€μκ°μΌλ‘ λͺ¨λν°λ§ν©λλ€. π- μμ:
docker stats docker stats my-nginx
- μμ:
IV. λ³Όλ₯¨ κ΄λ¦¬ πΎ
컨ν μ΄λμ λ°μ΄ν°λ₯Ό μꡬμ μΌλ‘ μ μ₯νκ³ κ΄λ¦¬νλ λͺ λ Ήμ΄λ€μ λλ€.
-
docker volume create <λ³Όλ₯¨μ΄λ¦>
: μλ‘μ΄ λ³Όλ₯¨μ μμ±ν©λλ€.- μμ:
docker volume create my-app-data
- μμ:
-
docker volume ls
: μμ±λ λ³Όλ₯¨ λͺ©λ‘μ 보μ¬μ€λλ€.- μμ:
docker volume ls
- μμ:
-
docker volume inspect <λ³Όλ₯¨μ΄λ¦>
: νΉμ λ³Όλ₯¨μ μμΈ μ 보λ₯Ό νμΈν©λλ€. μ€μ μ μ₯ κ²½λ‘ λ±μ μ μ μμ΅λλ€.- μμ:
docker volume inspect my-app-data
- μμ:
-
docker volume rm <λ³Όλ₯¨μ΄λ¦>
: λ³Όλ₯¨μ μμ ν©λλ€. λ³Όλ₯¨ λ΄μ λͺ¨λ λ°μ΄ν°κ° μμ λλ―λ‘ μ£ΌμνμΈμ. β οΈ- μμ:
docker volume rm my-app-data
β‘οΈ μ¬μ© μ€μΈ λ³Όλ₯¨μ μμ ν μ μμ΅λλ€. λ¨Όμ ν΄λΉ λ³Όλ₯¨μ μ¬μ©νλ 컨ν μ΄λλ₯Ό μμ ν΄μΌ ν©λλ€.
- μμ:
V. λ€νΈμν¬ κ΄λ¦¬ π
컨ν μ΄λ κ°μ ν΅μ , λλ 컨ν μ΄λμ μΈλΆμ ν΅μ λ°©μμ κ΄λ¦¬νλ λͺ λ Ήμ΄λ€μ λλ€.
-
docker network create <λ€νΈμν¬μ΄λ¦>
: μ¬μ©μ μ μ λ€νΈμν¬λ₯Ό μμ±ν©λλ€. κ°μ λ€νΈμν¬μ μλ 컨ν μ΄λλ€μ 컨ν μ΄λ μ΄λ¦μΌλ‘ μλ‘ ν΅μ ν μ μμ΅λλ€. π€-
κΈ°λ³Έ λλΌμ΄λ²:
bridge
(κ°μ₯ μΌλ°μ ),host
,none
λ±μ΄ μμ΅λλ€. -
μμ:
docker network create my-custom-network
- 컨ν
μ΄λ μ€ν μ λ€νΈμν¬ μ§μ :
docker run -d --name web --network my-custom-network nginx docker run -d --name db --network my-custom-network mysql
β‘οΈ μ΄μ
web
컨ν μ΄λμμdb
λΌλ μ΄λ¦μΌλ‘ MySQL 컨ν μ΄λμ μ κ·Όν μ μμ΅λλ€.
- 컨ν
μ΄λ μ€ν μ λ€νΈμν¬ μ§μ :
-
-
docker network ls
: νμ¬ μμ€ν μ μ‘΄μ¬νλ λ€νΈμν¬ λͺ©λ‘μ 보μ¬μ€λλ€.- μμ:
docker network ls
- μμ:
-
docker network inspect <λ€νΈμν¬μ΄λ¦>
: νΉμ λ€νΈμν¬μ μμΈ μ 보λ₯Ό νμΈν©λλ€. μ°κ²°λ 컨ν μ΄λ λͺ©λ‘ λ±μ λ³Ό μ μμ΅λλ€.- μμ:
docker network inspect my-custom-network
- μμ:
-
docker network rm <λ€νΈμν¬μ΄λ¦>
: λ€νΈμν¬λ₯Ό μμ ν©λλ€.- μμ:
docker network rm my-custom-network
- μμ:
VI. μμ€ν μ 리 π§Ή
μ€λ«λμ Dockerλ₯Ό μ¬μ©νλ€ λ³΄λ©΄ λΆνμν μ΄λ―Έμ§, 컨ν μ΄λ, λ³Όλ₯¨ λ±μ΄ μμ¬ λμ€ν¬ 곡κ°μ μ°¨μ§νκ² λ©λλ€. μ΄λ€μ ν¨μ¨μ μΌλ‘ μ 리νλ λͺ λ Ήμ΄μ λλ€.
-
docker system prune
: μ¬μ©λμ§ μλ(dangling) 컨ν μ΄λ, μ΄λ―Έμ§, λ€νΈμν¬ λ±μ ν λ²μ μμ νμ¬ λμ€ν¬ 곡κ°μ ν보ν©λλ€. β»οΈ-
ν΅μ¬ μ΅μ :
-a
(or--all
): μ¬μ©λμ§ μλ λͺ¨λ μ΄λ―Έμ§ (danglingμ΄ μλ μ΄λ―Έμ§ ν¬ν¨)λ₯Ό μμ ν©λλ€.--volumes
: μ¬μ©λμ§ μλ λ³Όλ₯¨κΉμ§ ν¨κ» μμ ν©λλ€. (μ΄ μ΅μ μ λ°μ΄ν°λ₯Ό μμ νλ―λ‘ μ μ€νκ² μ¬μ©ν΄μΌ ν©λλ€!)
-
μμ:
- κΈ°λ³Έ μ 리 (dangling 컨ν
μ΄λ, μ΄λ―Έμ§, λ€νΈμν¬):
docker system prune
- λ³Όλ₯¨κΉμ§ ν¬ν¨νμ¬ μ 체 μ 리:
docker system prune --volumes
β‘οΈ μ£ΌκΈ°μ μΌλ‘ μ€ννμ¬ λΆνμν μμμ μ 리νλ κ²μ΄ μ’μ΅λλ€. β¨
- κΈ°λ³Έ μ 리 (dangling 컨ν
μ΄λ, μ΄λ―Έμ§, λ€νΈμν¬):
-
VII. Docker Compose (μ€λ¬΄μ κ½) π
λ¨μΌ 컨ν
μ΄λκ° μλ μ¬λ¬ 컨ν
μ΄λλ‘ κ΅¬μ±λ μ ν리μΌμ΄μ
(μ: μΉ μλ² + λ°μ΄ν°λ² μ΄μ€ + Redis)μ κ΄λ¦¬ν λ docker-compose.yml
νμΌμ ν΅ν΄ ν λ²μ μ μνκ³ μ€νν μ μλλ‘ λλ λꡬμ
λλ€. μ€λ¬΄μμ λλΆλΆμ λ³΅ν© μ ν리μΌμ΄μ
μ Composeλ₯Ό μ¬μ©νμ¬ κ΄λ¦¬λ©λλ€.
-
docker-compose up
:docker-compose.yml
νμΌμ μ μλ μλΉμ€λ€μ λΉλνκ³ μ€νν©λλ€.-
ν΅μ¬ μ΅μ :
-d
: λ°±κ·ΈλΌμ΄λμμ μ€νν©λλ€.--build
: μ΄λ―Έμ§ λ³κ²½ μ¬νμ΄ μμ κ²½μ° λ€μ λΉλν©λλ€.
-
μμ:
-
docker-compose.yml
μμ:# docker-compose.yml version: '3.8' services: web: image: nginx:latest ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: mysecretpassword volumes: - db_data:/var/lib/mysql volumes: db_data:
docker-compose.yml
νμΌμ΄ μλ λλ ν 리μμ μ€ν:docker-compose up -d
β‘οΈ ν λ²μ λͺ λ Ήμ΄λ‘ μΉ μλ²μ λ°μ΄ν°λ² μ΄μ€ 컨ν μ΄λκ° λμμ μ€νλ©λλ€! π
-
-
-
docker-compose down
:docker-compose.yml
νμΌμ μ μλ μλΉμ€λ€μ μ€μ§νκ³ μμ ν©λλ€. μ°κ²°λ λ€νΈμν¬λ ν¨κ» μμ λ©λλ€.-
ν΅μ¬ μ΅μ :
--volumes
: μλΉμ€μ κ΄λ ¨λ λ³Όλ₯¨κΉμ§ ν¨κ» μμ ν©λλ€. (λ°μ΄ν° μμ μ μ£Όμ!)
-
μμ:
docker-compose down
docker-compose down --volumes # λ³Όλ₯¨κΉμ§ μμ
-
-
docker-compose ps
:docker-compose.yml
νμΌμ μ μλ μλΉμ€λ€μ μνλ₯Ό νμΈν©λλ€.- μμ:
docker-compose ps
- μμ:
β¨ ν΅μ¬ μ΅μ νλμ 보기 (μμ½)
μμμ μ€λͺ λ μ£Όμ μ΅μ λ€μ λ€μ νλ² λΉ λ₯΄κ² μμ½ν΄ λ³ΌκΉμ?
-d
,--detach
: λ°±κ·ΈλΌμ΄λ μ€ν (컨ν μ΄λ)-p
,--publish
: ν¬νΈ λ§€ν (νΈμ€νΈ:컨ν μ΄λ)-v
,--volume
: λ³Όλ₯¨/λλ ν 리 λ§μ΄νΈ (νΈμ€νΈκ²½λ‘:컨ν μ΄λκ²½λ‘)--name
: 컨ν μ΄λ μ΄λ¦ μ§μ --rm
: 컨ν μ΄λ μ’ λ£ μ μλ μμ -it
,--interactive --tty
: μνΈμμ© κ°λ₯ν ν°λ―Έλ μ°κ²°-e
,--env
: νκ²½ λ³μ μ€μ --network
: 컨ν μ΄λκ° μ¬μ©ν λ€νΈμν¬ μ§μ -f
,--force
: κ°μ μ€ν/μμ
π‘ μ€λ¬΄μμ μ μ©ν ν & λ Ένμ°
μ¬κΈ°μ λͺ κ°μ§ μ€λ¬΄ νμ μΆκ°ν©λλ€.
-
λ³μΉ (Alias) μ€μ : μμ£Ό μ°λ λͺ λ Ήμ΄λ
.bashrc
λ.zshrc
νμΌμ λ³μΉμΌλ‘ λ±λ‘ν΄λλ©΄ νΈλ¦¬ν©λλ€.# ~/.bashrc λλ ~/.zshrc μ μΆκ° alias dps='docker ps -a' alias dlog='docker logs -f' alias drma='docker rm $(docker ps -aq)' # λͺ¨λ 컨ν μ΄λ μμ alias dprune='docker system prune -f --volumes' # κ°λ ₯ν μ 리
β‘οΈ ν°λ―Έλμ λ€μ μμνκ±°λ
source ~/.bashrc
λ±μΌλ‘ μ μ©νλ©΄dps
μ²λΌ μ§§κ² μ¬μ©ν μ μμ΄μ! -
λͺ¨λ 컨ν μ΄λ ν λ²μ μ€μ§/μμ :
docker stop $(docker ps -aq) # λͺ¨λ 컨ν μ΄λ μ€μ§ docker rm $(docker ps -aq) # λͺ¨λ 컨ν μ΄λ μμ (μ€μ§λ μνμ¬μΌ ν¨)
β‘οΈ κ°λ ₯νμ§λ§ μ€μνλ©΄ μ λλ μ£Όμ! π¨
-
λ‘κ·Έ νμΈμ μ€μμ±: 컨ν μ΄λκ° μ λλ‘ λμνμ§ μμ λλ νμ
docker logs <컨ν μ΄λμ΄λ¦>
μΌλ‘ λ‘κ·Έλ₯Ό λ¨Όμ νμΈνμΈμ. λλΆλΆμ λ¬Έμ λ λ‘κ·Έμ λ¨μκ° μμ΅λλ€. -
docker inspect
νμ©: 컨ν μ΄λμ λ€νΈμν¬ μ€μ , λ§μ΄νΈλ λ³Όλ₯¨ κ²½λ‘ λ± μμΈ μ 보λ₯Ό μκ³ μΆμ λdocker inspect
λ λ§€μ° κ°λ ₯ν λꡬμ λλ€. νΉμ νλλ§ λ½μλ΄λ--format
μ΅μ μ μ νμ©νμΈμ. -
.dockerignore
νμΌ:Dockerfile
μ λΉλν λ 컨ν μ΄λμ λΆνμν νμΌ(μ:.git
,node_modules
,*.log
)λ€μ΄ ν¬ν¨λμ§ μλλ‘.dockerignore
νμΌμ νλ‘μ νΈ λ£¨νΈμ μμ±νμ¬ κ΄λ¦¬νλ κ²μ΄ μ’μ΅λλ€. μ΄λ―Έμ§ ν¬κΈ°λ₯Ό μ€μ΄κ³ λΉλ μλλ₯Ό λμΌ μ μμ΅λλ€. -
Multi-stage builds: νλ‘λμ μ΄λ―Έμ§λ₯Ό λ μκ³ μμ νκ² λ§λ€κ³ μΆλ€λ©΄
Dockerfile
μμ λ©ν° μ€ν μ΄μ§ λΉλ(multi-stage builds)λ₯Ό μ¬μ©νλ κ²μ κ³ λ €ν΄λ³΄μΈμ. λΉλμ νμν λꡬλ€μ μ΅μ’ μ΄λ―Έμ§μ ν¬ν¨μν€μ§ μμ μ΄λ―Έμ§ ν¬κΈ°λ₯Ό λν μ€μΌ μ μμ΅λλ€.
π₯³ λ§λ¬΄λ¦¬νλ©°
μ΄ μΉνΈμνΈκ° μ¬λ¬λΆμ Docker νμ©μ ν° λμμ΄ λκΈ°λ₯Ό λ°λλλ€! Dockerλ μ²μμλ μ΄λ ΅κ² λκ»΄μ§ μ μμ§λ§, λͺ κ°μ§ ν΅μ¬ λͺ λ Ήμ΄μ κ°λ λ§ μ μ΅νλλ©΄ κ°λ° λ° λ°°ν¬ μν¬νλ‘μ°λ₯Ό νμ μ μΌλ‘ κ°μ ν μ μμ΅λλ€.
μμ£Ό μ¬μ©ν΄λ³΄λ©΄μ μμ μ΅νλ κ²μ΄ κ°μ₯ μ€μν©λλ€. μ΄ κΈμ μ¦κ²¨μ°ΎκΈ°μ μΆκ°ν΄λκ³ νμν λλ§λ€ κΊΌλ΄ λ³΄μΈμ. κΎΈμ€ν μ°μ΅νλ€ λ³΄λ©΄ μ΄λμ Dockerμ λ§λ²μ νΉ λΉ μ Έλ€κ² λ κ±°μμ! π
κΆκΈν μ μ΄λ μΆκ°νκ³ μΆμ λ΄μ©μ΄ μλ€λ©΄ μΈμ λ μ§ λκΈλ‘ λ¨κ²¨μ£ΌμΈμ! Happy Dockering! π³π