Trang Chủ

Docker cho người mới bắt đầu ( Dockerfile )

Dockerfile là gì vậy ?

Đơn giản hóa 1 chút, dockerfile là 1 file không đuôi dạng text, chứa tập các lệnh để thiết lập cấu trúc cho 1 docker image.

Docker có thể thực hiện đóng gói thành Docker container dựa theo tùy chỉnh mong muốn thông qua Dockerfile

Viết Dockerfile như thế nào ?

Đầu tiên chúng ta sẽ tạo ra 1 file text đặt tên là Dockerfile, viết xong Dockerfile thì ta sẽ build để tạo image -> container và cuối cùng là tạo ra máy ảo để khởi chạy ứng dụng trên máy ảo đó.

Tiếp tục ta sẽ tạo ra 1 folder để chứa mã nguồn ( có thể là php, java, html, …) , ở đây mình đặt tên là App, chúng ta sẽ dùng editor để viết code trong này, các thay đổi trong editor sẽ được cập nhật ngay lập tức lên máy ảo.

Sau cùng là tạo 1 file start.sh để chứa những câu lệnh được chạy khi bật container (có thể dùng để start nginx, redis, mysql …).

Mở file start.sh vừa tạo ở trên bằng một editor bất kỳ và edit lại thành

Một file bash script phải luôn bắt đầu bằng #!/bin/bash để biểu thị rằng tập lệnh sẽ chạy với bash script chứ không phải bất kỳ shell nào khác.

Ok, và đó là các file và folder mà chúng ta cần chuẩn bị. Nếu đã xong thì tiếp túc tới với giai đoạn tiếp theo nhé.

Thiết lập images cha

Chúng ta đều biết để 1 ứng dụng chạy được trên 1 máy tính thì nó cần có 1 trình quản lí đó là hệ điều hành đúng không ạ. Giờ hãy coi image mà chúng ta đang xây dựng là 1 thiết bị phần cứng chưa có phần mềm nào trong đó cả, nên để nó có thể hoạt động thì điều đầu tiên chúng ta phải làm đó là tạo ra 1 hệ điều hành cho nó. Tương đương, ta sẽ khai báo 1 images cha cho image này, images cha sẽ chứa ubuntu:16.04 hoặc centos:7 ( tùy vào yêu cầu ) như thế này :

Khi Docker đọc tới câu lệnh này, nó sẽ tự động tìm xem image ubuntu:16.04 này đã tồn tại trong máy chưa, nếu chưa thì Docker sẽ tự động pull image này về từ Docker Hub. Trong đó ubuntu là tên của image, 16:04 là tag ( có thể hiểu đơn giản là phiên bản).

MAINTAINER : optional dùng để đặt tên cho tác giả của Dockerfile

Cài đặt ứng dụng

Bây giờ chúng ta sẽ thiết lập các ứng dụng trên môi trường ubuntu:16.04 này dựa theo 1 số lệnh sau :

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. Nếu muốn khởi động nhiều ứng dụng khi start container thì ta sẽ sử dụng ENTRYPOINT

Ví dụ :

Tùy chọn -y tương đương việc tự động lựa chọn yes trong khi cài đặt packet

Cấu hình

Ta sẽ mở file start.sh lên và thêm vào các lệnh sau:

Tiếp tục quay lại file Dockerfile và thêm vào

Tổng hợp lại chúng ta sẽ được 2 file hoàn chỉnh như dưới đây

File start.sh

File Dockerfile

Done, bây giờ trong thư mục App ta sẽ tạo 1 file helloworld.html để lát nữa ta sẽ test thử nhé

Sử dụng Dockerfile

Ở mục trên thì cơ bản chúng ta đã viết xong Dockerfile và cấu hình 1 số lệnh đơn giản, hiện tại ta sẽ tiến hành build image từ Dockerfile đã viết.

Sử dụng câu lệnh sau :

 

Các bạn có thể thấy Docker sẽ thực thi lần lượt câu lệnh trong Dockerfile. Nếu có thông báo successfully tức là thành công.

Hoặc các bạn cũng có thể kiểm tra kết quả build image bằng lệnh

Nếu thấy có image tên là demo_image là build thành công image rồi đó .

Tiếp theo ta sẽ tạo 1 container từ image vừa build xong, sử dụng lệnh :

Trong đó :

Ví dụ :

Sau đó vào trình duyệt chrome gõ localhost:7000 và xem kết quả:

Done, vậy là chúng ta vừa cùng nhau đi từ cách viết Dockerfile để tạo image, rồi từ image để tạo ra được 1 container đơn giản. Hy vọng bài viết hữu ích cho mn. Cám ơn mn đã dành thời gian cho mình

Chia sẻ bài viết ngay