sudo dnf install -y net-tools nano wget
Docker sử dụng kiến trúc kiểu client-server (khách-chủ):
- Docker client (khách): Dùng để gửi lệnh
- Docker daemon (dockerd): Chịu trách nhiệm thực hiện các lệnh như:
- Tạo và chạy container
- Xây dựng image
- Quản lý volume, mạng, v.v…
Hai thành phần này giao tiếp với nhau thông qua REST API, có thể kết nối:
- Qua Unix socket (nội bộ)
- Hoặc qua giao diện mạng (remote)
1. Docker Daemon (dockerd)
- Là tiến trình nền (daemon) luôn chạy để:
-
Lắng nghe các yêu cầu API
-
Quản lý các “
đối tượng Docker” như:- Image
- Container
- Network
- Volume
-
2. Docker Client (docker CLI)
- Là công cụ dòng lệnh mà chúng ta dùng thường xuyên:
docker container run
- Client sẽ gửi lệnh này đến daemon, và daemon sẽ xử lý nó.
3. Docker Registry – Nơi lưu trữ image
- Mặc định: Docker kết nối với Docker Hub cho phép tải về (pull) hoặc đẩy lên (push) các image
- Tương tự như GitHub nhưng dành cho Docker image
docker pull nginx
docker push nginx:<tag>
4. Docker Image
- Image là một khuôn mẫu (read-only), chứa hướng dẫn tạo container:
- Gồm: Hệ điều hành, thư viện, mã nguồn, file cấu hình, lệnh khởi động, v.v…
- ⇒ Dùng file
Dockerfileđể tự tạo image phù hợp với ứng dụng.
Các lệnh thao tác với Docker Image:
- Xem danh sách image:
docker image ls
- Tạo image từ Dockerfile:
docker build -t <image_name>:<tag> <path_to_dockerfile>
- Tải image từ Docker Hub:
docker pull <image_name>:<tag>
- Xóa image:
docker rmi <image_id>
- Xem thông tin chi tiết của image:
docker image inspect <image_id>
- Xem lịch sử các lớp (layers) trong image:
docker image history <image_id>
- Gán nhãn (tag) cho image:
docker tag <image_id> <repository>:<tag>
- Đẩy image lên registry (ví dụ Docker Hub):
docker push <repository>:<tag>
5. Container – Runtime Instance của image
- Là thực thể đang chạy (runtime instance) của image.
Các lệnh thao tác với Docker Image:
-
Tạo container:
docker container create <image_name> -
Chạy container:
docker container run <image_name> -
Dừng container:
docker container stop <container_id> -
Khởi động lại container:
docker container restart <container_id> -
Xóa container:
docker container rm <container_id> -
Gắn kết vào mạng:
docker network connect <network_name> <container_id> -
Gắn kết volume:
docker run -v <host_path>:<container_path> <image_name> -
Gắn nhiều container vào cùng 1 network:
docker network create <network_name> docker network connect <network_name> <container_id>