Khóa học docker

Docker Image là gì?

0 phút đọc

Docker là một nền tảng mã nguồn mở giúp các nhà phát triển xây dựng, triển khai và chạy các ứng dụng trong các container. Một trong những khái niệm cốt lõi của Docker là Docker Image. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về Docker Image, cách tạo và quản lý chúng, và cung cấp các ví dụ cụ thể để minh họa.

Docker Image là gì?

Docker Image là một mẫu chỉ đọc chứa tất cả các thành phần cần thiết để chạy một ứng dụng, bao gồm mã nguồn, thư viện, phụ thuộc và các công cụ hệ thống. Docker Image là nền tảng để tạo ra các container Docker, và mỗi container là một instance đang chạy của một Docker Image.

Các thành phần của Docker Image

Docker Image được cấu thành từ nhiều lớp (layers) xếp chồng lên nhau. Mỗi lớp đại diện cho một thay đổi cụ thể trong hệ thống file, chẳng hạn như thêm một file mới hoặc sửa đổi một file hiện có. Các lớp này được lưu trữ trong bộ nhớ cache của Docker engine, giúp tối ưu hóa quá trình tạo Docker Image.

  • Base Image: Lớp đầu tiên của Docker Image, thường là một hệ điều hành cơ bản như Ubuntu hoặc Alpine.
  • Parent Image: Một Docker Image có thể được xây dựng dựa trên một image khác, gọi là parent image. Parent image cung cấp các thành phần cơ bản để xây dựng các lớp tiếp theo.
  • Dockerfile: Một file văn bản chứa các lệnh để xây dựng Docker Image. Mỗi lệnh trong Dockerfile tạo ra một lớp mới trong Docker Image.
  • Docker Manifest: Một file bổ sung mô tả Docker Image, bao gồm các thông tin như tag của image, chữ ký số và hướng dẫn cấu hình container.

Cách tạo Docker Image

Có hai phương pháp chính để tạo Docker Image: phương pháp tương tác và phương pháp sử dụng Dockerfile.

Phương pháp tương tác

Phương pháp này bao gồm việc chạy một container từ một Docker Image hiện có, thay đổi môi trường container thông qua các bước trực tiếp, và lưu trạng thái kết quả thành một image mới.

  1. Chạy container từ image hiện có:

    docker run -it ubuntu /bin/bash
  2. Thực hiện các thay đổi trong container:

    apt-get update
    apt-get install -y nginx
  3. Lưu trạng thái container thành image mới:

    docker commit <container_id> my-new-image

Phương pháp sử dụng Dockerfile

Phương pháp này bao gồm việc tạo một file văn bản gọi là Dockerfile, chứa các lệnh để xây dựng Docker Image.

  1. Tạo Dockerfile:

    Tạo một file có tên là Dockerfile với nội dung sau:

    # Sử dụng image chính thức của Node.js làm base image
    FROM node:14
    
    # Tạo thư mục làm việc trong container
    WORKDIR /app
    
    # Sao chép package.json và package-lock.json vào thư mục làm việc
    COPY package*.json ./
    
    # Cài đặt các phụ thuộc của ứng dụng
    RUN npm install
    
    # Sao chép mã nguồn ứng dụng vào thư mục làm việc
    COPY . .
    
    # Mở cổng 8080 để truy cập ứng dụng
    EXPOSE 8080
    
    # Chạy ứng dụng khi container khởi động
    CMD ["node", "app.js"]
  2. Xây dựng Docker Image:

    Sử dụng lệnh docker build để xây dựng Docker Image từ Dockerfile:

    docker build -t my-node-app .
  3. Chạy Docker Image:

    Sử dụng lệnh docker run để tạo và chạy một container từ Docker Image vừa xây dựng:

    docker run -p 8080:8080 my-node-app

Quản lý Docker Image

Docker cung cấp nhiều lệnh để quản lý Docker Image, bao gồm việc liệt kê, xóa và kiểm tra thông tin của các image.

Liệt kê Docker Image

Sử dụng lệnh docker images để liệt kê tất cả các Docker Image trên hệ thống:

docker images

Xóa Docker Image

Sử dụng lệnh docker rmi để xóa một Docker Image:

docker rmi <image_id>

Kiểm tra thông tin Docker Image

Sử dụng lệnh docker inspect để kiểm tra thông tin chi tiết của một Docker Image:

docker inspect <image_id>

Ví dụ: Tạo và Chạy Ứng Dụng Web Đơn Giản Với Docker

Trong ví dụ này, chúng ta sẽ tạo và chạy một ứng dụng web đơn giản sử dụng Docker.

  1. Tạo Dockerfile

    Tạo một file có tên là Dockerfile với nội dung sau:

    # Sử dụng image chính thức của Node.js làm base image
    FROM node:14
    
    # Tạo thư mục làm việc trong container
    WORKDIR /app
    
    # Sao chép package.json và package-lock.json vào thư mục làm việc
    COPY package*.json ./
    
    # Cài đặt các phụ thuộc của ứng dụng
    RUN npm install
    
    # Sao chép mã nguồn ứng dụng vào thư mục làm việc
    COPY . .
    
    # Mở cổng 8080 để truy cập ứng dụng
    EXPOSE 8080
    
    # Chạy ứng dụng khi container khởi động
    CMD ["node", "app.js"]
  2. Tạo file package.json

    Tạo một file có tên là package.json với nội dung sau:

    {
      "name": "docker-example",
      "version": "1.0.0",
      "description": "A simple web application",
      "main": "app.js",
      "scripts": {
        "start": "node app.js"
      },
      "dependencies": {
        "express": "^4.17.1"
      }
    }
  3. Tạo file app.js

    Tạo một file có tên là app.js với nội dung sau:

    const express = require('express');
    const app = express();
    const port = 8080;
    
    app.get('/', (req, res) => {
      res.send('Hello, Docker!');
    });
    
    app.listen(port, () => {
      console.log(`App running at http://localhost:${port}`);
    });
  4. Xây Dựng Docker Image

    Sử dụng lệnh docker build để xây dựng Docker Image từ Dockerfile:

    docker build -t docker-example .
  5. Chạy Docker Container

    Sử dụng lệnh docker run để tạo và chạy một container từ Docker Image vừa xây dựng:

    docker run -p 8080:8080 docker-example
  6. Truy Cập Ứng Dụng

    Mở trình duyệt web và truy cập http://localhost:8080. Bạn sẽ thấy thông báo "Hello, Docker!".

Lợi Ích của Docker Image

Docker Image mang lại nhiều lợi ích cho quá trình phát triển và triển khai ứng dụng:

  1. Tính nhất quán: Docker Image đảm bảo rằng ứng dụng sẽ hoạt động nhất quán trên nhiều môi trường khác nhau, từ máy phát triển đến máy chủ sản xuất.
  2. Tính di động: Docker Image có thể chạy trên nhiều nền tảng khác nhau, bao gồm máy tính cá nhân, máy chủ vật lý, máy ảo, và các dịch vụ đám mây.
  3. Hiệu quả tài nguyên: Docker Image nhẹ hơn so với máy ảo vì chúng chia sẻ kernel của hệ điều hành chủ và chỉ bao gồm các thành phần cần thiết để chạy ứng dụng.
  4. Tính linh hoạt: Docker Image cho phép dễ dàng mở rộng và thu nhỏ ứng dụng bằng cách thêm hoặc xóa các container.
  5. Tích hợp CI/CD: Docker Image tích hợp tốt với các công cụ CI/CD, giúp tự động hóa quá trình xây dựng, kiểm thử và triển khai ứng dụng.

Kết Luận

Docker Image là một công cụ mạnh mẽ giúp đơn giản hóa quá trình phát triển, kiểm thử và triển khai ứng dụng. Bằng cách sử dụng Docker Image, các nhà phát triển có thể đảm bảo rằng ứng dụng của họ sẽ hoạt động nhất quán trên nhiều môi trường khác nhau, từ máy phát triển đến máy chủ sản xuất. Docker Image cũng mang lại nhiều lợi ích về tính di động, hiệu quả tài nguyên, và tính linh hoạt, giúp tối ưu hóa quá trình phát triển và triển khai ứng dụng.

Việc tạo và quản lý Docker Image khá đơn giản và có thể thực hiện thông qua một vài bước cơ bản. Sau khi tạo Docker Image, bạn có thể sử dụng chúng để tạo và quản lý các container, giúp nâng cao hiệu quả và tính nhất quán trong quá trình phát triển và triển khai ứng dụng.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Docker image là gì?

entry

Docker image registry là gì?

entry

Docker Hub là gì?

Gợi ý bài viết

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào