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.
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.
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.
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
Ta tạm thời push lên hub
docker push antienhp/react:v96
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.
Ta lấy địa chỉ ip public của con ubuntu của mình.
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.
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..