Cách cài đặt và sử dụng Docker trên Ubuntu cho người mới bắt đầu
Mục lục bài viết
1. Docker là gì? Container vs Máy ảo
Docker là nền tảng đóng gói ứng dụng vào container image chuẩn, chạy được trên mọi hệ thống. Container giống máy ảo nhẹ (MB thay vì GB), khởi động giây thay vì phút.
Container vs Máy ảo (VM):
- VM: Mỗi máy ảo có kernel riêng, tốn GB RAM, khởi động phút.
- Container: Chia sẻ kernel host, chỉ MB, khởi động giây.
Lợi ích Docker:
- Nhất quán: 'Nó chạy trên máy tôi mà' không còn.
- Tái sử dụng: Image có sẵn trên Docker Hub.
- Cô lập: Mỗi container riêng biệt.
- Dễ scale: Chạy hàng trăm container trên một máy.
2. Cài đặt Docker Engine trên Ubuntu
Bước 1: Cập nhật package:
sudo apt update && sudo apt upgrade -y
Bước 2: Cài dependencies:
sudo apt install ca-certificates curl
Bước 3: Thêm Docker repository:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bước 4: Cài Docker:
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io
Bước 5: Thêm user vào group docker để không cần sudo:
sudo usermod -aG docker $USER
Đăng xuất và đăng nhập lại (hoặc chạy newgrp docker).
Bước 6: Kiểm tra:
docker --version
docker run hello-world
3. Các lệnh Docker cơ bản hàng ngày
Quản lý container:
docker run nginxchạy container mới từ image.docker run -d -p 8080:80 --name my-web nginxchạy nền, map port.docker psxem container đang chạy.docker ps -axem tất cả container.docker stop my-webdừng container.docker start my-webkhởi động lại.docker rm my-webxóa container.docker logs my-webxem log.docker exec -it my-web bashvào shell trong container.
Quản lý image:
docker imagesxem image đã tải.docker pull ubuntu:22.04tải image.docker rmi my-imagexóa image.docker build -t my-app:latest .build image từ Dockerfile.
4. Dockerfile và Docker Compose cơ bản
Dockerfile mẫu cho ứng dụng Node.js:
FROM node:20-alphine (base image nhẹ)
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Build: docker build -t my-node-app .
Docker Compose cho ứng dụng nhiều container (ví dụ web + database):
Tạo docker-compose.yml:
```
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
- DB_HOST=db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
```
Chạy: docker-compose up -d
docker-compose up thay thế hàng loạt lệnh docker run.🙋 Câu hỏi thường gặp
Docker có miễn phí không?
Docker Engine và Docker Compose là mã nguồn mở và miễn phí. Docker Desktop có giới hạn cho doanh nghiệp lớn (250+ nhân viên hoặc doanh thu $10M+), nhưng cá nhân và startup nhỏ vẫn dùng free.
Học Docker mất bao lâu?
Cơ bản: 2-3 ngày nắm lệnh chính và chạy container đầu tiên.
Docker Compose: thêm 1-2 ngày.
Dockerfile và custom image: 1 tuần. Thực hành dự án thực tế 2-3 tuần.
Docker có chạy trên Windows không?
Có. Docker Desktop cho Windows hỗ trợ WSL 2 backend. Cài WSL 2 trước, sau đó cài Docker Desktop. Docker chạy Linux container trên Windows thông qua WSL 2.