CodeGym /Các khóa học /Docker SELF /Làm quen với Docker Images

Làm quen với Docker Images

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

1.1 Cơ bản về Docker Images

Docker Images (hình ảnh Docker) — là mẫu cho containers Docker. Nó chứa mọi thứ cần thiết để chạy ứng dụng: mã nguồn, thư viện, dependencies, công cụ và tệp cấu hình. Hiểu rõ Docker Images là gì và cách chúng được cấu trúc là rất quan trọng để sử dụng Docker hiệu quả.

Docker Image — là bất biến, đây là một mẫu được sử dụng để tạo containers. Nó chứa tất cả các thành phần cần thiết để chạy ứng dụng trong một môi trường cách ly. Khi bạn chạy một container, Docker tạo một instance của image và chạy nó.

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

  1. Bất biến: hình ảnh Docker là bất biến. Bất kỳ thay đổi nào trong container sẽ không ảnh hưởng đến hình ảnh gốc. Để thay đổi nội dung image bạn cần tạo một image mới.
  2. Cấu trúc lớp: Docker Images được cấu tạo từ nhiều lớp. Mỗi lớp là một thay đổi so với lớp trước đó. Điều này giúp sử dụng không gian hiệu quả bằng cách tái sử dụng các lớp.
  3. Nhận dạng: mỗi image có một nhận dạng duy nhất (SHA256-hash), và cũng có thể có một hoặc nhiều tags giúp quản lý phiên bản của image dễ dàng hơn.

Cấu trúc Docker Images:

Docker Images có cấu trúc lớp, trong đó mỗi lớp là một hệ thống tệp. Các lớp này được lưu trữ trong cache của Docker và có thể được tái sử dụng cho các image khác. Cấu trúc lớp giúp Docker Images nhẹ và hiệu quả. Ví dụ, lớp đầu tiên là hệ điều hành, lớp thứ hai là Python, lớp thứ ba là ứng dụng của bạn.

Các thành phần chính trong cấu trúc Docker Images:

  1. Lớp cơ bản (Base Layer): lớp đầu tiên của image, thường được sử dụng làm cơ sở để tạo các image khác. Ví dụ, đây có thể là phiên bản hệ điều hành tối thiểu như Ubuntu hoặc Alpine Linux.
  2. Các lớp trung gian (Intermediate Layers): các lớp này được tạo dựa trên các lệnh thực thi trong Dockerfile (ví dụ, cài đặt packages, sao chép tệp, v.v.). Mỗi lớp thêm các thay đổi vào lớp trước đó.
  3. Lớp cuối cùng (Final Layer): lớp cuối cùng được tạo dựa trên instruction CMD, ENTRYPOINT hoặc các thay đổi bên trong container được gọi là "lớp container". Lớp này là tạm thời và chỉ tồn tại trong khi container đang hoạt động.

1.2 Cách các lớp của Docker Images hoạt động

Mỗi lớp của một Docker Image là một tập hợp các thay đổi so với lớp trước đó. Khi Docker tạo ra một image, nó thực hiện từng chỉ thị trong Dockerfile và thêm một lớp mới cho mỗi thay đổi.

Ví dụ về việc tạo các lớp:

  1. Image cơ bản: bắt đầu với một image cơ bản, ví dụ, ubuntu:20.04. Đây sẽ là lớp đầu tiên.
  2. Cài đặt gói: lệnh RUN apt-get update && apt-get install -y python3 sẽ tạo một lớp mới với Python được cài đặt.
  3. Sao chép tệp: lệnh COPY . /app sẽ thêm tệp của ứng dụng vào một lớp mới.
  4. Thiết lập thư mục làm việc: lệnh WORKDIR /app sẽ tạo một lớp xác định thư mục làm việc cho các lệnh tiếp theo.

Lợi ích của việc sử dụng các lớp:

  1. Tái sử dụng: các lớp có thể được tái sử dụng bởi các image khác. Ví dụ, nếu hai image dùng chung một lớp cơ bản, Docker sẽ chỉ tải nó một lần, giúp tiết kiệm không gian và thời gian.
  2. Bộ nhớ đệm: Docker lưu trữ các lớp trong bộ nhớ đệm, điều này giúp tăng tốc quá trình xây dựng image. Nếu một lớp không thay đổi, Docker sẽ sử dụng nó từ bộ nhớ đệm thay vì xây dựng lại.
  3. Tính module: cấu trúc nhiều lớp giúp phát triển image dạng module. Bạn có thể cập nhật hoặc thay đổi các lớp riêng lẻ mà không ảnh hưởng đến toàn bộ image.

Xác định và gắn tag Docker Images:

Mỗi Docker Image được xác định bằng một hash (SHA256) duy nhất, được tạo dựa trên nội dung của image và tất cả các lớp của nó. Để tiện cho việc quản lý và phiên bản hoá, Docker Images cũng có thể có các tag.

Ví dụ về việc xác định image:

Lệnh sau sẽ hiển thị danh sách tất cả các image trên hệ thống của bạn, bao gồm repo, tag, ID và kích thước của chúng:

Terminal

docker images

1.3 Làm việc với Docker Images

Docker cung cấp nhiều lệnh để làm việc với images. Dưới đây là một số lệnh cơ bản:

  • Tạo image: docker build
  • Chạy container từ image: docker run
  • Danh sách images: docker images
  • Xóa image: docker rmi
  • Tìm kiếm images trên Docker Hub: docker search
  • Tải image từ Docker Hub: docker pull
  • Đẩy image lên Docker Hub: docker push

Ví dụ tạo và sử dụng Docker Image:

1. Tạo Dockerfile:

dockerfile

# Sử dụng base image Ubuntu
FROM ubuntu:20.04

# Cài đặt Python
RUN apt-get update && apt-get install -y python3

# Sao chép các file ứng dụng vào container
COPY . /app

# Thiết lập thư mục làm việc
WORKDIR /app

# Chỉ định lệnh để chạy ứng dụng
CMD ["python3", "app.py"]

2. Build image:

Lệnh sau sẽ tạo image với tên my_python_app, sử dụng Dockerfile từ thư mục hiện tại:

Terminal

docker build -t my_python_app .

3. Chạy container từ image:

Sử dụng lệnh sau để chạy container từ image vừa tạo my_python_app ở chế độ nền:

Terminal

docker run -d my_python_app
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION