Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

𝑫𝒐𝒄𝒌𝒆𝒓𝒇𝒊𝒍𝒆𝒔 và 𝑫𝒐𝒄𝒌𝒆𝒓 𝑰𝒎𝒂𝒈𝒆𝒔

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 𝑫𝒐𝒄𝒌𝒆𝒓𝒇𝒊𝒍𝒆𝒔 và 𝑫𝒐𝒄𝒌𝒆𝒓 𝑰𝒎𝒂𝒈𝒆𝒔

    Dockerfile là một tập lệnh được sử dụng để tạo ra một container image cho các thông số kỹ thuật của bạn. Nó là một tiến trình tiết kiệm thời gian rất lớn và cung cấp một hệ thống sẵn sàng để tái tạo và tự động hóa việc triển khai container. Khi bạn đã xây dựng Dockerfile, bạn có thể tạo vô số image giống nhau mà không cần phải chỉnh sửa hoặc cài đặt phần mềm theo cách thủ công. Dockerfile chỉ đơn giản là một file text với một tập hợp các lệnh có cấu trúc mà Docker thực thi trong khi xây dựng image. Một số lệnh phổ biến nhất như sau:
    • FROM: Chọn base image được sử dụng để bắt đầu quá trình xây dựng hoặc có thể được đặt thành scratch để xây dựng một image hoàn toàn mới.
    • MAINTAINER: Cho phép bạn chọn tên và địa chỉ email cho người tạo image.
    • RUN: Tạo các layer image và thực thi các lệnh trong container
    • CMD: Thực thi một lệnh duy nhất trong một container. Chỉ một file có thể tồn tại trong Dockerfile.
    • WORKDIR: Đặt đường dẫn mà lệnh được xác định bằng CMD sẽ được thực thi.
    • ENTRYPOINT: Thực thi một ứng dụng mặc định mỗi khi container được tạo với image.
    • ADD: sao chép file từ máy cục bộ hoặc từ xa qua thông qua URL vào hệ thống file của container.
    • ENV: Đặt biến mỗi trường bên trong container.
    • EXPOSE: Liên kết một cổng cụ thể để kết nối mạng.
    • USER: Đặt UID(hoặc username) của người dụng để chạy container.
    • VOLUME: Thiết lập một thư mục để chia sẻ có thể được ánh xạ đến thư mục ở máy cục bộ.
    • LABEL: Cung cấp một label(nhãn) để xác định docker image đã tạo.

    Tạo Dockerfile bắt đầu bằng việc tạo một file text. File phải đực đặt tên là Dockerfile và bạn đặt nó vào thư mục làm việc nơi bạn muốn tạo image. Khi bạn đã mở trình soạn thảo yêu thích của mình, cú pháp rất đơn giản. Docker đọc file và vận hành trên đó từng dòng một, do đó, thứ tự bạn xây dựng file Docker của mình phải tuân theo các bước bạn sẽ thực hiện theo cách thủ công để tải phần mềm của mình và cấu hình nó. Đầu tiên, bạn cần chọn nền tảng của mình. Nó có thể là bất kỳ container nào, nhưng trong trường hợp này, bạn có thể sử dụng Ubuntu làm nền tảng. Nếu bạn không chọn một phiên bản cụ thể, Docker sẽ mặc định là phiên bản mới nhất. Bạn cũng nên cung cấp thông tin chi tiết về người đã tạo image với tên đầy đủ và địa chỉ email. Đây là một ví dụ:

    Click image for larger version

Name:	Dockerfiles 01.jpg
Views:	44
Size:	9.0 KB
ID:	425612

    Tiếp theo, bạn cần xác định phần mềm bạn muốn tải và những thành phần nào cần được thêm vào. Cũng giống như khi tải phần mềm trên máy chủ Linux, trước tiên bạn cần chạy apt-get update. Đối với container này, bạn cài đặt nginx và bất kỳ phụ thuộc nào.

    Click image for larger version

Name:	Dockerfiles 02.jpg
Views:	39
Size:	8.1 KB
ID:	425613

    Bây giờ bạn cần cho Docker biết cổng nào bạn muốn expose cho mạng. Trong trường hợp này, bạn sẽ expose cổng 80 và 443:

    Click image for larger version

Name:	Dockerfiles 03.jpg
Views:	32
Size:	4.3 KB
ID:	425614

    Tiếp theo, bạn tạo một share point cho các file HTML trong nginx để bạn có thể cấp cho nó quyền truy cập vào các file web của mình:



    Cuối cùng, đặt container để chạy nginx khi khởi tạo:



    Giờ đây bạn đã có một Dockerfile, đây là thời điểm thích hợp để xây dựng một image.



    Docker Images

    Khi làm việc với các Docker image, bạn chủ yếu sử dụng những lệnh sau đây:
    • build: Xây dựng một image từ Dockerfile.
    • push: Đẩy image cục bộ vào remote registry để lưu trữ và chia sẻ.
    • ls: Liệt kê các image đượ lưu trữ cục bộ.
    • history: Hiện thị quá trình tạo và xây dựng của một image.
    • inspect: Cung cấp thông tin chi tiết về tất cả các khía cạnh của image, bao gồm cả chi tiết layer.
    • rm: Xóa một image khỏi bộ nhớ cục bộ.

    Trong ví dụ trước, bạn đã xây dựng một Dockerfile bằng cách sử dụng cơ sở Ubuntu mới nhất, sau đó cập nhật và nâng cấp cơ sở Ubuntu để các gói của nó được cập nhật. Sau đó, bạn đã cài đặt nginx, chia sẻ điểm gắn kết và tiếp xúc với các cổng để truy cập vào web server mới. Bước tiếp theo là bắt đầu quá trình xây dựng với Docker. Khi ở trong thư mục mà bạn đã tạo Dockerfile của mình, hãy thực hiện quá trình xây dựng như được hiển thị trong Ví dụ 13-6.

    Ví dụ 13-6 Xây dựng một Container từ một Dockerfile





    Việc xây dựng thành công. Bạn có thể thấy rằng với flag -t, bạn có thể đặt một cái tên có thể được sử dụng để gọi image dễ dàng hơn. Dấu . ở cuối lệnh cho Docker tìm kiếm Dockerfile trong thư mục cục bộ. Bạn cũng có thể sử dụng flag -f với đường dẫn đến vị trí của file Docker, nếu nó không có trong thư mục hiện tại của bạn. Docker cũng chấp nhận một URL đến Dockerfile, chẳng hạn như tại GitHub. Như được hiển thị trong ví dụ này, tên Dockerfile phải được viết hoa và viết liền.

    Khi một image được xây dựng, bạ có thể sử dụng docker image ls để thấy nó trong bộ nhớ cục bộ:



    Bạn có thể sử dụng một số lệnh để lấy thông tin từ image của mình. Đầu tiên là inspect. Nhập docker image inspect myimage, như được hiển thị trong ví dụ 13-7, sẽ nhận được tất cả các chi tiết về image, bao gồm cả cấu trúc layer của nó.

    Ví dụ 13-7 Lệnh docker image inspect





    Lệnh image history hiển thi cho bạn quá trình tạo image và tất cả các bước đã được thực hiện để xây dựng image, như được hiển thị trong Ví dụ 13-8. Điều này có thể rất hữu ích trong việc khắc phục sự cố xây dựng image

    Ví dụ 13-8 Lệnh docker image history





    Bạn có thể nhận thấy image ID bị thiếu ở cuối lịch sử. Quá trình xây dựng sử dụng một thứ gọi là các lớp trung gian để thực hiện các lệnh. Các layer này giống như bộ lưu trữ tạm thời được cuộn lại vào layer tiếp theo khi mỗi giai đoạn kết thúc, và sau đó lớp trung gian sẽ bị xóa.

    Khi image đã được xây dựng và sẵn sàng, bạn có thể chạy nó bằng cách sử dụng lệnh sau:



    Bạn có thể sử dụng lệnh docker image rm để xóa image khỏi bộ nhớ. Lệnh này cần ID container hoặc tên để chọn đúng container cần xóa.


Working...
X