BÀI MỚI NHẤT
MỚI CẬP NHẬT

Dockerfile là gì? Cách tạo và cấu trúc của một Dockerfile

Trong bài học về Docker mình đã giới thiệu với các bạn các công nghệ ảo hóa containerlization với công cụ docker của công ty Docker. Vậy thì trong bài học thứ hai này mình sẽ giới thiệu đến các bạn một công cụ mới khá hữu ích đó là Dockerfile.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Dockerfile là gì?

Dockerfile là một file dạng text dùng để thiết lập cấu trúc cho docker image nhờ chứa một tập hợp các câu lệnh.

Hình ảnh dưới đây là cấu trúc của một Dockerfile, nó chứa nhiều lệnh ở bên trong để định hình image như thế nào.

dockerfile content png

Bài viết này được đăng tại [free tuts .net]

Từ những câu lệnh đó, Docker có thể thực hiện đóng gói một docker image theo yêu cầu tùy biến của riêng bạn.

=> Như vậy Dockerfile sẽ quy định Docker image được khởi tạo từ đâu, gồm những gì trong đó.

2. Cách viết một Dockerfile

Chúng ta sẽ viết Dockerfile để tạo một image. Sau khi tạo được image bạn có thể dùng như một máy ảo để bạn có thể khởi chạy ứng dụng của bạn trên máy ảo đó.

Mình sẽ hướng dẫn tạo dockerfile và có cấu trúc như hình ảnh ở phần một.

dockerfile content png

Bước 1: Giới thiệu người viết dockerfile.

Ta sử dụng lệnh MAINTAINER để đặt tên cho tác giả của Dockerfile mà bạn đang viết. Đây là dòng không bắt buộc, có thể có hoặc không.

MAINTAINER AnTien<antiendhcnhn@gmail.com>

Bước 2: Cài đặt ứng dụng

From node:node:14-alpine dùng để thiết lập nó là image cha.

Bạn có thể cài nginx, php, python, ruby, java ... phụ thuộc vào nhu cầu của bạn, sử dụng:

  • RUN : Để thực thi một câu lệnh nào đó trong quá trình build images.
  • CMD : Để thực thi một câu lệnh trong quá trình bật container.
  • Mỗi Dockerfile chỉ có một câu lệnh CMD, nếu như có nhiều hơn một câu lệnh CMD thì chỉ có câu lệnh CMD cuối cùng được sử dụng.
  • EXPOSE: Container sẽ lắng nghe trên các cổng mạng được chỉ định khi chạy
  • COPY : Copy file, thư mục từ host machine vào image. Có thể sử dụng url cho tập tin cần copy.
  • WORKDIR : Định nghĩa directory cho CMD
  • VOLUME : Mount thư mục từ máy host vào container.

3 Cách sử dụng Dockerfile

Sau khi có file Dockerfile tạo ở trên bạn có thể download source code demo ở github phía dưới và thực hành theo cùng mình để hiểu rõ hơn nhé.

Build docker image từ Dockerfile

docker build -t antienhp/react:v96

dockerfile 2 png

Ta tạm thời push lên hub

 docker push antienhp/react:v96

dockerfile 3 png

Chúng ta đã push thành công và ta có thể pull image này và chạy nó lên.

Nếu các bạn không push lên thì bạn có thể dùng trực tiếp docker image mà bạn vừa build hoặc dùng image public của mình.

Và sau khi đã có image mà bạn vừa build vừa nãy, bạn có thể chạy lệnh sau để xem thành quả của mình.

docker run -d -p 84:3000 antienhp/react:v96

Trong đó -p là cổng mạng từ máy thật để dẫn tới cổng mạng của máy ảo đang chạy.

dockerfile 4 png

Ta lấy địa chỉ ip public của con ubuntu của mình.

dockerfile 5 png

Mọi người nhớ rằng mình đã mở port 84 thông với port 3000 từ câu lệnh:

docker run -d -p 84:3000 antienhp/react:v96

Ta truy cập thử xem trên website hiển thị gì nào.

dockerfile 6 png

Well done.

Source code tham khảo mình có để link github:

https://github.com/AnTienTL/docker

3. Kết luận

Qua bài này, mình đã giới thiệu đến các bạn về Các câu lệnh trong docker, giới thiệu qua về Dockerfile và mình có đưa các bạn sơ khai về docker cho development. Ở bài sau, mình sẽ giới thiệu đến bạn: Volume trong Docker và cách sử dụng hiệu quả cho development..

Cùng chuyên mục:

Docker là gì? Tại sao phải dùng Docker trong dự án phần mèm?

Docker là gì? Tại sao phải dùng Docker trong dự án phần mèm?

Khi bắt đầu vào một dự án mới, bạn thường làm gì đầu tiên? Tất…

Top