Cách cài đặt Docker Compose trên Debian 10
Docker là một công cụ tuyệt vời để tự động hóa việc triển khai các ứng dụng Linux bên trong containers phần mềm, nhưng để tận dụng hết tiềm năng của nó, mỗi thành phần của ứng dụng phải chạy trong containers riêng của nó. Đối với các ứng dụng phức tạp với nhiều thành phần, việc sắp xếp tất cả các containers để khởi động, giao tiếp và tắt cùng nhau có thể nhanh chóng trở nên khó sử dụng.Cộng đồng Docker đã đưa ra một giải pháp phổ biến được gọi là Fig , cho phép bạn sử dụng một file YAML duy nhất để sắp xếp tất cả các cấu hình và containers Docker của bạn. Điều này trở nên phổ biến đến nỗi group Docker quyết định tạo Docker Compose dựa trên nguồn Fig, hiện không được dùng nữa. Docker Compose cho phép user sắp xếp các quy trình của containers Docker, bao gồm khởi động, tắt và cài đặt liên kết nội bộ containers và dung lượng .
Trong hướng dẫn này, bạn sẽ cài đặt version Docker Compose mới nhất để giúp bạn quản lý các ứng dụng nhiều containers trên server Debian 10.
Yêu cầu
Để theo dõi bài viết này, bạn cần :
- Server Debian 10 và user không phải root có quyền sudo. Hướng dẫn cài đặt server ban đầu với Debian 10 này giải thích cách cài đặt .
- Docker được cài đặt theo hướng dẫn từ Bước 1 và Bước 2 của Cách cài đặt và sử dụng Docker trên Debian 10
Lưu ý: Mặc dù Yêu cầu đưa ra hướng dẫn cài đặt Docker trên Debian 10, các lệnh docker
trong bài viết này sẽ hoạt động trên các hệ điều hành khác miễn là Docker được cài đặt.
Bước 1 - Cài đặt Docker Compose
Mặc dù bạn có thể cài đặt Docker Compose từ repository Debian chính thức, nhưng đây là một số version nhỏ sau bản phát hành mới nhất, vì vậy trong hướng dẫn này, bạn sẽ cài đặt nó từ repository GitHub của Docker. Lệnh sau hơi khác so với lệnh bạn sẽ tìm thấy trên trang Bản phát hành . Bằng cách sử dụng cờ -o
để chỉ định file kết quả trước thay vì chuyển hướng kết quả , cú pháp này tránh gặp phải lỗi “quyền bị từ chối” gây ra khi sử dụng sudo
.
Kiểm tra bản phát hành hiện tại và nếu cần, hãy cập nhật nó trong lệnh sau:
- sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Tiếp theo, ta sẽ đặt các quyền:
- sudo chmod +x /usr/local/bin/docker-compose
Sau đó, ta sẽ xác minh cài đặt thành công bằng cách kiểm tra version :
- docker-compose --version
Thao tác này sẽ in ra version ta đã cài đặt:
Outputdocker-compose version 1.25.3, build d4d1b42b
Bây giờ ta đã cài đặt Docker Compose, ta đã sẵn sàng chạy ví dụ “Hello World”.
Bước 2 - Chạy containers với Docker Compose
Cơ quan đăng ký Docker công khai, Docker Hub, bao gồm hình ảnh Hello World để trình diễn và thử nghiệm. Nó minh họa cấu hình tối thiểu cần thiết để chạy một containers bằng Docker Compose: một file YAML gọi một hình ảnh duy nhất. Ta sẽ tạo cấu hình tối thiểu này để chạy hello-world
chứa hello-world
của ta .
Đầu tiên, tạo một folder cho file YAML và chuyển sang nó:
- mkdir hello-world
- cd hello-world
Sau đó, tạo file YAML:
- nano docker-compose.yml
Đưa các nội dung sau vào file , lưu file và thoát khỏi editor :
my-test: image: hello-world
Dòng đầu tiên trong file YAML được sử dụng như một phần của tên containers . Dòng thứ hai chỉ định hình ảnh nào sẽ sử dụng để tạo containers . Khi ta chạy lệnh docker-compose up
, nó sẽ tìm kiếm một hình ảnh local theo tên mà ta đã chỉ định, hello-world
. Với điều này tại chỗ, ta sẽ lưu và thoát file .
Bạn có thể xem các hình ảnh trên hệ thống của ta theo cách thủ công bằng lệnh docker images
:
- docker images
Khi không có hình ảnh local nào, chỉ có tiêu đề cột hiển thị:
OutputREPOSITORY TAG IMAGE ID CREATED SIZE
Bây giờ, khi vẫn ở trong folder ~/hello-world
, hãy thực hiện lệnh sau:
- docker-compose up
Lần đầu tiên bạn chạy lệnh, nếu không có hình ảnh local nào có tên hello-world
, Docker Compose sẽ lấy nó từ repository công cộng Docker Hub:
OutputPulling my-test (hello-world:)... latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest . . .
Sau khi kéo hình ảnh, docker-compose
tạo một containers , đính kèm và chạy chương trình hello , từ đó xác nhận cài đặt dường như đang hoạt động:
Output. . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 | . . .
Sau đó, nó in một lời giải thích về những gì nó đã làm:
Output To generate this message, Docker took the following steps: my-test_1 | 1. The Docker client contacted the Docker daemon. my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. my-test_1 | (amd64) my-test_1 | 3. The Docker daemon created a new container from that image which runs the my-test_1 | executable that produces the output you are currently reading. my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it my-test_1 | to your terminal.
Vùng chứa Docker chỉ chạy miễn là lệnh còn hoạt động, vì vậy khi hello
chạy xong, containers sẽ dừng lại. Do đó, khi ta xem xét các quy trình đang hoạt động, các tiêu đề cột sẽ xuất hiện, nhưng containers hello-world
sẽ không được liệt kê vì nó không chạy:
- docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Bạn có thể xem thông tin containers mà bạn cần trong bước tiếp theo, bằng cách sử dụng cờ -a
. Điều này hiển thị tất cả các containers , không chỉ những vùng đang hoạt động:
- docker ps -a
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1
Thao tác này hiển thị thông tin bạn cần để xóa containers khi bạn hoàn thành việc đó.
Bước 3 - Xóa hình ảnh (Tùy chọn)
Để tránh sử dụng không gian đĩa không cần thiết, ta sẽ xóa hình ảnh local . Để làm như vậy, ta cần xóa tất cả các containers tham chiếu đến hình ảnh bằng lệnh docker rm
, theo sau là CONTAINER ID
hoặc NAME
. Trong ví dụ sau, ta đang sử dụng CONTAINER ID
từ lệnh docker ps -a
mà ta vừa chạy. Đảm bảo thay thế ID của containers của bạn:
- docker rm 06069fd5ca23
Khi tất cả các containers tham chiếu đến hình ảnh đã bị xóa, ta có thể xóa hình ảnh:
- docker rmi hello-world
Kết luận
Bạn đã cài đặt Docker Compose trên Debian 10, đã kiểm tra cài đặt của bạn bằng cách chạy ví dụ Hello World, đồng thời xóa hình ảnh và containers thử nghiệm.
Trong khi ví dụ Hello World đã xác nhận cài đặt của bạn, cấu hình cơ bản này không cho thấy một trong những lợi ích chính của Docker Compose - có thể đưa một group Docker container lên và xuống cùng một lúc. Để xem cách sử dụng Docker Compose chi tiết hơn, hãy xem Cách cài đặt WordPress với Docker Compose .
Các tin liên quan
Cách chứa một ứng dụng Laravel để phát triển với Docker Compose trên Ubuntu 18.042020-01-23
Cách chứa một ứng dụng Laravel để phát triển với Docker Compose trên Ubuntu 18.04
2020-01-23
Lưu trữ một ứng dụng Ruby on Rails để phát triển với Docker Compose
2019-12-27
Làm việc với nhiều container bằng Docker Compose
2019-12-20
Cách sử dụng Plugin Docker cho Visual Studio Code
2019-12-12
Cách sử dụng Ansible để cài đặt và thiết lập Docker trên Ubuntu 18.04
2019-12-05
Cách tạo ứng dụng Django và Gunicorn với Docker
2019-10-25
Cách thiết lập Flask với MongoDB và Docker
2019-10-11
Cách cài đặt và sử dụng Docker trên Debian 10
2019-07-08
Cách sử dụng server Docker từ xa để tăng tốc quy trình làm việc của bạn
2019-06-25