# Docker ์
๋ฌธ ๊ฐ์ด๋
## ํ์ต ๋ชฉํ
Docker๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ปจํ
์ด๋ํํ๊ณ ๋ฐฐํฌํฉ๋๋ค.
## 1. Docker๋?
์ปจํ
์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ ํ๋ซํผ์
๋๋ค.
- ํ๊ฒฝ ์ผ๊ด์ฑ ๋ณด์ฅ
- ๋น ๋ฅธ ๋ฐฐํฌ
- ๋ฆฌ์์ค ํจ์จ์
- ๋ง์ดํฌ๋ก์๋น์ค์ ์ ํฉ
## 2. ์ค์น
Ubuntu:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
ํ์ธ:
docker --version
docker run hello-world
## 3. ๊ธฐ๋ณธ ๋ช
๋ น์ด
์ด๋ฏธ์ง:
docker pull nginx
docker images
docker rmi nginx
์ปจํ
์ด๋:
docker run -d -p 8080:80 nginx
docker ps
docker ps -a
docker stop container_id
docker start container_id
docker rm container_id
๋ก๊ทธ ๋ฐ ์ ์:
docker logs container_id
docker logs -f container_id
docker exec -it container_id sh
docker exec -it container_id bash
## 4. ์ปจํ
์ด๋ ์คํ ์ต์
docker run -d nginx # ๋ฐฑ๊ทธ๋ผ์ด๋
docker run -p 8080:80 nginx # ํฌํธ ๋งคํ
docker run --name myapp nginx # ์ด๋ฆ ์ง์
docker run -e DB_HOST=localhost nginx # ํ๊ฒฝ๋ณ์
docker run -v /host:/container nginx # ๋ณผ๋ฅจ ๋ง์ดํธ
docker run --rm nginx # ์ข
๋ฃ ์ ์ญ์
docker run --restart always nginx # ์๋ ์ฌ์์
## 5. Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
๋น๋:
docker build -t myapp:1.0 .
docker build -t myapp:1.0 -f Dockerfile.prod .
## 6. ๋ฉํฐ์คํ
์ด์ง ๋น๋
FROM node:20 AS builder
WORKDIR /app
COPY . .
RUN npm install && npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
## 7. Docker Compose
docker-compose.yml:
version: "3.8"
services:
web:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
depends_on:
- db
db:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=myapp
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
๋ช
๋ น์ด:
docker-compose up -d
docker-compose down
docker-compose logs -f
docker-compose ps
docker-compose exec web sh
## 8. ๋ณผ๋ฅจ
์์ฑ:
docker volume create mydata
docker volume ls
docker volume inspect mydata
docker volume rm mydata
์ฌ์ฉ:
docker run -v mydata:/data nginx
docker run -v /host/path:/container/path nginx
docker run -v $(pwd):/app nginx
## 9. ๋คํธ์ํฌ
์์ฑ:
docker network create mynet
docker network ls
์ฐ๊ฒฐ:
docker run --network mynet --name web nginx
docker run --network mynet --name db mysql
์ปจํ
์ด๋ ๊ฐ ํต์ :
web ์ปจํ
์ด๋์์ db:3306์ผ๋ก ์ ์ ๊ฐ๋ฅ
## 10. Docker Hub
๋ก๊ทธ์ธ:
docker login
ํธ์:
docker tag myapp:1.0 username/myapp:1.0
docker push username/myapp:1.0
ํ:
docker pull username/myapp:1.0
## 11. ์ ๋ฆฌ ๋ช
๋ น์ด
docker system prune # ๋ฏธ์ฌ์ฉ ๋ฆฌ์์ค ์ญ์
docker system prune -a # ๋ชจ๋ ๋ฏธ์ฌ์ฉ ์ญ์
docker container prune # ์ค์ง๋ ์ปจํ
์ด๋ ์ญ์
docker image prune # ๋ฏธ์ฌ์ฉ ์ด๋ฏธ์ง ์ญ์
docker volume prune # ๋ฏธ์ฌ์ฉ ๋ณผ๋ฅจ ์ญ์
## 12. ์ ์ฉํ ํ
.dockerignore:
node_modules
.git
.env
*.log
์ปจํ
์ด๋ ๋ฆฌ์์ค ์ ํ:
docker run --memory=512m --cpus=1 myapp
ํฌ์ค์ฒดํฌ:
HEALTHCHECK --interval=30s CMD curl -f http://localhost/ || exit 1
## ์ถ์ฒ ํ์ต ์์
1. ๊ธฐ๋ณธ ๋ช
๋ น์ด ์ตํ๊ธฐ
2. Dockerfile ์์ฑ
3. Docker Compose ํ์ฉ
4. ๋ณผ๋ฅจ๊ณผ ๋คํธ์ํฌ
5. ํ๋ก๋์
์ต์ ํ