Trong phần đầu tiên và phần thứ hai, chúng tôi đã đề cập đến những điều cơ bản về việc chạy một container bằng cách chuẩn bị hệ thống của chúng tôi để quản lý các container docker và ý nghĩa chính xác của việc sử dụng một container docker so với các công nghệ ảo hóa khác theo góc độ kỹ thuật. Sau đó, trong phần thứ ba, chúng tôi đã thực hành với các hình ảnh docker, tìm hiểu những điều cơ bản và tạo ra container Notepad đầu tiên của chúng tôi bằng WordPress hoặc DokuWiki.
Trong phần thứ tư này, chúng ta sẽ xem cách các hình ảnh docker được xây dựng và chúng ta sẽ tạo ra hình ảnh tùy chỉnh của riêng mình, sẵn sàng để tải xuống và chia sẻ với bạn bè, đồng nghiệp và cộng đồng của chúng ta.
Đối với hướng dẫn này, chúng ta sẽ sử dụng hình ảnh Whale Docker. Cá voi là linh vật chính thức của Docker và hình ảnh docker Whale giống với chương trình cowsay tạo ra hình ảnh ASCII của một con bò trong thiết bị đầu cuối với một thông điệp. Nó cũng có thể tạo ra hình ảnh bằng cách sử dụng hình ảnh được tạo sẵn của các loài động vật khác, chẳng hạn như Tux the Penguin và linh vật Linux.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22550%22%20height=%22131%22%3E%3C/svg%3E
Để tạo một hình ảnh tùy chỉnh bằng cách sử dụng một hình ảnh cơ sở, chúng ta cần cung cấp cho công cụ docker các hướng dẫn về cách cài đặt và cấu hình các gói và tệp cũng như một số cài đặt đi kèm. Các hướng dẫn này được viết trong một tệp văn bản thuần túy có tên là "dockerfile". Dockerfile giống như công thức nấu ăn mà bạn giao cho đầu bếp và người đó sẽ nấu cho bạn một bữa ăn tuyệt vời. Các tệp docker này được viết bằng một tập hợp các bước mô tả đơn giản được gọi là "hướng dẫn". Mỗi hướng dẫn sẽ tạo một lớp mới trong hình ảnh của chúng ta. Các hướng dẫn bao gồm các hành động như chạy lệnh, thêm tệp hoặc thư mục, quy trình nào sẽ chạy khi khởi chạy một vùng chứa từ hình ảnh, v.v. Quy trình này giống như bạn sẽ thiết lập một loạt lệnh trong một tập lệnh shell. Khi bạn yêu cầu xây dựng một hình ảnh, Docker sẽ đọc dockerfile thực thi các hướng dẫn và trả về một hình ảnh cuối cùng.
Trước tiên, hãy khởi động một thiết bị đầu cuối và tạo một thư mục mới bằng cách nhập:
Thư mục này đóng vai trò là "bối cảnh" cho bản dựng của bạn. Ngữ cảnh chỉ có nghĩa là nó chứa tất cả những thứ bạn cần để xây dựng thành công hình ảnh của mình.
Vào bên trong thư mục mới của bạn bằng:
và tạo Dockerfile trong thư mục bằng cách nhập:
Bây giờ bạn sẽ thấy Dockerfile trống mà chúng ta đã tạo nếu bạn nhập 'll' lệnh:
Mở nó bằng trình soạn thảo văn bản yêu thích của bạn và add:
Dòng lệnh đầu tiên này, với từ khóa FROM, cho Docker biết ảnh nào ảnh của bạn dựa trên. Bạn đang dựa công việc mới của mình trên ảnh whalesay hiện có.
Lệnh tiếp theo mà chúng ta sẽ thêm vào sẽ cung cấp cho cá voi của chúng ta khả năng bói toán. Để hoàn thành nhiệm vụ này, chúng ta sẽ sử dụng gói fortune có sẵn trong kho lưu trữ Ubuntu (hãy nhớ rằng ảnh whale dựa trên ảnh Ubuntu). Chương trình fortunes có lệnh in ra những câu nói khôn ngoan để cá voi của chúng ta nói.
Vì vậy, bước đầu tiên là cài đặt nó. Để thực hiện việc này, chúng ta thêm lệnh cài đặt apt thông thường:
Khi hình ảnh có phần mềm cần thiết, bạn hướng dẫn phần mềm chạy khi hình ảnh được tải. Để thực hiện việc này, chúng ta thêm lệnh sau:
Dòng trên yêu cầu chương trình bói toán gửi một câu trích dẫn được chọn ngẫu nhiên đến chương trình cowsay
Và chúng ta đã hoàn thành! Bây giờ hãy lưu tệp và thoát.
Bạn có thể xác minh những gì mình đã làm bằng cách chạy "cat Dockerfile" để Dockerfile của bạn trông như thế này:
Bây giờ mọi thứ (hy vọng) trông ổn, đã đến lúc xây dựng Docker Image của chúng ta (đừng quên dấu chấm . ở cuối và cuối lệnh).:
Lệnh trên sẽ lấy Dockerfile trong thư mục hiện tại và xây dựng một hình ảnh có tên là “my-docker-whale” trên máy cục bộ của bạn.
Bạn có thể xác minh rằng hình ảnh Docker của bạn thực sự được lưu trữ trên máy tính của bạn bằng:
Sau đó, bạn có thể chạy hình ảnh Docker của mình bằng cách nhập sau:
Sau khi chạy, bạn sẽ nhận được hình ảnh tương tự như sau
Để thực hiện việc này, bạn sẽ cần ID và TAG của hình ảnh “my-docker-whale” của mình.
Chạy lại lệnh "docker images" và ghi lại ID và TAG của hình ảnh Docker của bạn, ví dụ: a69f3f5e1a31.
Bây giờ, với lệnh sau, chúng ta sẽ chuẩn bị Docker Image cho hành trình của nó ra thế giới bên ngoài (phần tên tài khoản của lệnh là tên tài khoản của bạn trên trang hồ sơ Docker Hube):
Chạy lệnh "docker images" và xác minh hình ảnh mới được gắn thẻ của bạn.
Tiếp theo, sử dụng lệnh "docker login" để đăng nhập vào Docker Hub từ dòng lệnh.
Định dạng cho lệnh đăng nhập là:
Khi được nhắc, hãy nhập mật khẩu của bạn và nhấn enter.
Bây giờ bạn có thể đẩy hình ảnh của mình vào kho lưu trữ mới tạo:
Lệnh trên có thể mất một lúc để hoàn tất tùy thuộc vào băng thông tải lên của kết nối của bạn vì nó tải lên khoảng 180ΜΒ dữ liệu (trong ví dụ của chúng tôi). Sau khi hoàn tất, bạn có thể vào hồ sơ của mình trên Docker Hub và kiểm tra hình ảnh mới.
Như bạn đã nhớ từ phần trước, để xóa hình ảnh docker, bạn phải chạy lệnh "docker rmi". Bạn có thể sử dụng ID hoặc tên để xóa hình ảnh:
Bây giờ hình ảnh đã bị xóa, bạn có thể kéo và tải hình ảnh từ kho lưu trữ của mình bằng lệnh "docker run" bằng cách bao gồm tên tài khoản của bạn từ Docker Hub.
Vì chúng ta đã xóa hình ảnh trước đó và nó không còn khả dụng trên hệ thống cục bộ của chúng ta nữa, Docker sẽ tải xuống hình ảnh đó và lưu trữ nó ở vị trí được chỉ định.
Trong phần thứ tư này, chúng ta sẽ xem cách các hình ảnh docker được xây dựng và chúng ta sẽ tạo ra hình ảnh tùy chỉnh của riêng mình, sẵn sàng để tải xuống và chia sẻ với bạn bè, đồng nghiệp và cộng đồng của chúng ta.
Đối với hướng dẫn này, chúng ta sẽ sử dụng hình ảnh Whale Docker. Cá voi là linh vật chính thức của Docker và hình ảnh docker Whale giống với chương trình cowsay tạo ra hình ảnh ASCII của một con bò trong thiết bị đầu cuối với một thông điệp. Nó cũng có thể tạo ra hình ảnh bằng cách sử dụng hình ảnh được tạo sẵn của các loài động vật khác, chẳng hạn như Tux the Penguin và linh vật Linux.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22550%22%20height=%22131%22%3E%3C/svg%3E
Giới thiệu về Docker Files
Trong phần trước, chúng ta đã giới thiệu về Docker Hub và biết rằng đây là một tài nguyên tập trung dựa trên đám mây để khám phá hình ảnh container, xây dựng hình ảnh và phân phối các hình ảnh đó. Chúng ta cũng đã biết rằng một hình ảnh docker là một hình ảnh nhiều lớp nằm trên một hình ảnh cơ sở. Điều đó có nghĩa là, sử dụng một hình ảnh cơ sở sẽ loại bỏ sự phiền phức khi phải tạo từ đầu một hệ điều hành phù hợp cho hình ảnh docker và cung cấp cho chúng ta tùy chọn tùy chỉnh các lớp trên cùng nơi phần mềm của chúng ta sẽ lưu trú.Để tạo một hình ảnh tùy chỉnh bằng cách sử dụng một hình ảnh cơ sở, chúng ta cần cung cấp cho công cụ docker các hướng dẫn về cách cài đặt và cấu hình các gói và tệp cũng như một số cài đặt đi kèm. Các hướng dẫn này được viết trong một tệp văn bản thuần túy có tên là "dockerfile". Dockerfile giống như công thức nấu ăn mà bạn giao cho đầu bếp và người đó sẽ nấu cho bạn một bữa ăn tuyệt vời. Các tệp docker này được viết bằng một tập hợp các bước mô tả đơn giản được gọi là "hướng dẫn". Mỗi hướng dẫn sẽ tạo một lớp mới trong hình ảnh của chúng ta. Các hướng dẫn bao gồm các hành động như chạy lệnh, thêm tệp hoặc thư mục, quy trình nào sẽ chạy khi khởi chạy một vùng chứa từ hình ảnh, v.v. Quy trình này giống như bạn sẽ thiết lập một loạt lệnh trong một tập lệnh shell. Khi bạn yêu cầu xây dựng một hình ảnh, Docker sẽ đọc dockerfile thực thi các hướng dẫn và trả về một hình ảnh cuối cùng.
Xây dựng một hình ảnh Docker
Có hai cách để xây dựng hình ảnh Docker tùy chỉnh của bạn. Bạn có thể xây dựng nó trên máy tính của mình hoặc bạn có thể sử dụng Docker Hub mà chúng ta đã nói đến trước đó. Trong phần này, chúng ta sẽ tìm hiểu cách xây dựng Docker image cục bộ và sau đó xuất bản nó trên Docker Hub Registry.Xây dựng cục bộ bằng Dockerfile
Chúng ta sẽ tạo một Docker Image tùy chỉnh bằng cách sử dụng hình ảnh "Whale say ", đây là một Docker Image nhỏ (dựa trên Ubuntu Image) mà khi bạn chạy nó, nó sẽ nói điều gì đó mà bạn đã lập trình để nói lại với bạn.Trước tiên, hãy khởi động một thiết bị đầu cuối và tạo một thư mục mới bằng cách nhập:
Mã:
mkdir mywhale
Vào bên trong thư mục mới của bạn bằng:
Mã:
cd mywhale
Mã:
touch Dockerfile
Mã:
ll
Mã:
$ ll
total 8.0K
-rw-rw-r-- 1 user user 0 23:26 Dockerfile
Mã:
FROM docker/whalesay:latest
Lệnh tiếp theo mà chúng ta sẽ thêm vào sẽ cung cấp cho cá voi của chúng ta khả năng bói toán. Để hoàn thành nhiệm vụ này, chúng ta sẽ sử dụng gói fortune có sẵn trong kho lưu trữ Ubuntu (hãy nhớ rằng ảnh whale dựa trên ảnh Ubuntu). Chương trình fortunes có lệnh in ra những câu nói khôn ngoan để cá voi của chúng ta nói.
Vì vậy, bước đầu tiên là cài đặt nó. Để thực hiện việc này, chúng ta thêm lệnh cài đặt apt thông thường:
Mã:
RUN apt -y update && apt -y install fortunes
Mã:
CMD /usr/games/fortune -a | cowsay
Và chúng ta đã hoàn thành! Bây giờ hãy lưu tệp và thoát.
Bạn có thể xác minh những gì mình đã làm bằng cách chạy "cat Dockerfile" để Dockerfile của bạn trông như thế này:
Mã:
cat Dockerfile
Mã:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
Mã:
docker build -t my-docker-whale .
Bạn có thể xác minh rằng hình ảnh Docker của bạn thực sự được lưu trữ trên máy tính của bạn bằng:
Mã:
docker images
Mã:
docker run my-docker-whale
Xuất bản hình ảnh Docker tùy chỉnh của bạn trên Docker Hub
Tùy chọn tiếp theo của bạn là xuất bản hình ảnh Docker đã tạo trên Kho lưu trữ Docker Hub. Để thực hiện việc này, bạn sẽ cần tạo một tài khoản trên trang web đăng ký Docker Hub, tại đó bạn sẽ cung cấp tên, mật khẩu và địa chỉ email cho tài khoản của mình. Tôi cũng xin lưu ý rằng dịch vụ Docker Hub miễn phí cho các hình ảnh docker công khai. Sau khi tạo tài khoản, bạn có thể đẩy hình ảnh đã tạo trước đó để người khác có thể sử dụng.Để thực hiện việc này, bạn sẽ cần ID và TAG của hình ảnh “my-docker-whale” của mình.
Chạy lại lệnh "docker images" và ghi lại ID và TAG của hình ảnh Docker của bạn, ví dụ: a69f3f5e1a31.
Bây giờ, với lệnh sau, chúng ta sẽ chuẩn bị Docker Image cho hành trình của nó ra thế giới bên ngoài (phần tên tài khoản của lệnh là tên tài khoản của bạn trên trang hồ sơ Docker Hube):
Mã:
docker tag a69f3f5e1a31 accountname/my-docker-whale:latest
Tiếp theo, sử dụng lệnh "docker login" để đăng nhập vào Docker Hub từ dòng lệnh.
Định dạng cho lệnh đăng nhập là:
Mã:
docker login --username=yourhubusername [emailprotected]
Bây giờ bạn có thể đẩy hình ảnh của mình vào kho lưu trữ mới tạo:
Mã:
docker push accountname/my-docker-whale
Tải xuống Hình ảnh tùy chỉnh của bạn
Nếu bạn muốn kéo hình ảnh của mình từ kho lưu trữ Docker Hub, trước tiên bạn cần xóa hình ảnh gốc khỏi máy cục bộ vì Docker sẽ từ chối kéo từ hub vì hình ảnh cục bộ và hình ảnh từ xa giống hệt nhau.Như bạn đã nhớ từ phần trước, để xóa hình ảnh docker, bạn phải chạy lệnh "docker rmi". Bạn có thể sử dụng ID hoặc tên để xóa hình ảnh:
Mã:
docker rmi -f a69f3f5e1a31
Mã:
docker run accountname/my-docker-whale