Header Ads Widget

Docker và triển khai và chạy các ứng dụng trong các container

 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

  1. Tải Docker Desktop: https://www.docker.com/products/docker-desktop

  2. Cài đặt và bật tính năng WSL2 nếu bạn dùng Windows.

  3. Kiểm tra:

docker --version
docker 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.

3 Các khái niệm cơ bản trong Docker

Image: File template chứa ứng dụng và environment. 
Ví dụ: node:18
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

4. Các lệnh Docker hay dùng

Chạy container: 
docker run -it --name mycontainer rn-build

-it : interactive + terminal
--name : đặt tên cho container
rn-build : image sử dụng

Xem container đang chạy:
docker ps
Xem tất cả container (kể cả đã dừng):
docker ps -a
Dừng container:
docker stop mycontainer
Xóa container:
docker rm mycontainer

Vào container đang chạy:
docker exec -it mycontainer bash

Hoặc vào 1 docker rn-build với thư mục app

docker run -it -v $(pwd):/app rn-build /bin/bash

Xem image có sẵn:
docker images

Xóa image:
docker rmi rn-build

Build image từ Dockerfile:
docker build -t myapp:1.0 .
Tạo volume:
docker volume create mydata

Gắn volume vào container:
docker run -v mydata:/data -it ubuntu
Tạ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:
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ả container
docker-compose down # Dừng và xóa container, network 
docker-compose build # Build image 
docker-compose logs # Xem log của các service
Ví dụ thực tế: Chạy ứng dụng Node.js
Tạo Dockerfile
FROM node:18 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "index.js"]

Build image
docker build -t mynodeapp .

Chạy container
docker run -p 3000:3000 mynodeapp
Xem 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>

Tạo image từ container đang chạy
docker commit <container> <new_image_name>

Lệnh tìm 1 docker và xóa các container + image đang sử dụng, ví dụ xóa rn-build
docker ps -a -q --filter ancestor=rn-build | xargs -r docker stop
docker ps -a -q --filter ancestor=rn-build | xargs -r docker rm
docker image rm -f rn-build 2>/dev/null || true

Nhận xét