Image và Container trong Docker: Khác nhau và cách sử dụng

Trong Docker, Image và Container là hai khái niệm quan trọng và thường được sử dụng. Tuy nhiên, chúng thường gây nhầm lẫn cho người mới sử dụng Docker. Trong bài viết này, chúng ta sẽ tìm hiểu về Image và Container trong Docker, khác nhau giữa chúng và cách sử dụng chúng.

Image trong Docker

Image trong Docker là một "bản sao" của một môi trường, bao gồm tất cả các thư viện, phần mềm và cấu hình cần thiết để chạy một ứng dụng. Image là một tệp không thể thay đổi và được sử dụng để tạo ra các Container.

Image có thể được xem như là một bản ghi đóng gói, chứa các tệp và thông tin cần thiết để chạy một ứng dụng. Image có thể được xây dựng từ Dockerfile hoặc tải về từ Docker Hub, một kho lưu trữ chứa các Image đã được đăng ký.

Cách sử dụng Image

Để sử dụng Image, ta có thể sử dụng lệnh "docker pull" để tải về Image từ Docker Hub hoặc sử dụng Dockerfile để tạo ra Image mới. Việc tải về Image từ Docker Hub rất đơn giản, chỉ cần chạy lệnh:

docker pull image_name

Trong đó, "image_name" là tên của Image muốn tải về. Ví dụ, để tải về Image Ubuntu, ta có thể sử dụng lệnh:

docker pull ubuntu

Sau khi tải về Image, ta có thể sử dụng lệnh "docker run" để tạo Container từ Image đó.

Container trong Docker

Container trong Docker là một môi trường độc lập, được tạo ra từ một Image. Container chứa một ứng dụng và tất cả các thư viện, phần mềm và cấu hình cần thiết để chạy ứng dụng đó.

Container cung cấp một môi trường độc lập, cho phép ta chạy ứng dụng một cách độc lập trên nhiều máy tính và hệ điều hành khác nhau. Container có thể được tạo, khởi chạy, dừng và xóa bất kỳ lúc nào.

Cách sử dụng Container

Để sử dụng Container, ta cần tạo Container từ Image bằng cách sử dụng lệnh "docker run". Lệnh "docker run" sẽ tạo một Container mới từ Image và khởi chạy ứng dụng trong Container đó.

Ví dụ, để tạo một Container mới từ Image Ubuntu, ta có thể sử dụng lệnh:

docker run -it ubuntu

Trong đó, "-it" cho phép ta tương tác với Container bằng cách sử dụng terminal. Sau khi Container được tạo, ta có thể tương tác với nó bằng cách sử dụng terminal, thêm hoặc xóa các tệp và thực hiện các tác vụ khác.

Khác nhau giữa Image và Container

Image là một bản ghi đóng gói chứa tất cả các thư viện, phần mềm và cấu hình cần thiết để chạy một ứng dụng, trong khi Container là một môi trường độc lập, được tạo ra từ Image và chứa một ứng dụng cụ thể.

Image không thể được thay đổi, chỉ có thểtạo ra mới hoặc cập nhật từ Dockerfile, trong khi Container có thể được tạo, khởi chạy, dừng và xóa bất kỳ lúc nào.

Một Image có thể tạo ra nhiều Container, tất cả các Container sẽ có cùng một môi trường và cấu hình như Image. Tuy nhiên, các Container sẽ có các tài nguyên, quyền truy cập và trạng thái riêng biệt.

Ví dụ minh họa

Để minh họa cách sử dụng Image và Container trong Docker, ta sẽ xây dựng một ứng dụng đơn giản và chạy nó trong một Container.

Bước 1: Tạo Dockerfile

Đầu tiên, ta cần tạo Dockerfile để xây dựng Image. Dockerfile là một tệp văn bản đơn giản chứa các hướng dẫn để xây dựng Image.

Trong trường hợp này, ta sẽ sử dụng Dockerfile để tạo một Image chứa một ứng dụng Node.js đơn giản. Nội dung của Dockerfile như sau:

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Lệnh đầu tiên (FROM) chỉ định Image cơ sở cho Dockerfile, trong trường hợp này là Image chứa Node.js phiên bản 14.

Lệnh thứ hai (WORKDIR) chỉ định thư mục làm việc trong Container.

Lệnh thứ ba (COPY) sao chép tệp package.json từ máy tính vào thư mục làm việc trong Container.

Lệnh thứ tư (RUN) chạy lệnh npm install để cài đặt các phụ thuộc từ tệp package.json.

Lệnh thứ năm (COPY) sao chép các tệp còn lại từ máy tính vào thư mục làm việc trong Container.

Lệnh cuối cùng (CMD) chỉ định lệnh mặc định để chạy khi Container được khởi động.

Bước 2: Xây dựng Image

Sau khi tạo Dockerfile, ta sẽ sử dụng lệnh "docker build" để xây dựng Image từ Dockerfile:

docker build -t myapp .

Trong đó, "-t" chỉ định tên và phiên bản cho Image, và "." chỉ định thư mục hiện tại làm vị trí cho Dockerfile.

Bước 3: Tạo Container

Sau khi xây dựng Image, ta có thể sử dụng lệnh "docker run" để tạo Container từ Image:

docker run -p 8080:8080 myapp

Trong đó, "-p" chỉ định cổng để liên kết Container với máy tính, và "myapp" là tên của Image.

Bước 4: Kiểm tra ứng dụng

Sau khi Container được tạo, ta có thể truy cập ứng dụng bằng cách mở trình duyệt và truy cập địa chỉ http://localhost:8080.

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về Image và Container trong Docker, khác nhau giữa chúng và cách sử dụng chúng. Việc hiểu rõ về các khái niệm này sẽ giúp bạn sử dụng Docker hiệu quả hơn và triển khai ứng dụng của mình một cách dễ dàng và đồng nhất.