Hướng dẫn build from dockerfile
Show Đã đăng vào thg 9 26, 2016 5:12 SA 2 phút đọc Chỉ định bài viết dành cho những người mới làm quen với Linux nói chung và docker nói riêng Docker là gì và công dụng của nó như thế nào thì có lẽ mình không cần nhắc lại làm gì. Các bạn có thể tra google với từ khóa Docker thì sẽ có được câu trả lời. Trong bài viết này mình sẽ hướng dẫn cách tạo 1 dockerfile, build 1 image đơn giản theo trào lưu docker everywhere cho các bạn mới làm quen. Dockerfile là gì ? Tại sao phải tạo nó ? Dockerfile đơn giản là một file (dạng text nhưng không có Extension) chứa một tập hợp các dòng lệnh dùng để khởi tạo một docker image. Nó quy định image sẽ được khởi tạo như thế nào , gồm các ứng dụng gì trong đó. Trong Dockerfile có các câu lệnh chính sau:
Với lệnh FROM Dùng để chỉ ra image được build từ đâu (từ image gốc nào)
hoặc có thể chỉ rõ tag của image gốc 'FROM ubuntu14.04:lastest' Với lệnh RUN Dùng để chạy một lệnh nào đó khi build image, ví dụ về một Dockerfile
Với lệnh CMD Lệnh CMD dùng để truyền một lệnh của Linux mỗi khi thực hiện khởi tạo một container từ image (image này được build từ Dockerfile) Có các cách (trong docs nói có 3 cách) sử dụng lệnh CMD, Ví dụ Cách 1
hoặc Cách 2
Tác dụng ngoài dùng để build một image, các bạn còn có thể đem chia sẻ nó cho người khác dùng. Thay vì phải pull một image vài trăm Mb , bạn chỉ cần 1 file vài trăm Kb, đơn giản quá phải không Cách tạo Dockerfile thì cũng khá đơn giản. Các bạn có thể sử dụng vim hoặc tạo một NewDocument đặt tên là "Dockerfile" (lưu ý phải đúng tên thì nó mới chạy nhé !) và sau đó điền nội dung vào như ví dụ ở trên .
Với 1 Dockerfile có nội dung như trên, mình sẽ tạo ra được 1 image Ubuntu 14.04 đã có cài đặt sẵn curl và vim. Build image từ Dockerfile đã tạo : Với Dockerfile đã tạo ở trên, chúng ta có thể tiến hành build một image. Các bạn trỏ đường dẫn đến thư mục lưu Dockerfile nhé. Gõ lệnh
(lưu ý là có dấu Sau khi chạy xong thì các bạn có thể dùng lệnh
để xem thành quả nhé !
All rights reserved Ở bài viết trước, mình đã giới thiệu qua về công nghệ ảo hóa, Docker Engine cũng như cấu trúc của một container. Ở phần này mình sẽ giới thiệu qua về Dockerfile qua những gì mình tìm hiểu được và cách xây dụng image từ chính nó. Dockerfile là gì?Dockerfile là một file dạng text không có phần đuôi mở rộng, chứa các đặc tả về một trường thực thi phần mềm, cấu trúc cho Docker Image. Từ những câu lệnh đó, Docker sẽ build ra Docker image (thường có dung lượng nhỏ từ vài MB đến lớn vài GB). Cú pháp của một DockerfileCú pháp chung của một Dockerfile có dạng:
Ví dụ:
Các chỉ thị chính trong DockerfileFROMChỉ định rằng image nào sẽ được dùng làm image cơ sở để quá trình build image thực thiện các câu lệnh tiếp theo. Các image base này sẽ được tải về từ Public Repository hoặc Private Repository riêng của mỗi người tùy theo setup. Cú pháp:
Chỉ thị FROM là bắt buộc và phải được để lên phía trên cùng của Dockerfile. Ví dụ:
LABELChỉ thị LABEL được dùng để thêm các thông tin meta vào Docker Image khi chúng được build. Chúng tồn tại dưới dạng các cặp key - value, được lưu trữ dưới dạng chuỗi. Có thể chỉ định nhiều label cho một Docker Image, và tất nhiên mỗi cặp key - value phải là duy nhất. Nếu cùng một key mà được khai báo nhiều giá trị (value) thì giá trị được khai báo gần đây nhất sẽ ghi đè lên giá trị trước đó. Cú pháp:
Bạn có thể khai báo metadata cho Image theo từng dòng chỉ thị hoặc có thể tách ra khai báo thành từng dòng riêng biệt. Ví dụ:
Để xem thông tin meta của một Docker Image, ta sử dụng dòng lệnh:
Ví dụ:
MAINTAINERChỉ thị MAINTAINER dùng để khai báo thông tin tác giả người viết ra file Dockerfile. Cú pháp:
Ví dụ:
Hiện nay, theo tài liệu chính thức từ bên phía Docker thì việc khai báo MAINTAINER đang dần được thay thế bằng LABEL maintainer bới
tính linh hoạt của nó khi ngoài thông tin về tên, email của tác giả thì ta có thể thêm nhiều thông tin tùy chọn khác qua các thẻ metadata và có thể lấy thông tin dễ dàng với câu lệnh Ví dụ:
RUNChỉ thị RUN dùng để chạy một lệnh nào đó trong quá trình build image và thường là các câu lệnh Linux. Tùy vào image gốc được khai báo trong phần FROM thì sẽ có các câu lệnh tương ứng. Ví dụ, để chạy câu lệnh update đối
với Ubuntu sẽ là Cú pháp:
Ví dụ:
Ở cách thức
hoặc
ADDChỉ thị ADD sẽ thực hiện sao chép các tập, thư mục từ máy đang build hoặc remote file URLs từ
Cú pháp:
Trong đó:
Ví dụ:
Bạn cũng có thể phân quyền vào các file/thư mục mới được copy:
COPYChỉ thị COPY cũng giống với ADD là copy
file, thư mục từ Cú pháp:
ENVChỉ thị ENV dùng để khai báo các biến môi trường. Các biến này được khai báo dưới dạng key - value bằng các chuỗi. Giá trị của các biến này sẽ có hiện hữu cho các chỉ thị tiếp theo của Dockerfile. Cú pháp:
Ví dụ:
Ngoài ra cũng có thể thay đổi giá trị của biến môi trường bằng câu lệnh khởi động container:
ENV chỉ được sử dụng trong các command sau:
CMDChỉ thị CMD định nghĩa các câu lệnh sẽ được chạy sau khi container được khởi động từ image đã build. Có thể khai báo được nhiều nhưng chỉ có duy nhất CMD cuối cùng được chạy. Cú pháp:
Ví dụ:
USERCó tác dụng set Cú pháp:
Ví dụ:
Tạo image với DockerfilePhần trên mình đã đi qua được cấu trúc cũng như các chỉ thị chính của một Dockerfile. Bây giờ chúng ta sẽ thực hành build một image bằng cách viết một Dockerfile đơn giản. Lưu ý rằng trước khi bắt đầu, hãy chắc chắn rằng máy của bạn đã được cài đặt sẵn Docker. Nếu chưa, bạn có thể tham khảo hướng dẫn cài đặt ở đây. Tạo DockerfileVí dụ 1Ở bước này, chúng ta sẽ tạo một đường dẫn mới cho Dockerfile.
Tiếp theo là tạo Dockerfile, lưu ý rằng tên của
Sau khi đã tạo xong Dockerfile, ta tiền hành nhập các chỉ thị:
Như bạn thấy, nội dung của Dockerfile ở trên chỉ chứa 2 chỉ thị FROM và CMD, CMD chứa câu lệnh
Cuối cùng, ta chạy lệnh Ví dụ 2Tham khảohttps://cuongquach.com/tim-hieu-dockerfile-build-docker-image.html https://docs.docker.com/engine/reference/builder/ https://lifesup.com.vn/blog/dockerfile/ |