Docker: Cách sử dụng nó một cách thực tế - Phần 3

theanh

Administrator
Nhân viên
Phần 3: Tạo Notepad với các container WordPress và DokuWiki

Lời nói đầu

Trong phần đầu tiên, chúng ta đã nói về cách các container docker hoạt động và khác biệt với các công nghệ ảo hóa phần mềm khác và trong phần thứ hai, chúng ta đã chuẩn bị hệ thống của mình để quản lý các container docker.

Trong phần này, chúng ta sẽ bắt đầu sử dụng các hình ảnh Docker và tạo các container theo cách thực tế. Nói cách khác, chúng ta sẽ tạo một notepad cá nhân nâng cao, chạy trên nền tảng web, chạy trên DokuWiki hoặc WordPress. Bạn có thể chọn bất kỳ tùy chọn nào mà bạn cảm thấy thoải mái.




Cách chạy một container Docker​

Trước tiên, chúng ta phải đảm bảo rằng docker engine đang hoạt động theo nhu cầu bằng cách tải xuống hình ảnh "Hello world" và tạo một container từ đó.

Hãy nhớ rằng, khi chúng ta nói về một hình ảnh, đó là trạng thái bị treo trong khi khi chúng ta nói về container, đó là một phiên bản thời gian chạy của một hình ảnh docker. Trong một phép loại suy, mà chúng ta đã nói ở phần trước, một hình ảnh docker giống như tệp ISO của bản phân phối Linux, trong khi container là phiên trực tiếp của tệp ISO như thể bạn đang chạy nó từ ổ USB.

Để tải xuống và chạy hình ảnh "Hello world", chỉ cần nhập vào terminal
Mã:
sudo docker run hello-world
Lệnh này tải xuống hình ảnh Hello World và chạy nó trong một container. Khi container chạy, nó sẽ in ra một thông báo thông tin và sau đó, nó thoát (tức là nó tắt).



Làm thế nào để chúng ta kiểm tra có bao nhiêu hình ảnh trong hệ thống của mình? Vâng, chúng ta chỉ cần chạy
Mã:
sudo docker images


Bạn có thể tự hỏi, hệ thống của tôi tìm thấy hình ảnh Hello World này như thế nào và nó đến từ đâu? Vâng, đây là nơi mà docker hub phát huy tác dụng.


Giới thiệu về Docker Hub​

Docker Hub 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 đó.
Cụ thể, Docker Hub cung cấp một số tính năng và chức năng hữu ích mà chúng ta sẽ thảo luận thêm trong các phần sau.

Hiện tại, chúng ta sẽ tập trung vào một tính năng và đó là tìm và tải xuống hình ảnh docker.


Tìm kiếm hình ảnh Docker​

Bạn có thể tìm kiếm "hình ảnh docker sẵn sàng để tải xuống và chạy" chỉ bằng cách truy cập vào docker hub trực tuyến hoặc bằng cách sử dụng thiết bị đầu cuối. Lưu ý rằng bạn không thể tải xuống hình ảnh docker từ web hub nhưng bạn có thể tìm hiểu thêm về hình ảnh, chẳng hạn như cách xây dựng và duy trì hình ảnh đó, v.v.

Vì vậy, đối với mục đích của phần này, chúng ta sẽ tập trung vào cách sử dụng thiết bị đầu cuối. Hãy tìm kiếm WordPress
Mã:
sudo docker search wordpress


Như bạn thấy, có rất nhiều hình ảnh docker WordPress được xây dựng bằng nhiều sự kết hợp khác nhau (ví dụ: có hoặc không có cơ sở dữ liệu), chúng được đánh giá bằng các ngôi sao phổ biến và chúng là chính thức (do công ty docker duy trì) hoặc tự động (do cá nhân xây dựng và duy trì). Rõ ràng là bất kỳ ai cũng có thể tạo tài khoản và tải lên hình ảnh docker tùy chỉnh của mình và chúng ta sẽ thảo luận về điều này ở phần sau.


Tải xuống hình ảnh Docker​

Với mục đích của bài viết này, chúng tôi sẽ sử dụng hình ảnh docker mới nhất của bitnamis, có cài đặt sẵn MySQL. Vậy hãy tải xuống:
Mã:
sudo docker pull bitnami/wordpress:latest
Sau khi bạn chạy lệnh trên, nó sẽ giao tiếp với docker hub, hỏi xem có kho lưu trữ nào có tên là "bitnami" không, sau đó hỏi xem có bản dựng "WordPress" nào được gắn thẻ là phiên bản "mới nhất" không.



Hiện tại, chúng tôi đã tải xuống một hình ảnh WordPress và không có gì khác. Bây giờ, chúng tôi có thể tiến hành bằng cách tải xuống Hình ảnh DokuWiki bằng cách tìm kiếm một hình ảnh và chọn hình ảnh mà chúng tôi thích hoặc sử dụng hình ảnh như sau
Mã:
sudo docker pull mprasil/dokuwiki

Kiến trúc Hình ảnh Docker​

Trong khi chờ quy trình tải xuống hoàn tất, bạn có thể thấy rằng hình ảnh docker là hình ảnh nhiều lớp nằm trên hình ảnh cơ sở. Bạn có thể thấy từng lớp được tải xuống và sau đó "thần kỳ" được hợp nhất. Sơ đồ bên dưới hiển thị một hình ảnh cơ sở của Ubuntu bao gồm 4 lớp hình ảnh xếp chồng lên nhau.



Như bạn có thể tưởng tượng, mỗi Docker Image tham chiếu đến một danh sách các lớp chỉ đọc biểu diễn sự khác biệt của hệ thống tệp. Khi bạn tạo một container mới, từ một Docker Image như chúng ta sẽ làm sau này, bạn thêm một lớp mỏng, có thể ghi mới lên trên cùng của ngăn xếp bên dưới. Tất cả các thay đổi được thực hiện đối với container đang chạy - chẳng hạn như ghi tệp mới, sửa đổi tệp hiện có và xóa tệp - đều được ghi vào lớp container mỏng có thể ghi này. Sơ đồ bên dưới hiển thị một container dựa trên hình ảnh Ubuntu 15.04.



Xóa Docker Image​

Bây giờ nếu bạn kiểm tra xem có bao nhiêu hình ảnh trên hệ thống của mình
Mã:
sudo docker images
bạn sẽ thấy WordPress, DokuWiki và Hello World. Nếu vì lý do nào đó bạn muốn xóa và gỡ bỏ (rmi) một hình ảnh, bạn chỉ cần nhập
Mã:
sudo docker rmi
trong đó tên của hình ảnh là tên của docker khi nó được hiển thị bằng lệnh "docker images". Ví dụ, nếu chúng ta muốn xóa Hello World, chúng ta chỉ cần nhập:
Mã:
sudo docker rmi hello-world

Các container là tạm thời​

Theo thiết kế, các container Docker là tạm thời. Theo "tạm thời", chúng tôi muốn nói rằng một container có thể bị dừng và hủy và một container mới có thể được xây dựng từ cùng một hình ảnh Docker và đưa vào vị trí với mức thiết lập và cấu hình tối thiểu tuyệt đối.

Do đó, bạn nên nhớ rằng khi chúng tôi tạo một container từ Docker Image theo sở thích của bạn (WordPress hoặc DokuWiki), bất kỳ thay đổi nào bạn thực hiện, ví dụ: việc thêm bài đăng, hình ảnh sẽ bị mất khi bạn dừng hoặc xóa vùng chứa. Nói cách khác, khi một vùng chứa bị xóa, mọi dữ liệu được ghi vào vùng chứa mà không được lưu trữ trong một ổ đĩa dữ liệu sẽ bị xóa cùng với vùng chứa.

Ổ đĩa dữ liệu là một thư mục hoặc tệp trong hệ thống tệp của máy chủ Docker được gắn trực tiếp vào vùng chứa. Theo cách này, bạn có thể hoán đổi các vùng chứa với các vùng chứa mới và giữ mọi dữ liệu an toàn trong thư mục trang chủ của người dùng. Lưu ý rằng, bạn có thể gắn bất kỳ số lượng ổ đĩa dữ liệu nào vào một vùng chứa. Ngay cả nhiều vùng chứa cũng có thể chia sẻ một hoặc nhiều ổ đĩa dữ liệu.

Sơ đồ bên dưới hiển thị một máy chủ Docker duy nhất (ví dụ: Ubuntu 15.10 của bạn) đang chạy hai vùng chứa. Như bạn có thể thấy, cũng có một ổ đĩa dữ liệu được chia sẻ duy nhất nằm tại /data trên máy chủ Docker. Tính năng này được gắn trực tiếp vào cả hai container.



Theo cách này, khi một container bị xóa, mọi dữ liệu được lưu trữ trong các ổ đĩa dữ liệu sẽ vẫn tồn tại trên máy chủ Docker và có thể được gắn vào một container mới.


Mạng container Docker​

Khi bạn cài đặt Docker, nó sẽ tạo một thiết bị mạng trong hệ thống của bạn. Bạn có thể xem nó (sẽ được đặt tên là docker0) như một phần của ngăn xếp mạng của máy chủ bằng cách sử dụng lệnh `ifconfig` trên hệ thống máy chủ của bạn.

Điều quan trọng là phải hiểu rằng các vùng chứa Docker bị cô lập và chúng là các dịch vụ vi mô riêng lẻ có các thuộc tính mạng riêng và cách chúng ta chạy chúng và kết nối với chúng là bằng cách ánh xạ số cổng của chúng với số cổng của hệ thống máy chủ.

Bằng cách này, chúng ta có thể hiển thị dịch vụ web mà vùng chứa chạy tới hệ thống máy chủ.


Tạo sổ ghi chép cá nhân bằng vùng chứa WordPress​

Chúng ta hãy bắt đầu tạo sổ ghi chép thử nghiệm của mình. Đầu tiên, chúng ta sẽ sử dụng hình ảnh WordPress để tạo một container Docker
Mã:
sudo docker run --name=mynotepad -p 80:80 -p 443:443 bitnami/wordpress
Với lệnh trên, chúng ta đã yêu cầu dịch vụ Docker trong hệ thống máy chủ của mình tạo và chạy (docker run) một container có tên `mynotepad` (--name=mynotepad), ánh xạ cổng HTTP và HTTPS của máy chủ và container ( -p 80:80 -p 443:443 ) và sử dụng hình ảnh WordPress ( bitnami/wordpress )



Sau khi container được khởi tạo, bạn sẽ thấy một số thông tin về container. Đã đến lúc khởi chạy trình duyệt và trỏ đến http://localhost

Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy trang web WordPress mặc định



Như bạn có thể đã biết để đăng nhập vào trang quản trị WordPress, chỉ cần truy cập http://localhost/login và sử dụng thông tin đăng nhập mặc định là user / bitnami. Sau đó, bạn có thể tạo một người dùng mới hoặc một bài đăng thử nghiệm trong WordPress và xuất bản nó. Bạn có thể xem bài đăng thử nghiệm của tôi trong hình ảnh bên dưới



Chúng ta hãy quay lại terminal. Như bạn thấy terminal của bạn hiện đang liên kết với container đang chạy. Bạn có thể sử dụng Ctrl+C để thoát. Thao tác này cũng sẽ dừng container.

Bây giờ chúng ta hãy kiểm tra các container khả dụng của mình. Bạn có thể chạy lệnh sau:
Mã:
sudo docker ps -l
để xem container mà chúng ta đã tạo và chạy trước đó.

Như bạn thấy từ hình ảnh trên, có một số thông tin quan trọng như tên container và ID duy nhất của container. Bằng cách này, chúng ta có thể khởi động lại container:
Mã:
docker start mynotepad
Sau đó, bạn có thể kiểm tra các tiến trình mà container docker chạy bằng lệnh sau:
Mã:
sudo docker top mynotepad
Theo mặc định, với lệnh `docker start mynotepad`, container docker sẽ chạy ở chế độ nền. Để dừng nó, bạn có thể chạy lệnh sau
Mã:
sudo docker stop mynotepad
Bạn có thể đọc thêm về cách tương tác với container trong tài liệu chính thức của docker https://docs.docker.com/engine/userguide/containers/usingdocker/

Các container ở đâu

Nếu bạn muốn xem các container nằm ở đâu trên hệ thống tệp hosts, bạn có thể truy cập /var/lib/docker
Mã:
sudo cd /var/lib/docker
sudo ls
sudo cd containers
sudo cd ID
sudo ls
Như bạn có thể thấy, các số ID biểu thị các container thực tế mà bạn đã tạo.


Tạo bộ lưu trữ liên tục​

Chúng ta hãy tạo một container WordPress mới, nhưng lần này, sẽ đặt nó ở chế độ nền và cũng hiển thị thư mục WordPress cho hệ thống máy chủ để chúng ta có thể đặt các tệp vào đó hoặc xóa bất kỳ tệp nào mà chúng ta không muốn.

Đầu tiên, chúng ta tạo một thư mục trong thư mục gốc của mình
Mã:
mkdir ~/wordpress-files
sau đó chạy và tạo một vùng chứa dựa trên cùng một hình ảnh mà chúng ta đã tạo trước đó:
Mã:
sudo docker run -d -ti --name=mynotepad-v2 -v ~/wordpress-files:/opt/bitnami/apps -e USER_UID=`id -u` -p 80:80 bitnami/wordpress


Sự khác biệt lần này là chúng ta đã sử dụng tham số -d cho chế độ tách rời và tham số -ti để đính kèm một thiết bị đầu cuối ở chế độ tương tác để tôi có thể tương tác với nó sau này.

Để kiểm tra vùng chứa đang chạy, chỉ cần chạy lệnh sau
Mã:
sudo docker ps


Dừng container
Mã:
sudo docker stop mynotepad-v2
Bây giờ nếu bạn chạy lệnh `docker ps`, bạn sẽ không thấy gì ở đó.
Hãy bắt đầu lại bằng lệnh sau:
Mã:
sudo docker start mynotepad-v2
Nếu bạn kiểm tra thư mục chúng ta đã tạo trước đó, bạn sẽ thấy cài đặt WordPress



Bạn có thể đọc thêm về hình ảnh chúng tôi đã sử dụng tại trung tâm docker https://hub.docker.com/r/bitnami/wordpress/


Tạo sổ ghi chép cá nhân bằng vùng chứa DokuWiki​

Lần này, chúng ta sẽ tạo sổ ghi chép bằng DokuWiki. Vì chúng ta đã tải xuống hình ảnh trước đó, việc duy nhất còn lại cần làm là tạo một vùng chứa từ hình ảnh đó.

Vậy hãy chạy lệnh sau để tạo vùng chứa có tên `mywikipad` của chúng ta
Mã:
docker run -d -p 80:80 --name mywikipad mprasil/dokuwiki
Sau đó, hãy vào trình duyệt và thêm địa chỉ sau để bắt đầu cấu hình sổ tay wiki của bạn:
Mã:
http://localhost/install.php
Bạn có thể tìm hiểu thêm về DokuWiki từ tài liệu chính thức và tùy chỉnh wiki theo nhu cầu của mình:
Mã:
https://www.dokuwiki.org/manual



Xóa vùng chứa Docker​

Khi bạn đã quen với việc tạo, khởi động và dừng vùng chứa docker, bạn sẽ thấy mình cần phải dọn dẹp mớ hỗn độn thử nghiệm do nhiều container tạo ra.

Để xóa một container trước tiên, bạn sẽ cần dừng nó và sau đó xóa nó bằng cách chạy lệnh sau:
Mã:
docker rm
Bạn cũng có thể thêm nhiều ID trong cùng một lệnh `docker rm` để xóa nhiều container docker cùng một lúc.


Tóm tắt​

Trong phần này, chúng ta đã học cách tạo một container và sử dụng nó một cách thực tế để tạo một sổ ghi chép cá nhân dựa trên WordPress hoặc DokuWiki. Chúng ta đã xem xét một số lệnh cơ bản về cách bắt đầu và dừng các container mà chúng ta tạo và cách xóa hình ảnh và container.

Trong phần tiếp theo, chúng ta sẽ xem xét cách tạo hình ảnh docker bằng cách tự tạo hình ảnh của riêng chúng ta.
 
Back
Bên trên