Đối với người trong ngành nghề công nghệ thông tin thì không thể thiếu được kiến thức về Docker. Docker là một open platfrom cung cấp cho người sử dụng những công cụ và service để người sử dụng có thể chạy chương trình của mình trên nhiều môi trường khác nhau một cách nhanh nhất. Ta có thể dễ dàng mô phỏng một môi trường sever dưới Local với tình trạng khá hoàn hảo bằng cách dùng Docker.
Chính nhờ những ưu điểm đó mà đến thời điểm hiện tại thì Docker không còn xa lạ với cộng đồng lập trình nữa, nó mang lại nhiều lợi ích cho người sử dụng điều này trong thực tế đã được chứng minh. Xây dựng Docker Image là một tiến trình hoạt động khá quan trọng khi sử dụng Docker. Sau đây là một số kiến thức chia sẻ và cách xây dựng Docker Image mà bạn có thể dễ dàng tiến hành.
Docker build
Docker build là một nền tảng mở được xây dựng nên dành riêng cho các lập trình viên thử nghiệm ứng dụng hay các phân đoạn code, chức năng riêng lẻ hay quản lý hệ thống xây dựng, chạy các ứng dụng phân tán. Dockerfile là nơi tập trung các tập hợp lệnh để Docker có thể truy xuất , đọc hiểu và thực hiện những yêu cầu của người dùng đưa ra. Dockerfile sẽ xây dựng tự động Docker Image bằng cách đọc các chỉ thị đã được khai báo trong flie. Vì thế chúng ta thực hiện lệnh trong thư mục chứa file Dockerfile.
Build với tên và tag
Xây dựng Image đơn giản bằng tên và tag
- Tên được gán là ubuntu/alpine
- Tag được gán là 2.0
Sau đó ta kiểm tra bằng lệnh “docker images”
Build với file tùy chọn
Option -f: trỏ đến file muốn sử dụng để thay thế Dockerfile
Build với Github URL
GitHub hoạt động giống như một mạng xã hội cho lập trình viên, nó là hệ thống quản lý dự án và phiên bản code. GitHub được mọi người sử dụng để hợp tác nhiều người lại với nhau, từ mọi nơi trên thế giới lên kế hoạch và theo dõi làm chung một dự án. Để xây dựng trên Github chúng ta sử dụng đường dẫn ngắn hoặc đường dẫn repository đầy đủ. Khi Dockerfile ở đây thì nó nằm trong thư mục gốc của Git repo.
Có thể chỉ định một repo khác tùy ý với git:// hoặc git@
Build với file đọc từ STDIN
STDIN hỗ trợ khá nhiều kiểu file như txt, gz, bzip2, gzip, xz…
Build không sử dụng cache
Cache mang lại nhiều lợi ích cho người dùng nó giúp cải thiện tốc độ, các yêu cầu của người sử dụng có thể đáp ứng ngay lập tức, đáp ứng nhu cầu truy cập khi gián đoạn mạng, đáp ứng lưu lượng lớn truy cập. Với Docker cũng thế cache mang lợi thế về thời gian. Đó là trong quá trình làm việc thì ai cũng muốn có thể hoàn thành nhanh nhất nhưng tương đương với độ chính xác cao, thì ở đây cũng vậy để rút ngắn thời gian build nên Docker đã sử dụng cache để thực hiện điều này. Nhưng cũng có khi các bạn không muốn rút ngắn thời gian build thì cũng có giải pháp dành cho các bạn đó là sử dụng cờ –no-cache.
Xóa file rác không mong muốn trong Images
Nếu bạn sử dụng các lệnh như lệnh ADD hay lệnh COPY sẽ có nguy cơ bạn bị lẫn các file rác, không cần thiết cho dự án, tiến trình làm việc của bạn, điều đó khá là phổ biến khi bạn thao tác trên Docker. Để loại bỏ các file rác này đi bạn có thể sử dụng thao tác ignore thông qua file .dockerignore với chức năng tương tự như .gitignore.
Sử dụng biến mới trong Dockerfile
Bạn muốn đặt biến và sử dụng các biến mới trong Dockerfile hãy thực hiện theo các thao tác và các lệnh như sau đây. Các lệnh trong Dockerfile khá quen thuộc với các ngôn ngữ lập trình phổ biến nên bạn sẽ không gặp nhiều khó khăn lắm để xử lý vấn đề này.
Docker multi-stage build
Multi-stage Builds là tính năng được giới thiệu trên phiên bản Docker 17.5 cho phép bạn tạo nhiều hình ảnh trung gian từ cùng một Dockerfile. Khi chương trình được bạn xây dựng và chương trình đó chỉ cần chạy 1 hoặc vài file thực thi, cấu hình. Các file trong chương trình đó lại yêu cầu cần cài đặt môi trường, gói, mô-đun rất khó và phức tạp. Nó còn cần một dung lượng khá cao nên có thể khiến cho file Images của bạn nặng hơn.
Các công việc mà bạn cần thực hiện là cài đặt đó ở các stage có đầy đủ môi trường. Sau khi cài đặt xong bạn copy file mà bản thân mình cần dùng sang stage dựa trên images nhẹ hơn, nhưng cũng phải đủ để thực thi, chạy ứng dụng của bạn.
Các stage được đặt tên bằng từ khóa as và bạn có thể COPY giữa các stage bằng cờ –from=<stage name>
Kết luận
Bạn đã là một người lập trình hay chuẩn bị chở thành người lập trình chắc hẳn các bạn sẽ có những kiến thức về chuyên ngành mình đang làm. Theo như mình biết về ngành nghề công nghệ thông tin thì nó có lượng kiến thức ở mức tương đối lớn, phức tạp và nó các kiến thức có sự liên kết, logic với nhau từ đơn giản đến phức tạp để phục vụ cho công việc sau này của bạn. Chắc chắn rằng Docker cũng là một kiến thức không thể bỏ qua của tất cả mọi người. Hy vọng mọi người có thể mở rộng hơn kiến thức về cách xây dựng Docker Image hoặc giải quyết được các vấn đề đang gặp phải thông qua bài viết.