Docker, một công cụ không thể thiếu trong thế giới phát triển phần mềm hiện đại, đã mở ra một chương mới trong việc triển khai và quản lý ứng dụng. Trong thời đại công nghệ thông tin phát triển với tốc độ chóng mặt, Docker xuất hiện như một giải pháp tối ưu cho việc tạo, triển khai và chạy các ứng dụng một cách nhất quán và hiệu quả. Vietnix sẽ cùng bạn tìm hiểu về Docker qua bài viết sau
Docker là một dự án mã nguồn mở giúp cung cấp cách để building, deploying và running ứng dụng dễ dàng hơn bằng cách sử dụng các container (trên nền tảng ảo hóa). Ban đầu Docker viết bằng Python, nhưng hiện tại đã chuyển sang Golang.
Định nghĩa docker là gì
Docker cung cấp một cách tiện lợi để xây dựng, chia sẻ và triển khai ứng dụng trên nhiều môi trường khác nhau, từ máy cục bộ đến các môi trường điều tiết sản xuất. Docker còn giúp giảm thiểu sự phức tạp trong quá trình triển khai ứng dụng, tối ưu hóa tài nguyên và tăng tính di động của ứng dụng.
Docker là gì?
Một số khái niệm quan trọng liên quan đến Docker bao gồm hình ảnh (images), container, Dockerfile và Docker Hub. Hình ảnh là một môi trường chạy được đóng gói cùng với ứng dụng và các phụ thuộc. Container là một thực thể chạy dựa trên hình ảnh. Dockerfile là một tập tin cấu hình sử dụng để tạo hình ảnh Docker. Docker Hub là một kho lưu trữ trực tuyến cho việc chia sẻ và quản lý các hình ảnh Docker.
Trong Docker, container là một đơn vị cô lập chứa đựng ứng dụng và môi trường chạy của nó. Containers cung cấp một cách đóng gói ứng dụng và tất cả các phụ thuộc của nó vào một đơn vị tiêu chuẩn hóa, giúp đảm bảo rằng ứng dụng có thể chạy một cách nhất quán trên mọi môi trường.
Container trong Docker là gì?
Docker cho phép các lập trình viên đóng gói các ứng dụng cần thiết vào trong container, như thư viện, gói dưới dạng package. Nhờ vào container, ứng dụng sẽ chạy trên mọi máy Linux bất kể mọi tùy chỉnh và cài đặt khác với máy dùng để viết code.
Container trong Docker
Docker khá giống với Virtual Machine, nhưng Docker phát triển mạnh mẽ và phổ biến nhanh chóng hơn. Dưới đây là một số nguyên nhân:
Docker được tạo ra từ ông Solomon Hykes khi còn đang làm việc trong một dự án nội bộ của dotCloud ở Pháp. Đến đầu năm 2013, Docker được phát hành dạng mã nguồn mở và sau đó đến năm 2015, Docker trở thành top 20 dự án có số sao đánh giá cao nhất trên GitHub với hơn 6,800 fork và 11,00 lập trình viên.
Quá trình Docker phát triển từ 2004
Việc setup và deploy application trên một hoặc nhiều máy chủ là một quá trình phức tạp và tốn nhiều công sức. Bao gồm việc cài đặt các công cụ và môi trường cần thiết cho ứng dụng, sau đó cố gắng đảm bảo ứng dụng chạy đúng cách trên từng máy chủ riêng biệt. Vấn đề khó khăn thêm nữa là sự không đồng nhất giữa các môi trường trên các máy chủ khác nhau. Để giải quyết những thách thức này, Docker ra đời như một giải pháp hiệu quả.
Tại sao nên sử dụng Docker?
Sử dụng Docker giúp người dùng chuyển phần mềm nhanh hơn gấp 7 lần so với việc không sử dụng Docker. Docker mang lại khả năng vận chuyển các dịch vụ riêng lẻ với tần suất linh hoạt theo mong muốn.
Ứng dụng được đóng gói vào các Container nhỏ. Điều này giúp đơn giản hóa việc triển khai, phát hiện và khắc phục vấn đề, tạo điều kiện thuận lợi cho quá trình quản lý ứng dụng.
Điểm đáng chú ý của Docker là khả năng mượt mà di chuyển ứng dụng từ môi trường phát triển cục bộ đến việc triển khai sản phẩm với hiệu suất cao.
Sử dụng Docker Container giúp thực hiện một số code khác nhau trên cùng một máy chủ một cách thuận tiện hơn, từ đó tăng khả năng tận dụng tài nguyên và giúp tiết kiệm chi phí.
Lợi ích khi sử dụng Docker
Về cách thức hoạt động của docker thì nó hoạt động bằng cách cung cấp phương thức tiêu chuẩn để chạy mã. Như cách máy ảo – ảo hóa (loại bỏ nhu cầu quản lý trực tiếp) phần cứng của máy chủ, các container sẽ ảo hóa hệ điều hành của máy chủ. Docker được cài đặt trên từng máy chủ và cung cấp các lệnh cơ bản để bạn có thể build, khởi tạo và dừng container.
Cách thức hoạt động của Docker
Còn để hiểu về cơ chế hoạt động của Docker khá là phức tạp. Ở đây, Vietnix sẽ tóm gọn lại cho bạn dễ hiểu về hoạt động của Docker thông qua một Docker engine và kết hợp với 2 yếu tố sau:
Nếu bạn đang sử dụng hệ điều hành Windows/Mac cũ, bạn có thể tận dụng Docker toolbox, vì cho phép bạn điều kiển docker engine với Docker Compose và Kitematic.
Xem thêm: NGINX là gì? Giới thiệu tổng quan về Máy Chủ Web NGINX
Như vậy là bạn được Docker là gì và lý do tại sao cần sử dụng Docker. Tuy nhiên để không gặp khó khăn khi bắt đầu sử dụng Docker bạn sẽ cần nắm rõ các công cụ và thuật ngữ kỹ thuật của nó.
Tìm hiểu các khái niệm về Docker cơ bản
Một số công cụ và thuật ngữ công nghệ bạn sẽ gặp phải khi sử dụng Docker bao gồm:
DockerFile
Docker container
Docker Hub
Xem thêm: Top 12 loại ngôn ngữ lập trình phổ biến nhất hiện nay
Thường, để triển khai hệ thống Docker, phải tuân theo ba bước cơ bản: Build, Push và Pull, Run.
3 bước thực thi Docker
Trong những trường hợp sau đây bạn có thể sử dụng Docker hiệu quả:
Xem thêm: Tổng hợp 14 lỗi thường gặp ở server và cách khắc phục nhanh chóng, đơn giản
Khi nào thì nên sử dụng Docker?
Tải bộ cài tại Docker Desktop for Mac, cài đặt đơn giản như các công cụ thông thường.
Cài Docker trên macOS
Tải bộ cài tại Docker Desktop for Windows, tiến hành cài đặt. Đối với Windows phải kích hoạt chế độ Hyper-V virtualization
(Ở chế độ này bạn không dùng được VirtualBox nữa).
Nếu chưa kích hoạt Hyper-V
thì kích hoạt theo hướng dẫn Enable Hyper-V
Chạy lệnh PowerShell sau để kích hoạt:Copy
1 |
|
Kích hoạt thông qua thiết lập Windows
Cài Docker trên Windows 10
Chạy các lệnh để cài đặt:Copy
1 2 3 4 5 6 7 8 |
|
Cài Docker trên Ubuntu
Sau khi cài đặt, bạn có thể cho user hiện tại thuộc group docker, để khi gõ lệnh không cần xin quyền sudo
Copy
1 |
|
Logout sau đó login lại để có hiệu lực.
Ngoài ra khi sử dụng đến thành phần docker-compose
thì bạn cài thêmCopy
1 |
|
Nếu có nhu cầu sử dụng Docker Machine trên Ubuntu, (công cụ tạo – quản lý các máy ảo chạy Docker Engine, các máy ảo này tạo bởi VirtualBox, bạn sử dụng Docker-machine để thực hành các ví dụ kết nối nhiều máy chạy Docker Engine khác nhau tạo thành cụm Server), thì cài thêm Docker Machine. Phiên bản mới nhất lấy tại Docker Machine.
Ví dụ cài bản v0.16.1, gõ lệnh sau:Copy
1 2 3 |
|
Tất nhiên là Docker Machine cần VirtualBox để làm việc, nếu chưa có thì cài thêmCopy
1 |
|
Copy
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Cài Docker trên CentOS7-RHEL7
Copy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Khi đã có Docker trên máy, làm việc với Docker để quan lý các thành phần của nó … hầu hết làm việc qua giao diện dòng lệnh CLI của hệ thống: trên macOS/Linux mở termial
để gõ lệnh, trên Windows thì nên dùng PS (PowerShell
) để chạy các lệnh Docker.
Cài Docker trên CentOS8/RHEL8
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Copy
1 |
|
Docker là gì? Tổng hợp các kiến thức cơ bản về Docker 42
Docker container là một instance của image. Một container chỉ cần kết hợp với các thư viện và thiết lập cần thiết để làm cho ứng dụng hoạt động. Nó là một môi trường đóng gói gọn nhẹ và di động cho một ứng dụng.
Sử dụng lệnh docker để khởi chạy docker container trên hệ thống của bạn. Ví dụ lệnh bên dưới sẽ tạo một Docker Container từ image có tên “hello-world”.Copy
1 |
|
Bây giờ tạo một instance docker chạy hệ điều hành CentOS. Tùy chọn -it sẽ cung cấp một phiên tương tác với pseudo-TTY. Nó cung cấp cho bạn shell của container ngay lập tức.Copy
1 |
|
Dùng lệnh docker ps để liệt kê các container đang chạy trên hệ thống hiện tại. Nó sẽ không liệt kê các container bị dừng. Nó sẽ hiển thị Container ID, name và các thông tin hữu ích khác về container.Copy
1 |
|
Dùng tùy chọn -a với lệnh ở trên để liệt kê tất cả các container bao gồm cả container bị dừng.Copy
1 |
|
Copy
1 2 3 |
|
Dùng lệnh docker rm để xóa docker container đang tồn tại. Bạn cần cung cấp docker container id hoặc container name để xóa một container cụ thể.Copy
1 2 |
|
Image là tệp tin không thay đổi, giống như file iso được sử dụng để cài hệ điều hành, về cơ bản nó là bản snapshot của container. Image có thể được tạo với các lệnh có sẵn, được sử dụng để tạo container khi bắt đầu bằng lệnh run.
Dùng lệnh docker images để liệt kê tất cả images có sẵn trên máy tính chạy docker của bạn.Copy
1 |
|
Dùng lệnh docker search để tìm kiếm các images trên docker hub. Ví dụ, dùng lệnh sau để tìm docker images centOS.Copy
1 |
|
Bạn dùng lệnh docker pull để download bất kỳ image từ docker hub. Ví dụ để download image centOS phiên bản mới nhất từ docker hub về máy local và tạo container.Copy
1 |
|
Ta dùng lệnh docker rmi để xóa bất kỳ docker image từ hệ thống local. Ví dụ, để xóa image tên centos dùng lệnh sau:Copy
1 |
|
Dockerfile là một file được dùng để build một image bằng cách đọc các chỉ dẫn từ file đó. Tên file mặc định được dùng là Dockerfile. Bạn có thể tạo dockerfile trong thư mục hiện tại với các chỉ dẫn cụ thể và build một image tùy chỉnh theo yêu cầu của bạn.
Dockerfile là một file được đặt ở vị trí gốc trong container khi build xong. Bạn có thể dùng lệnh sau đây để build docker image. Trong câu lệnh bên dưới, docker sẽ đọc Dockerfile tại vị trí thư mục hiện tại.Copy
1 |
|
Bạn cũng có thể dùng cờ -f với lệnh docker build để trỏ đến Dockerfile tại bất kỳ nơi nào trong hệ thống file của bạn.Copy
1 |
|
Trong bài hướng dẫn này, Vietnix đã tạo một project ví dụ trên github. Các bạn chỉ cần clone repository bằng cách dùng lệnh sau:Copy
1 2 |
|
Bây giờ build docker image với tên VietnixCopy
1 |
|
Sau khi build, bạn có thể thấy image bằng cách dùng lệnh “docker images”
Bây giờ mình sẽ tạo instance sử dụng image mới tạo.Copy
1 |
|
Lệnh bên trên khởi chạy docker container sử dụng Vietnix.
Trong Dockerfile, có một số điểm mà các bạn cần phải biết với những chỉ thị như sau
FROM được dùng để thiết lập image cơ sở cho chỉ dẫn tiếp theo. Dockerfile phải có chỉ thị FROM với tên image hợp lệ là chỉ thị đầu tiên.Copy
1 |
|
Copy
1 |
|
Sử dụng label, bạn có thể tổ chức các image đúng cách. Nó cực kỳ hữu ích để thiết lập địa chỉ nhà phát triển, tên nhà cung cấp, phiên bản image, ngày phát hành,… Dòng này phải bắt đầu bằng từ khóa LABELCopy
1 2 3 |
|
Bạn có thể thêm nhiều label vào một dòng với dấu cách, hoặc định nghĩa nhiều dòng như sau:Copy
1 2 |
|
Dùng chỉ thị RUN, bạn có thể chạy bất kỳ lệnh nào tới image trong thời gian build. Ví dụ, bạn có thể cài đặt các package bắt buộc trong thời gian build.Copy
1 2 |
|
Hoặc sử dụng chạy một chỉ thị RUN như sau:Copy
1 2 3 4 |
|
Chỉ thị COPY được dùng để copy file và thư mục từ hệ thống host tới image trong khi build. Ví dụ, lệnh đầu tiên sẽ copy tất cả file từ thư mục host html/ tới thư mục /var/www/html trên image. Lệnh thứ hai sẽ copy tất cả file với phần mở rộng .conf tới địa chỉ thư mục /etc/apache2/sites-available/ .Copy
1 2 |
|
Chỉ thị WORKDIR được dùng để thiết lập thư mục làm việc hiện tại cho bất kỳ chỉ thị RUN, CMD, ENTRYPOINT, COPY… trong quá trình build.Copy
1 |
|
Chỉ thị CMD được dùng để chạy các dịch vụ hoặc phần mềm có chứa bên trong image, cùng với bất kỳ tham số khác trong khi khởi chạy container. CMD dùng cú pháp đơn giản sau đây:Copy
1 2 |
|
Ví dụ, để khởi động dịch vụ Apache khi khởi chạy container, dùng lệnh sau đây:Copy
1 |
|
Chỉ thị EXPOSE chỉ ra các port mà container sẽ lắng nghe cho các kết nối. Sau đó bạn có thể liên kết các port hệ thống với container và dùng chúng.Copy
1 2 |
|
Chỉ thị ENV được dùng để thiết lập biến môi trường cho các dịch vụ cụ thể của container.Copy
1 2 |
|
Chỉ thị VOLUME tạo một mount point với tên được chỉ định và đánh dấu nó là nơi giữ mount volume từ host bên ngoài hoặc container khác.Copy
1 |
|
Docker containers chạy các dịch vụ bên trong nó trên các port được chỉ định cụ thể. Để truy cập dịch vụ của một container đang chạy trên một port, bạn cần liên kết container port với port trên Docker host (máy thật).
Nhìn vào hình bên dưới, bạn sẽ thấy docker host đang chạy hai containers, một cái chạy Apache và cái còn lại chạy MySQL.
Bây giờ, bạn cần truy cập vào website đang chạy Apache container trên port 80. Chúng ta sẽ liên kết docker port 8080 tới container port 80. Bạn cũng có thể dùng port 80 trên docker port.
Container thứ hai chạy MySQL trên port 3306. Có nhiều cách khác để truy cập MySQL từ docker host. Nhưng trong bài viết này, mình sẽ liên kết docker port 6603 tới container port 3306. Bây giờ, mình sẽ truy cập trực tiếp MySQL từ Docker container bằng cách kết nối docker host trên port 6603.
Câu lệnh bên dưới sẽ liên kết host docker port với container port.Copy
1 2 |
|
Trong ví dụ thứ hai dùng project có sẵn của mình trên github. Nó sẽ show cho bạn ví dụ đang chạy trên port 8080 trên docker host. Đơn giản bạn chỉ cần clone repository bằng cách chạy câu lệnh sau:Copy
1 2 |
|
Bây giờ, build docker image với tên apacheimageCopy
1 |
|
Chạy container bằng cách sử dụng lệnh docker run. Dịch vụ apache sẽ khởi động trên container port 80. Bạn cần chỉ ra port cụ thể bằng cách dùng option -p 8080:80 để liên kết host system port 8080 với container port 80.Copy
1 |
|
Bây giờ truy cập địa chỉ IP docker host với port 8080 trên trình duyệt web. Bạn sẽ xem được trang web đang chạy trên Apache của container như bên dưới. Địa chỉ IP của docker host của mình là 192.168.1.237.
Bạn có thể liên kết nhiều ports với một container, nhưng cần đảm bảo bạn đã sử dụng chỉ dẫn EXPOSE tất cả các ports trong Dockerfile trước khi build image.Copy
1 |
|
Nếu bạn cần liên kết port với interface của docker host cụ thể, khai báo địa chỉ IP như bên dưới. Trong ví dụ bên dưới, port 8080, 8081 sẽ có thể truy cập với địa chỉ 127.0.0.1Copy
1 2 |
|
Docker cung cấp một tùy chọn để tạo và quản lý network riêng giữa các container. Dùng lệnh docker network để quản lý Docker networking.
Cú phápCopy
1 |
|
Dùng cách lệnh theo hướng dẫn bên dưới để tạo, liệt kê và quản lý Docker networking.
Dùng tùy chọn ls với lệnh docker network để liệt kê các network khả dụng trên system host.Copy
1 |
|
Docker cung cấp nhiều loại network. Lệnh bên dưới sẽ tạo bridge network trên hệ thống của bạn.
Cú phápCopy
1 |
|
Copy
1 |
|
Bạn có thể kết nối bất kỳ container nào tới một docker network đang tồn tại bằng cách sử dụng tên container hoặc ID. Một khi container được kết nối tới network, nó có thể giao tiếp với các container khác trong cùng mạng.
Cú phápCopy
1 |
|
Ví dụCopy
1 |
|
Bạn có thể ngắt kết nối một container khỏi một network cụ thể bất cứ khi nào bằng cách dùng lệnh dưới đây
Cú phápCopy
1 |
|
Ví dụCopy
1 |
|
Dùng tùy chọn inspect để kiểm tra với lệnh docker network để xem chi tiết docker networkCopy
1 |
|
Bạn sẽ nhận được kết quả như sau
Dùng tùy chọn rm để xóa bất kỳ Docker network nào đang không sử dụng. Bạn có thể chỉ định một hoặc nhiều network hơn bằng cách sử dụng dấu cách (space) để xóa.
Ví dụCopy
1 |
|
Bạn cũng có thể xóa tất cả network không sử dụng khỏi system host bằng cách sử dụng tùy chọn prune.Copy
1 |
|
Giờ chúng ta sẽ học cách truy cập MySQL server đang sử dụng phpAdmin chạy trên container khác.
Đầu tiên, tạo một docker network. Dùng lệnh bên dưới để tạo bridge network mới với tên my_bridge_networkCopy
1 |
|
Bây giờ, chạy Mysql container mới. Thiết lập mặc định user password root với biến MYSQL_ROOT_PASSWORD giống như lệnh bên dưới.Copy
1 |
|
Sau khi tạo container thì thêm nó vào networkCopy
1 |
|
Giờ chúng ta sẽ xem địa chỉ IP của MySQL container.Copy
1 |
|
Giờ ta sẽ chạy Docker container chứa MySQL bằng cách sử dụng câu lệnh sau. Thay đổi giá trị PMA_HOST với địa chỉ IP của MySQL container trong bước trước.Copy
1 |
|
Thêm container này vào networkCopy
1 |
|
Ở trên mình đã thêm 2 container vào network. Bây giờ sẽ kiểm tra cài đặt network hiện tại.Copy
1 |
|
Mặc định thì MySQL không cho phép host từ xa kết nối đến. Và để cho phép phpmyadmin kết nối MySQL, truy cập shell MySQL container dùng lệnh bên dưới.Copy
1 |
|
Đăng nhập vào MySQL server dùng password đã cung cấp trong quá trình tạo instance.Copy
1 |
|
Tạo user mới với địa chỉ ip phpmyadmin. Trong trường hợp địa chỉ ip phpmyadmin là ‘127.21.0.3’ như bên trên.Copy
1 2 3 4 5 6 7 8 |
|
Cuối cùng, kết nối docker host trên port 8080 để truy cập giao diện web phpmyadmin
Dùng thông tin đăng nhập MySQL đã tạo ở các bước bên trên để đăng nhập vào phpmyadmin
Docker compose là một công cụ khác cho docker để thiết lập môi trường multi-container. Sử dụng để tạo một file compose định nghĩa tất cả container với môi trường đó. Bạn có thể dùng một lệnh dễ dàng để build image và chạy tất cả container.
Quá trình gồm ba bước để làm việc với Docker compose
Truy cập trang web chính thức của Docker compose trên github và download phiên bản mới nhất của công cụ Docker compose. Bạn cũng có thể cài đặt Docker compose 1.16.1 bằng cách dùng lệnh bên dưới. Trước khi cài đặt phiên bản cụ thể, bạn phải kiểm tra khả năng tương thích trên trang phát hành với phiên bản docker của bạn.Copy
1 2 |
|
File docker-compose.yml được yêu cầu khi bạn muốn sử dụng docker compose. Bên dưới là file cấu hình ví dụ của docker-compose version 3. File này chỉ có một dịch vụ được thêm vào và đặt tên là web.Copy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Lệnh docker-compose cung cấp một số các tùy chọn để quản lý docker container với docker-compose.
build –
Tùy chọn build được dùng để build images cho các dịch vụ được định nghĩaCopy
1 2 |
|
up –
Dùng để tạo docker container với các dịch vụ có sẵn trong file docker-compose.yml trong thư mục hiện tại. Dùng -d để khởi động container trong chế độ chạy ngầm.Copy
1 2 |
|
down –
Sẽ dừng và xóa tất cả container, network và các images được liên kết cho các dịch vụ được định nghĩa trong file config.Copy
1 2 |
|
ps –
Sẽ liệt kê tất cả container được tạo cho các dịch vụ được định nghĩa trong file config với status, ports và command.Copy
1 |
|
exec –
Sẽ thực thi một lệnh tới container đang chạy. Ví dụ, liệt kê danh sách các file trong container được liên kết với dịch vụ web.Copy
1 |
|
start –
Sẽ dừng các container của các dịch vụ được định nghĩa trong file config.Copy
1 2 |
|
stop –
Sẽ dừng các container đang chạy cho các dịch vụ được định nghĩa trong file config
restart –
Sẽ khởi động lại các container của các dịch vụ trong file config.
pause –
Sẽ tạm dừng các container dịch vụ được định nghĩa trong config
unpause –
Sẽ bắt đầu các container bị tạm dừng
rm –
Sẽ xóa các container bị dừng đối với các dịch vụ được khai báo trong file config
Trong ví dụ này, mình sẽ tạo hai docker container sử dụng Docker compose. Một docker container chạy MySQL và container còn lại chạy Apache web server.
Các bạn hãy làm theo hướng dẫn của mình và xem những gì xảy ra ở đây
Đầu tiên, tạo cấu trúc thư mục. Ở đây, webapp là thư mục ứng dụng web của mình. Cũng tạo luôn file index.html trong thư mục webapp.Copy
1 2 3 |
|
Bây giờ tạo Dockerfile trong thư mục webapp để tạo image tùy chỉnh cho ứng dụng bao gồm cả Apache webserver.Copy
1 |
|
Và nội dung sauCopy
1 2 3 4 5 6 7 8 9 |
|
Cuối cùng, tạo file cấu hình docker compose (docker-compose.yml) trong thư mục hiện tại. Nó sẽ định nghĩa tất cả container sẽ được dùng trong phần thiết lập hiện tại.Copy
1 |
|
Và thêm nội dung sauCopy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
File docker compose ở trên được thiết lập cho hai container. Container đầu tiên là mysql database server và container thứ hai là web server. Container web sẽ chạy ứng dụng của mình trên Apache server. Vì nó được tùy chỉnh nên mình xác định thư mục build cho webapp.
Bây giờ, build một image sử dụng câu lệnh sau đây. Nó sẽ tạo một image tên là apache sử dụng Dockerfile và nội dung từ thư mục webapp.Copy
1 |
|
Đọc dữ liệu đầu ra của lệnh trên. Mình đã bỏ qua vài phần đầu ra không cần thiết. Dòng đầu tiên của output cho thấy nó bỏ qua việc build db container do build không được định nghĩa. Đối với web container nó dùng webapp/Dockerfile để build image.Copy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
Cuối cùng, khởi động container sử dụng lệnh docker-compose up Dùng -d để chạy chúng trong chế độ ngầm.Copy
1 |
|
Bạn có thể truy cập ứng dụng web trên thư mục apache_web bằng cách truy cập system host port 8080. Ví dụ, http://dockerhost:8080 trong đó dockerhost là địa chỉ ip hoặc hostname của máy đang chạy docker.
Giờ mình sẽ thêm ít nội dung vào ứng dụng web. Mình đã thêm ít nội dung tới file webapp/index.html như sau:Copy
1 |
|
Sử dụng lệnh sau để rebuild container webapp và khởi chạy bằng cách sử dụng docker-composeCopy
1 2 |
|
Dữ liệu đầu ra như sau:
Bạn có thể thấy rằng container mysql_db đang hiển thị không thay đổi gì so với lúc mình chưa thêm nội dung. Chỉ có apache_web container được tạo do lần build image mới đã được sử dụng.
Truy cập lại ứng dụng web trên port 8080 của máy chạy docker. Bạn sẽ thấy kết quả đã được cập nhật nội dung.Copy
1 2 |
|
Docker không chỉ là một công cụ đắc lực cho các bạn lập trình viên mà còn tạo ra nhiều cuộc cách mạng cho các lĩnh vực khác như:
– Kiểm thử và Đảm bảo Chất lượng: Docker giúp xây dựng môi trường kiểm thử ảo hóa, đảm bảo ứng dụng hoạt động ổn định trên mọi hệ thống.
– Phân tích Dữ liệu: Các nhà khoa học dữ liệu tận dụng Docker để đóng gói các công cụ phân tích và mô hình dữ liệu, dễ dàng chia sẻ và tái sử dụng trên nhiều nền tảng.
– Học máy: Docker hỗ trợ triển khai các mô hình học máy một cách nhanh chóng và hiệu quả, từ môi trường phát triển đến môi trường sản phẩm.
– Triển khai Ứng dụng Doanh nghiệp: Docker giúp các doanh nghiệp đóng gói và triển khai ứng dụng nội bộ, tối ưu hóa quy trình, giảm thiểu rủi ro và tiết kiệm chi phí.
– DevOps và CI/CD: Docker là công cụ không thể thiếu trong quy trình DevOps, giúp tự động hóa việc tích hợp và triển khai liên tục (CI/CD), mang lại hiệu suất làm việc cao hơn.
– Giáo dục và Đào tạo: Docker tạo môi trường học tập ảo, cho phép học viên thực hành trên các ứng dụng thực tế mà không cần cài đặt phức tạp.
– Internet of Things (IoT): Docker hỗ trợ triển khai các ứng dụng IoT một cách linh hoạt và dễ dàng quản lý trên các thiết bị khác nhau.
Docker là gì? Khi đọc bài viết này bạn cũng nắm được khái niệm và cách thức vận hàng của docker container. Cùng với đó là một số lệnh cơ bản có thể hỗ trợ bạn trong quá trình sử dụng docker một cách hiệu quả. Chúc các bạn thành công.