Docker là một nền tảng giúp bạn tạo, triển khai và chạy các ứng dụng trong các container. Container là một môi trường tách biệt, bao gồm tất cả các thư viện, dependency mà ứng dụng cần, giúp ứng dụng chạy được trên bất kỳ máy nào mà không cần cấu hình lại môi trường
1 . Ưu điểm
-
Không phụ thuộc hệ điều hành.
-
Dễ triển khai, di chuyển và mở rộng.
-
Giúp phát triển, test và deploy đồng nhất.
2. Cài đặt Docker
Windows
-
Tải Docker Desktop: https://www.docker.com/products/docker-desktop
-
Cài đặt và bật tính năng WSL2 nếu bạn dùng Windows.
-
Kiểm tra:
docker --versiondocker compose version
Linux
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version
macOS
Các khái niệm cơ bản trong Docker
- Image: File template chứa ứng dụng và environment.
- Container: Thể hiện của image đang chạy. Bạn có thể tạo nhiều container từ cùng một image
- Dockerfile: File cấu hình để build image
- Volume: Dùng để lưu dữ liệu ngoài container, không bị mất khi container xóa
- Network: Kết nối giữa các container
Một số lệnh cơ bản
1. Container
docker run -it --name mycontainer -p 8081:8081 -v /data/lienvu:/app ignite-apk
- -it : interactive + terminal
- --name : đặt tên cho container
- ignite-apk: image sử dụng
- -p: Map với port host và container
- -v: Mount thư mục bên ngoài máy vào container, /data/lienvu ánh xạ vào trong container tại: /app
Một thư mục trên host:
docker start -ai mycontainer
docker psXem tất cả container (kể cả đã dừng):
docker ps -aDừng container:
docker stop mycontainerXóa container:
docker rm mycontainer
docker compose up -d --build --force-recreate email-service
Vào container đang chạy:
docker exec -it mycontainer bash
Hoặc vào chạy docker ignite-apk với thư mục app với name=ignite-run
docker run -it --name ignite-run -v $(pwd):/app ignite-apk /bin/bash
docker run -it --name ignite-run -p 8081:8081 -v $(pwd):/app ignite-apk /bin/bash -c "cd /path/to/lienvu && WEB_HOST=0.0.0.0 yarn start --dev-client --no-dev --host lan"
sudo docker rm -f ignite-run && sudo docker run -it --name ignite-run -p 8081:8081 -v $(pwd):/app ignite-apk /bin/bash -c "cd /app/salekit_rsync/build/lienvu/ && WEB_HOST=0.0.0.0 yarn start --dev-client --no-dev --host lan"
2. Image
Xem image có sẵn:docker images
docker build -t ignite-apk .
docker rmi ignite-apk
docker volume create mydata
Gắn volume vào container:
docker run -v mydata:/data -it ubuntuTạo network:
docker network create mynetwork
Chạy container với network:
docker run --network=mynetwork -it ubuntu
Docker Compose
Docker Compose giúp chạy nhiều container cùng lúc theo cấu hình file docker-compose.yml.
version: "3" services: web: image: nginx ports: - "8080:80" db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: mypassword
Các lệnh Compose hay dùng:
docker-compose up # Chạy tất cả containerdocker-compose down # Dừng và xóa container, networkdocker-compose build # Build imagedocker-compose logs # Xem log của các service
Tạo Dockerfile
FROM node:18 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "index.js"]
Chạy container
docker run -p 3000:3000 mynodeappXem log container
docker logs <container>
Xem resource usage
docker stats
Xem chi tiết container
docker inspect <container>
docker cp <container>:<path> <host_path>
docker commit <container> <new_image_name>
Một số lệnh xử lý nhanh
docker ps -a -q --filter ancestor=ignite-apk | xargs -r docker stopdocker ps -a -q --filter ancestor=ignite-apk | xargs -r docker rm
Hoặc xóa image ignite-apk
docker image rm -f ignite-apk 2>/dev/null || true
Khởi chạy hoặc xử lý
Tại thư mục chứa docker-compose.yaml, chạy:
docker compose up --build -d
Kiểm tra trạng thái:
docker compose ps
Xem log của email-service và logs-service:
docker compose logs -f email-service logs-service
Chỉ xem log phát sinh mới khi chạy lệnh
docker logs -f --tail=0 email-service
Dừng hệ thống:
docker compose down


Nhận xét
Đăng nhận xét