CodeGym /Các khóa học /Docker SELF /Các thuật ngữ chính của Docker

Các thuật ngữ chính của Docker

Docker SELF
Mức độ , Bài học
Có sẵn

6.1 Images (Hình ảnh)

Để làm việc hiệu quả với Docker, cần phải hiểu một số thuật ngữ quan trọng: images (hình ảnh), containers (các container)registries (kho lưu trữ). Hãy cùng xem qua và hiểu xem chúng là gì, chúng dùng để làm gì và cách chúng tương tác với nhau.

Image Docker — là một mẫu (template) để tạo ra các container. Image chứa tất cả các thành phần cần thiết để chạy ứng dụng: hệ điều hành, ứng dụng, thư viện và các dependencies, cũng như các tệp cấu hình. So sánh với OOP: Image Docker là class, còn container là object của class. Các image được tạo ra bằng cách sử dụng Dockerfile — một tệp văn bản mô tả các bước để tạo image.

Các đặc điểm chính của image:

  1. Cấu trúc dạng lớp: các image bao gồm nhiều lớp xếp chồng lên nhau. Trong đó có một lớp nền tảng, và mỗi lớp tiếp theo là sự thay đổi so với lớp trước đó. Điều này giúp tiết kiệm không gian và giảm thời gian tải.
  2. Tái sử dụng: cùng một image có thể được sử dụng để tạo ra nhiều container.
  3. Khả năng di chuyển: images có thể được chuyển giữa các hệ thống khác nhau, điều này làm cho chúng trở nên lý tưởng để phát triển, thử nghiệm và triển khai ứng dụng trong các môi trường khác nhau.

Ví dụ về việc sử dụng image:

Tạo image của riêng bạn: bạn có thể tạo image của riêng mình bằng cách viết Dockerfile, trong đó bạn cần chỉ định cả cấu hình ứng dụng của mình và các dependencies của nó.

dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]

Sử dụng image có sẵn: bạn có thể sử dụng các image có sẵn trên Docker Hub để nhanh chóng triển khai các ứng dụng tiêu chuẩn, như web server hoặc cơ sở dữ liệu.

Terminal

docker pull nginx 

Lệnh này tải image nginx từ kho lưu trữ công khai Docker Hub.

6.2 Containers (Container)

Container Docker là một instance đang chạy của một image. Containers cách ly ứng dụng và các dependencies của chúng trong một môi trường runtime riêng biệt, điều này cho phép chạy chúng mà không phụ thuộc vào hệ thống lưu trữ hoặc các container khác. Containers nhẹ vì chúng sử dụng kernel của hệ điều hành lưu trữ, không cần tạo kernel riêng như máy ảo.

Đặc điểm chính của container:

  • Isolation: Containers cách ly ứng dụng, đảm bảo hoạt động độc lập và ngăn ngừa xung đột giữa các dependencies.
  • Nhẹ: Containers tiêu thụ ít tài nguyên hơn so với máy ảo vì không cần hệ điều hành riêng biệt.
  • Khởi động nhanh: Containers khởi động và dừng nhanh hơn nhiều so với máy ảo, điều này làm chúng lý tưởng cho môi trường động và việc mở rộng quy mô.

Ví dụ sử dụng containers:

Khởi động container: bạn có thể khởi động một container từ image bằng lệnh docker run.

Terminal

docker run -d -p 80:80 --name mynginx nginx

Quản lý containers: Docker cung cấp các lệnh để quản lý containers: start, stop, restart, rmexec.

Terminal

docker stop mynginx
docker rm mynginx

Bạn sẽ tìm hiểu về tất cả các lệnh và các tham số của chúng trong các bài giảng tiếp theo.

6.3 Registries (Kho lưu trữ)

Docker Registry là một kho lưu trữ Docker Images. Registries cho phép các nhà phát triển và tổ chức lưu trữ, quản lý và phân phối các images container. Có các registries công khai và riêng tư.

Đặc điểm chính của registries:

  • Registries công khai: như Docker Hub, cung cấp quyền truy cập vào rất nhiều images được tạo bởi cộng đồng và các nhà phát triển chính thức.
  • Registries riêng tư: được sử dụng để lưu trữ và quản lý images trong tổ chức, đảm bảo kiểm soát truy cập và bảo mật.
  • Tích hợp với CI/CD: registries dễ dàng tích hợp với các hệ thống continuous integration và deployment, giúp tự động hóa quy trình tạo và triển khai images.

Ví dụ sử dụng các registries:

1. Docker Hub: registry công khai (và phổ biến nhất) của Docker Images. Cung cấp quyền truy cập vào nhiều images đã sẵn có (và thường được kiểm tra, điều này thể hiện qua thống kê tải xuống).

Terminal

docker pull nginx
docker push myusername/myimage:tag  

2. Registry riêng tư: bạn có thể cài đặt và sử dụng registry riêng với Docker Registry.

Terminal

docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage

Tương tác giữa Images, Containers và Registries

Ba thành phần này liên kết chặt chẽ với nhau và tạo thành nền tảng làm việc với Docker:

  • Tạo image: nhà phát triển tạo một image sử dụng Dockerfile và lưu trữ cục bộ.
  • Tải image lên registry: image được tải lên registry (ví dụ: Docker Hub hoặc registry riêng tư), nơi nó được lưu trữ và sẵn có cho người dùng hoặc hệ thống khác.
  • Chạy container: người dùng tải image từ registry và chạy container, container cách ly ứng dụng và đảm bảo thực thi.

6.4 Điều phối (Orchestration)

Điều phối — là quá trình quản lý nhiều container trong môi trường phân tán. Công cụ điều phối giúp tự động hóa việc triển khai, mở rộng và quản lý container.

  • Kubernetes: nền tảng điều phối container phổ biến nhất, cho phép quản lý một cụm container trên nhiều node khác nhau.
  • Docker Swarm: nền tảng điều phối được tích hợp trong Docker để tạo và quản lý các cụm Docker.
  • Chức năng điều phối: mở rộng tự động, tự phục hồi, quản lý mạng và cân bằng tải.

6.5 Mạng (Networks)

Mạng trong Docker cho phép các container tương tác với nhau và với thế giới bên ngoài. Docker cung cấp một số loại mạng cho các kịch bản sử dụng khác nhau.

  • Bridge: mạng mặc định được Docker tạo ra. Các container trong mạng cầu có thể tương tác với nhau.
  • Host: container sử dụng giao diện mạng của máy chủ, có quyền truy cập trực tiếp vào chúng.
  • Overlay: được sử dụng để tạo mạng giữa nhiều Docker-daemon. Cần thiết cho việc điều phối.
  • None: tắt tất cả giao diện mạng của container. Hữu ích cho các nhiệm vụ cô lập.

6.6 Volumes (Ổ đĩa)

Volumes (Ổ đĩa) — là cơ chế để lưu trữ dữ liệu của containers một cách lâu dài. Chúng cho phép lưu trữ dữ liệu bên ngoài container, để không bị mất thông tin khi khởi động lại hoặc xóa container.

  • Tạo volume: volumes được tạo bằng câu lệnh docker volume create.
  • Gắn volume: volumes được gắn vào containers bằng cờ -v khi khởi chạy.
  • Lợi ích: volumes cung cấp cách lưu trữ và chia sẻ dữ liệu tiện dụng giữa các containers, và hiệu năng tốt hơn so với các thư mục gắn kết (bind mounts).

Quan trọng! Volume là một ổ đĩa cứng ảo, có thể được gắn vào máy ảo hoặc container. Thường được lưu trên hệ điều hành host dưới dạng tệp thông thường.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION