Cách cài đặt Docker Compose trên Ubuntu 16.04

2 năm trước

Giới Thiệu 

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 các container phần mềm, nhưng để tận dụng tối đa tiềm năng của mỗi thành phần của một ứng dụng nên chạy trong container riêng của nó. Đối với các ứng dụng phức tạp với rất nhiều thành phần, việc bố trí tất cả các container để khởi động, giao tiếp và tắt với 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ó tên là Figcho phép bạn sử dụng một tệp YAML duy nhất để dàn xếp tất cả các container và cấu hình Docker của bạn. Điều này trở nên phổ biến đến nỗi nhóm Docker đã quyết định tạo Docker Compose dựa trên nguồn Fig, hiện không còn được dùng nữa. Docker Compose giúp người dùng dễ dàng hơn trong việc sắp xếp các quy trình của các Docker container, bao gồm khởi động, tắt, và thiết lập liên kết và volumes trong container

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cách cài đặt phiên bản mới nhất của Docker Compose để giúp bạn quản lý các ứng dụng đa container.

 

Yêu Cầu

Để làm theo bài viết này, bạn sẽ cần một máy chủ Ubuntu 16.04 với những điều sau đây:

Khi thực hiện xong các yêu cầu trên , bạn đã sẵn sàng để làm theo hướng dẫn này.

Mặc dù các yêu cầu đưa ra hướng dẫn cài đặt Docker trên Ubuntu 16.04, các lệnh docker trong bài viết này vẫn sẽ hoạt động trên các hệ điều hành khác miễn là Docker được cài đặt.

Chú ý: Mặc dù các yêu cầu đưa ra hướng dẫn cài đặt Docker trên Ubuntu 16.04, các lệnh docker trong bài viết này vẫn 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ù chúng ta có thể cài đặt Docker Compose từ kho lưu trữ chính thức của Ubuntu, nó là một vài phiên bản nhỏ đằng sau bản phát hành mới nhất, vì vậy chúng ta sẽ cài đặt Docker Compose từ kho lưu trữ GitHub của Docker. Lệnh bên dưới hơi khác với lệnh bạn sẽ tìm thấy trên trang Releases . Bằng cách sử dụng chỉ báo -o để xác định tệp đầu ra đầu tiên thay vì chuyển hướng đầu ra, cú pháp này tránh chạy một sự cho phép mà bị từ chối  do lỗi gây ra khi sử dụng sudo.  

Chúng ta sẽ kiểm tra current release và nếu cần, hãy cập nhật nó trong lệnh dưới đây:

sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

Tiếp theo, chúng ta sẽ đặt quyền:

sudo chmod +x /usr/local/bin/docker-compose

Sau đó, chúng ta sẽ xác minh rằng cài đặt đã thành công bằng cách kiểm tra phiên bản:

docker-compose --version

Thao tác này sẽ in ra phiên bản chúng ta đã cài đặt:

output
docker-compose version 1.18.0, build 8dd22a9
 

Bây giờ chúng ta đã cài đặt Docker Compose, chúng ta đã sẵn sàng chạy một ví dụ "Hello World".

 

Bước 2 — Chạy một Container cùng với Docker Compose

Đăng ký Docker Hub, Docker Hub, bao gồm một 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 container bằng cách sử dụng Docker Compose: một tệp YAML gọi một hình ảnh duy nhất:

Đầu tiên, chúng ta sẽ tạo một thư mục cho tệp YAML và di chuyển vào nó:

mkdir hello-world
cd hello-world
  •  

Sau đó , tạo một file YAML:

nano docker-compose.yml

Đặt các nội dung sau vào tệp, lưu tệp và thoát khỏi trình chỉnh sửa văn bản:

docker-compose.yml
my-test:
image: hello-world

Dòng đầu tiên trong tệp YAML được sử dụng như một phần của tên container. Dòng thứ hai chỉ định hình ảnh sẽ sử dụng để tạo container. Khi chúng ta chạy lệnh docker-compose up nó sẽ tìm kiếm một hình ảnh cục bộ bằng tên chúng ta đã chỉ định, hello-world. Với điều này , chúng ta sẽ lưu và thoát tệp.

Chúng ta có thể xem thủ công các hình ảnh trên hệ thống cùng với lệnh docker images :

docker images

Khi hoàn toàn không có hình ảnh cục bộ, chỉ hiển thị tiêu đề cột

output
REPOSITORY TAG IMAGE ID CREATED SIZE
 

Bây giờ, trong khi vẫn còn trong thư mục ~/hello-world, chúng ta sẽ thực hiện lệnh sau đây.

docker-compose up

Lần đầu tiên chúng ta chạy lệnh, nếu không có hình ảnh cục bộ có tên hello-world, Docker Compose sẽ kéo nó từ kho lưu trữ công cộng Docker Hub:

output
Pulling my-test (hello-world:latest)...
latest: Pulling from library/hello-world
c04b14da8d14: Downloading [==================================================>] c04b14da8d14: Extracting [==================================================>] c04b14da8d14: Extracting [==================================================>] c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
. . .
 

Sau khi kéo hình ảnh, docker-compose tạo ra một container, đính kèm và chạy chương trình hello, do đó xác nhận rằng cài đặt có vẻ đ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ì đã làm:

output of docker-compose up
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
 

Docker container chỉ chạy khi lệnh đang hoạt động, vì vậy khi hello kết thúc việc  chạy, container đã dừng lại. Do đó, khi chúng ta xem xét các quá trình hoạt động, các tiêu đề cột sẽ xuất hiện, nhưng hello-world container sẽ không được liệt kê vì nó không chạy.

docker ps
output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 

Chúng ta có thể thấy thông tin container, mà chúng ta sẽ cần trong bước tiếp theo, bằng cách sử dụng chỉ báo -a hiển thị tất cả các container, không chỉ các container đang hoạt động:

docker ps -a
output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago drunk_payne
 

Thao tác này sẽ hiển thị thông tin mà chúng ta cần để xóa container khi đã hoàn tất việc này.

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, hãy xóa hình ảnh cục bộ. Để làm như vậy, cần xóa tất cả các container tham chiếu hình ảnh bằng lệnh docker rm, theo sau là ID CONTAINER hoặc NAME. Dưới đây, chúng ta đang sử dụng CONTAINER ID từ lệnh docker ps -a mà chúng ta vừa chạy. Đảm bảo thay thế ID của container:

docker rm 06069fd5ca23

Khi tất cả các container tham chiếu hình ảnh đã bị xóa, chúng ta có thể xóa hình ảnh:

docker rmi hello-world
 

Kết Luận

Bây giờ chúng ta đã cài đặt Docker Compose,  kiểm tra cài đặt bằng cách chạy ví dụ Hello World và xóa hình ảnh thử nghiệm và container.

Tìm hiểu thêm nhiều điều thú vị về Docker tại ViCloud Community