
Docker๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ๊ฐ์ํ ๊ธฐ์ ์ ์ ๊ณตํ๋ ํ๋ซํผ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ณ ์ผ๊ด๋๊ฒ ๋ฐฐํฌํ ์ ์๋๋ก ๋์์ค๋๋ค.
docker pull์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ docker push๋ก ์
๋ก๋ ๊ฐ๋ฅdocker build ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑ| ํญ๋ชฉ | Docker (์ปจํ ์ด๋) | Virtual Machine (VM) |
|---|---|---|
| ์๋ | ๋น ๋ฆ | ๋๋ฆผ |
| ๊ฒฝ๋์ฑ | ๊ฐ๋ณ๊ณ ํจ์จ์ | ๋ฌด๊ฒ๊ณ ๋ง์ ๋ฆฌ์์ค ์ฌ์ฉ |
| OS ์ข ์์ฑ | ํธ์คํธ OS ๊ณต์ | ๋ณ๋์ OS ํ์ |
| ๋ฐฐํฌ ๋ฐ ํ์ฅ | ๋น ๋ฅด๊ณ ์ฉ์ด | ๋๋ฆฌ๊ณ ๋ณต์ก |
| ๊ฒฉ๋ฆฌ ์์ค | ํ๋ก์ธ์ค ์์ค ๊ฒฉ๋ฆฌ | ์์ ํ OS ์์ค ๊ฒฉ๋ฆฌ |
# ๋์ปค ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ธ
docker images
# ๋์ปค ์ด๋ฏธ์ง ๋ค์ด๋ก๋ (์: nginx ์ต์ ๋ฒ์ )
docker pull nginx
# ๋์ปค ์ด๋ฏธ์ง ์ญ์
docker rmi ์ด๋ฏธ์งID
# ์ปจํ
์ด๋ ์คํ (์: nginx ์ปจํ
์ด๋ ์คํ)
docker run -d --name my-nginx -p 8080:80 nginx
# ์คํ ์ค์ธ ์ปจํ
์ด๋ ๋ชฉ๋ก ์กฐํ
docker ps
# ๋ชจ๋ ์ปจํ
์ด๋ ๋ชฉ๋ก ์กฐํ (์ค์ง๋ ์ปจํ
์ด๋ ํฌํจ)
docker ps -a
# ์ปจํ
์ด๋ ์ค์ง
docker stop ์ปจํ
์ด๋ID
# ์ปจํ
์ด๋ ์ญ์
docker rm ์ปจํ
์ด๋ID
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ Dockerfile์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง ๋น๋
docker build -t my-app .
# ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋ ์คํ
docker run -d --name my-container -p 3000:3000 my-app
docker-compose.yml ํ์ผ์ ํตํด ์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ์ ์ํ๊ณ ์คํ ๊ฐ๋ฅversion: '3.8'
services:
app:
build: .
container_name: spring-app
restart: always
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/mydb?serverTimezone=UTC&characterEncoding=UTF-8
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
depends_on:
- db
db:
image: mysql:8
container_name: mysql-db
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
# ๋ชจ๋ ์ปจํ
์ด๋ ์คํ
docker-compose up -d
# ๋ชจ๋ ์ปจํ
์ด๋ ์ข
๋ฃ ๋ฐ ์ญ์
docker-compose down