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
Tải Docker Desktop cho Mac và làm tương tự như Windows.
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
Khởi tạo container nếu chưa có:
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:
Hoặc start một container đã tạo trước đó
docker start -ai mycontainer
Xem container đang chạy:
Vào container đang chạy:
Hoặc vào chạy docker ignite-apk với thư mục app với name=ignite-run
Xóa image:
docker psXem tất cả container (kể cả đã dừng):
docker ps -aDừng container:
docker stop mycontainerXóa container:
docker rm mycontainer
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
Hoặc chạy docker và thực thi 1 lệnh:
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"
Hoặc chạy với quyền sudo xóa container cũ khởi tạo mới
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
Build image ignite-apk từ Dockerfile:
docker build -t ignite-apk .
docker rmi ignite-apk
Tạo volume:
Gắn volume vào container:
Chạy container với network:
Docker Compose
Docker Compose giúp chạy nhiều container cùng lúc theo cấu hình file docker-compose.yml.
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.
Ví dụ file docker-compose.yml:
Các lệnh Compose hay dùng:
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
Ví dụ thực tế: Chạy ứng dụng Node.js
Tạo Dockerfile
Chạy container
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>
Copy file từ container về host
docker cp <container>:<path> <host_path>
docker commit <container> <new_image_name>
Một số lệnh xử lý nhanh
Lệnh tìm 1 docker dừng và xóa các container đang sử dụng ignite-apk
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


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