Cách cài đặt Docker Compose trên Ubuntu 16.04
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ó tên 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 giúp user sắp xếp các quy trình của containers Docker dễ dàng hơn, 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, ta sẽ chỉ cho bạn cách 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 .
Yêu cầu
Để theo dõi bài viết này, bạn cần một server Ubuntu 16.04 với những thứ sau:
- User không phải root có quyền sudo ( Cài đặt server ban đầu với Ubuntu 16.04 giải thích cách cài đặt điều này.)
- 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 Ubuntu 16.04
Khi những điều này đã sẵn sàng, bạn đã sẵn sàng làm theo.
 Lưu ý: Mặc dù  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 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ù  ta  có thể cài đặt Docker Compose từ repository  chính thức của Ubuntu, nhưng đây là một số version  nhỏ đằng sau bản phát hành mới nhất, vì vậy  ta  sẽ cài đặt Docker Compose từ repository  GitHub của Docker. Lệnh bên dưới 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 bị từ chối cấp phép gây ra khi sử dụng sudo .
Ta sẽ 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 bên dưới:
- 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, 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.18.0, build 8dd22a9 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:
Đầu tiên, ta sẽ tạo một folder cho file YAML và chuyển vào đó:
- mkdir hello-world 
- cd hello-world 
Sau đó, ta sẽ 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 .
  Ta  có thể xem các hình ảnh trên hệ thống  của bạn  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 ,  ta  sẽ thực hiện lệnh sau:
- docker-compose up 
Lần đầu tiên  ta  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)... 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 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 of docker-compose up1. 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. 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, 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  Ta  có thể xem thông tin containers , mà  ta   cần  trong bước tiếp theo, bằng cách sử dụng cờ -a 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                       drunk_payne Điều này hiển thị thông tin ta cần để loại bỏ containers khi ta 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à ID CONTAINER hoặc TÊN. Dưới đây,  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
Hiện ta đã cài đặt Docker Compose, đã thử nghiệm cài đặt của ta 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 ta , cấu hình đơn giản 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 sức mạnh của Docker Compose trong hoạt động, bạn có thể cần xem ví dụ thực tế này, Cách cấu hình môi trường kiểm tra tích hợp liên tục với Docker và Docker Compose trên Ubuntu 16.04
Các tin liên quan
Cách sử dụng Traefik làm Reverse Proxy cho Docker Containers trên Ubuntu 16.042017-09-08
Cách tập trung log Docker của bạn với Fluentd và ElasticSearch trên Ubuntu 16.04
2016-12-16
Cách làm việc với Docker Data Volumes trên Ubuntu 14.04
2016-11-17
Làm việc với Docker Containers
2016-11-04
Cách cấu hình môi trường kiểm tra tích hợp liên tục với Docker và Docker Compose trên Ubuntu 14.04
2016-11-03
Cách cấu hình môi trường kiểm tra tích hợp liên tục với Docker và Docker Compose trên Ubuntu 16.04
2016-11-03
Cách cài đặt và sử dụng Docker trên CentOS 7
2016-11-02
Cách gỡ lỗi và khắc phục các sự cố thường gặp của Docker
2016-10-20
Cách cài đặt Prometheus bằng Docker trên CentOS 7
2016-01-15
Cách cài đặt Prometheus bằng Docker trên Ubuntu 14.04
2016-01-12
 

