Làm thế nào để cung cấp và quản lý máy chủ Docker từ xa với Docker Machine trên CentOS 7

Giới thiệu

Docker Machine là một công cụ giúp dễ dàng cung cấp và quản lý nhiều máy chủ Docker từ xa từ máy tính cá nhân của bạn. Các máy chủ như vậy thường được gọi là các máy chủ Dockerized, và như một vấn đề tất nhiên, có thể được sử dụng để chạy các thùng chứa Docker.

Trong khi Docker Machine có thể được cài đặt trên một hệ thống cục bộ hoặc từ xa, cách tiếp cận phổ biến nhất là cài đặt nó trên máy tính cục bộ của bạn (cài đặt gốc hoặc máy ảo) và sử dụng nó để cung cấp các máy chủ từ xa Dockerized.

Mặc dù Docker Machine có thể được cài đặt trên hầu hết phân phối Linux cũng như trên Mac OS X và Windows, trong hướng dẫn này, chúng tôi sẽ cài đặt nó trên máy cục bộ của bạn chạy CentOS 7 và sử dụng nó để cung cấp Dockerized DigitalOcean Droplets.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần những điều sau đây:

  • Một máy địa phương đang chạy CentOS 7 với Docker được cài đặt. (xem Cách cài đặt và sử dụng Docker trên CentOS 7 để được hướng dẫn)
  • Mã thông báo API DigitalOcean. Nếu bạn không có, hãy tạo nó bằng cách sử dụng hướng dẫn này. Khi bạn tạo một mã thông báo, hãy chắc chắn rằng nó có phạm vi đọc-ghi. Đó là mặc định, vì vậy nếu bạn không thay đổi bất kỳ tùy chọn nào trong khi tạo nó, nó sẽ có khả năng đọc-ghi. Và để dễ sử dụng hơn trên dòng lệnh, hãy đảm bảo gán mã thông báo cho một biến như được đưa ra trong bài viết đó.

Bước 1 - Cài đặt Docker Machine trên máy tính cục bộ của bạn

n bước này, chúng tôi sẽ làm việc thông qua quá trình cài đặt Docker Machine trên máy tính cục bộ của bạn đang chạy CentOS 7.

Để tải xuống và cài đặt nhị phân, hãy nhập:

wget https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-$(uname -s)-$(uname -m)

Tên của tệp phải là docker-machine-Linux-x86_64. Đổi tên thành docker-machine để làm việc dễ dàng hơn với:

mv docker-machine-Linux-x86_64 docker-machine

Làm cho nó có thể thực thi được:

chmod +x docker-machine

Di chuyển hoặc sao chép nó vào usr/local/bin để nó sẽ có sẵn dưới dạng lệnh hệ thống.

sudo mv docker-machine /usr/local/bin

Kiểm tra phiên bản, điều này sẽ cho biết rằng phiên bản đã được cài đặt đúng:

docker-machine version

Đầu ra phải tương tự như

Outputdocker-machine version 0.14.0, build 89b8332

Bước 2 - Cài đặt các kịch bản máy Docker bổ sung

Có ba tập lệnh bash trong kho lưu trữ Docker Machine GitHub được thiết kế để tạo thuận lợi cho việc sử dụng dockerdocker-machine lệnh. Họ cung cấp hoàn thành lệnh và tùy chỉnh dấu nhắc nhanh.

Trong bước này, chúng tôi sẽ cài đặt ba tập lệnh trên máy cục bộ của bạn. Chúng sẽ được tải xuống và cài đặt vào /etc/bash_completion.d danh mục.

Kịch bản đầu tiên làm cho nó có thể nhìn thấy máy hoạt động trong dấu nhắc bash của bạn. Điều này có ích khi bạn làm việc và chuyển đổi giữa nhiều máy Dockerized. Kịch bản được gọi là docker-machine-prompt.bash. Để tải xuống, hãy nhập:

sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash -O /etc/bash_completion.d/docker-machine-prompt.bash

Để hoàn thành việc cài đặt tệp ở trên, bạn sẽ phải đặt giá trị tùy chỉnh cho PS1 biến trong .bashrc tập tin. Vì vậy, mở nó bằng cách sử dụng nano (PS1 là một biến shell đặc biệt được sử dụng để sửa đổi dấu nhắc lệnh bash):

nano ~/.bashrc

Sao chép và dán dòng sau vào cuối tệp đó:

~/.bashrc

export PS1='[\u@\h \W$(__docker_machine_ps1 " [%s]")]\$ '

Với sửa đổi này cho bạn ~/.bashrc tệp, khi bạn kích hoạt một máy, tên của nó sẽ được chèn vào dấu nhắc trình bao.

Lưu và đóng tập tin.

Tập lệnh thứ hai được gọi là docker-machine-wrapper.bash. Nó thêm một use tiểu ban cho docker-machine lệnh, giúp dễ dàng chuyển đổi giữa các máy được Dockerized. Để tải xuống, hãy nhập

sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash -O /etc/bash_completion.d/docker-machine-wrapper.bash

Tập lệnh thứ ba được gọi là docker-machine.bash. Nó thêm hoàn thành bash cho docker-machine lệnh. Tải xuống bằng:

sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash -O /etc/bash_completion.d/docker-machine.bash

Để áp dụng các thay đổi bạn đã thực hiện cho đến thời điểm này, hãy đóng, sau đó mở lại thiết bị đầu cuối của bạn. Nếu bạn đã đăng nhập vào máy qua SSH, hãy thoát phiên và đăng nhập lại. Hoàn thành lệnh cho dockerdocker-machine các lệnh bây giờ sẽ hoạt động. Nếu nó không hoạt động, có thể là bash-completion gói chưa được cài đặt. Nếu đúng như vậy, hãy cài đặt nó bằng cách sử dụng:

sudo yum install bash-completion

Điều đó sẽ khắc phục nó.

Bước 3 - Cung cấp một máy chủ Dockerized bằng cách sử dụng Docker Machine

Bây giờ bạn có Docker và Docker Machine chạy trên máy cục bộ của bạn, bây giờ bạn có thể cung cấp một Droperet Dockerized trên tài khoản DigitalOcean của bạn bằng cách sử dụng Docker Machine's docker-machine create chỉ huy. Nếu bạn chưa làm như vậy, hãy gán mã thông báo API DigitalOcean của bạn cho biến bash bằng cách sử dụng:

export shell-variable=your-api-token

CHÚ THÍCH: Hướng dẫn này sử dụng DOTOKEN dưới dạng biến bash cho mã thông báo API DO. Tên biến không phải là DOTOKEN, và nó không phải là trong tất cả các mũ.

Để biến biến vĩnh viễn, hãy đặt biến đó vào ~/.bashrc tập tin. Bước này là tùy chọn, nhưng nó là cần thiết nếu bạn muốn giá trị tồn tại trong các phiên đầu cuối.

nano ~/.bashrc

Thêm một dòng tương tự như thế này ở bất cứ đâu:

~/.bashrcexport DOTOKEN=your-api-token

Để kích hoạt biến trong phiên thiết bị đầu cuối hiện tại, hãy nhập:

source ~/.bashrc

Để gọi docker-machine create lệnh thành công, bạn phải chỉ định (ở mức tối thiểu) trình điều khiển, mã thông báo API (hoặc biến đánh giá nó), và một tên duy nhất cho máy chủ từ xa. Để tạo máy chủ lưu trữ Dockerized đầu tiên của bạn, hãy nhập:

docker-machine create --driver digitalocean --digitalocean-access-token $DOTOKEN machine-name

Một phần đầu ra khi máy chủ đang được tạo ra sau. Trong đầu ra này, tên của máy chủ là centos-docker:

Output
 ...

Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker i up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env centos-docker

Một cặp khóa SSH được tạo cho máy chủ lưu trữ mới để docker-machine có thể truy cập từ xa. Các giọt được cung cấp với hệ điều hành mong muốn, và Docker được cài đặt trên hệ thống. Khi lệnh hoàn tất, Docker Droplet của bạn đã hoạt động.

Để xem máy chủ mới tạo từ dòng lệnh, gõ:

docker-machine ls

Đầu ra phải tương tự như sau:

OutputNAME                ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
centos-docker   -        digitalocean   Running   tcp://203.0.113.71:2376            v18.05.0-ce

Bước 4 - Chỉ định hệ điều hành cơ sở khi tạo một máy chủ lưu trữ được Dockerized

Bước này cho bạn thấy cách chỉ định một hệ điều hành cơ sở và phiên bản cho Máy chủ lưu trữ được tạo bằng --digitalocean-image cờ.

Ví dụ, để tạo một máy chủ Dockerized bằng CentOS 7, gõ:

docker-machine create --driver digitalocean --digitalocean-image centos-7-x64 --digitalocean-access-token $DOTOKEN machine-name

Nếu bạn muốn chạy Debian 8 trên máy chủ của mình thì sao? Bạn sẽ gõ lệnh sau:

docker-machine create --driver digitalocean --digitalocean-image debian-8-x64 --digitalocean-access-token $DOTOKEN machine-name

Theo mặc định, hệ điều hành cơ sở được sử dụng khi tạo một máy chủ Dockerized với Docker Machine là được cho là là phiên bản mới nhất (hoặc phiên bản LTS mới nhất cho Ubuntu). Tuy nhiên, tại thời điểm ấn phẩm này, docker-machine create lệnh vẫn đang sử dụng Ubuntu 16.04 LTS làm hệ điều hành cơ sở, mặc dù Ubuntu 18.04 là phiên bản LTS mới nhất. Vì vậy, nếu bạn cần chạy Ubuntu 18.04, bạn sẽ phải chỉ định Ubuntu cùng với phiên bản mong muốn bằng cách chuyển --digitalocean-image gắn cờ với docker-machine create chỉ huy:

docker-machine create --driver digitalocean --digitalocean-image ubuntu-18-04-x64 --digitalocean-access-token $DOTOKEN machine-name

Hệ điều hành cơ bản không phải là lựa chọn duy nhất bạn có. Bạn cũng có thể chỉ định kích thước của Droplet. Theo mặc định, nó là giọt nhỏ nhất, trong đó có 1 GB RAM, một CPU đơn, và một SSD 25 GB.

Tìm kích thước của giọt mà bạn muốn sử dụng bằng cách tìm kiếm cái sên tương ứng trong Tài liệu API DigitalOcean.

Ví dụ: để cung cấp máy có RAM 2 GB, hai CPU và SSD 60 GB, hãy sử dụng slug s-2vcpu-2gb:

docker-machine create --driver digitalocean --digitalocean-size s-2vcpu-2gb --digitalocean-access-token $DOTOKEN machine-name

Để xem tất cả các cờ cụ thể để tạo Máy Docker bằng trình điều khiển DigitalOcean, hãy nhập:

docker-machine create --driver digitalocean -h

Tiền boa: Nếu bạn làm mới trang Droplet trên trang tổng quan DigitalOcean của mình, bạn sẽ thấy các máy chủ mới mà bạn đã tạo bằng cách sử dụng docker-machine chỉ huy.

Bước 5 - Thực thi các lệnh của máy Docker khác

Bạn đã thấy cách cung cấp một máy chủ được Dockerized bằng cách sử dụng create tiểu ban. Bạn cũng thấy cách liệt kê các máy chủ có sẵn cho Docker Machine bằng cách sử dụng ls tiểu ban. Trong bước này, bạn sẽ tìm hiểu thêm về một số khác docker-machine subcommands.

Để có được thông tin chi tiết về một máy chủ được Dockerized, hãy sử dụng inspect tiểu ban, như vậy:

docker-machine inspect machine-name

Đầu ra phải bao gồm các dòng như thế này. Các Hình ảnh dòng cho biết phiên bản phân phối Linux được sử dụng:

Output{
    "ConfigVersion": 3,
    "Driver": {
        "IPAddress": "203.0.113.71",
        "MachineName": "centos-docker",
        "SSHUser": "root",
        "SSHPort": 22,
        ...
        "Image": "centos-7-0-x64",
        "Size": "s-1vcpu-1gb",
        ...
    },

---

Để in cấu hình kết nối cho một máy chủ, hãy nhập:

docker-machine config machine-name

Đầu ra phải tương tự như sau:

Output--tlsverify
--tlscacert="/home/kamit/.docker/machine/certs/ca.pem"
--tlscert="/home/kamit/.docker/machine/certs/cert.pem"
--tlskey="/home/kamit/.docker/machine/certs/key.pem"
-H=tcp://203.0.113.71:2376

Dòng cuối cùng trong đầu ra của docker-machine config lệnh cho biết địa chỉ IP của máy chủ, nhưng bạn cũng có thể nhận được thông tin đó bằng cách gõ:

docker-machine ip machine-name

Nếu bạn cần tắt nguồn máy chủ từ xa, bạn có thể sử dụng docker-machine để ngăn chặn nó:

docker-machine stop machine-name

Xác minh rằng nó dừng lại.

docker-machine ls

Trạng thái của máy chủ lưu trữ đã thay đổi:

OuputNAME                 ACTIVE   DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS
centos-docker                  digitalocean   Timeout

Để bắt đầu lại:

docker-machine start machine-name

Xác minh rằng nó được bắt đầu:

docker-machine ls

Bạn sẽ thấy rằng STATE hiện đã được đặt Running cho máy chủ:

OuputNAME                 ACTIVE   DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS

centos-docker         -        digitalocean   Running    tcp://203.0.113.71:2376            v18.05.0-ce

Cuối cùng, nếu bạn muốn xóa một máy chủ:

docker-machine rm machine-name

Bước 6 - Thực thi các lệnh trên một Host được Dockerized thông qua SSH

Tại thời điểm này, bạn đã nhận được thông tin về máy chủ của bạn, nhưng bạn có thể làm nhiều hơn thế. Ví dụ, bạn có thể thực thi các lệnh Linux gốc trên một máy chủ Docker bằng cách sử dụng ssh tiểu ban docker-machine từ hệ thống địa phương của bạn. Phần này giải thích cách thực hiện ssh lệnh thông qua docker-machine cũng như cách mở phiên SSH cho một máy chủ được Dockerized.

Giả sử rằng bạn đã cung cấp một máy chủ với CentOS làm hệ điều hành, hãy thực hiện lệnh sau từ hệ thống cục bộ của bạn để cập nhật các gói trên máy chủ Docker:

docker-machine ssh machine-name yum update

Bạn không chắc chắn máy chủ Docker từ xa của bạn đang sử dụng gì? Gõ như sau:

docker-machine ssh machine-name uname -r

Bên cạnh việc sử dụng ssh subcommand để thực hiện các lệnh trên máy chủ Docker từ xa, bạn cũng có thể sử dụng nó để đăng nhập vào chính máy chủ Dockerized. Đó là dễ dàng như gõ:

docker-machine ssh machine-name

Dấu nhắc lệnh của bạn sẽ thay đổi để phản ánh thực tế là bạn đã đăng nhập vào máy chủ từ xa:

root@machine-name#

Để thoát khỏi máy chủ từ xa, hãy nhập:

exit

Bước 7 - Kích hoạt một Host được Dockerized

Kích hoạt một máy chủ Docker kết nối máy khách Docker cục bộ của bạn với hệ thống đó, điều này làm cho nó có thể chạy bình thường docker lệnh trên hệ thống từ xa. Để kích hoạt một máy chủ Docker, gõ lệnh sau:

eval $(docker-machine env machine-name)

Ngoài ra, bạn có thể kích hoạt nó bằng cách sử dụng lệnh này:

docker-machine use machine-name

tiền boa Khi làm việc với nhiều máy chủ Docker, docker-machine use lệnh là phương pháp dễ dàng nhất để chuyển đổi từ cái này sang cái khác.

Sau khi gõ bất kỳ lệnh nào ở trên, dấu nhắc bash của bạn sẽ thay đổi để cho biết rằng trình khách Docker của bạn trỏ đến máy chủ Docker từ xa. Nó sẽ lấy mẫu này. Tên của máy chủ lưu trữ sẽ ở cuối dấu nhắc:

username@localmachine:~ [machine-name]$

Bây giờ bất kỳ docker lệnh bạn gõ tại dấu nhắc lệnh này sẽ được thực hiện trên máy chủ từ xa đó.

Nếu máy chủ đang hoạt động trên thiết bị đầu cuối docker-machine ls lệnh được chạy, dấu sao dưới HOẠT ĐỘNG cột cho thấy rằng nó là một hoạt động.

Output NAME         ACTIVE            DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS
centos-docker   *        digitalocean   Running    tcp://203.0.113.71:2376            v18.05.0-ce

CHÚ THÍCH: Khi một máy chủ đang hoạt động, bất kỳ docker lệnh bạn gõ trên thiết bị đầu cuối bạn đang sử dụng sẽ được thực hiện trên máy chủ từ xa. Tuy nhiên, tất cả các lệnh Linux bình thường được thực hiện trên máy tính cục bộ.

Để thoát khỏi máy chủ Docker từ xa, hãy nhập như sau:

docker-machine use -u

Bạn sẽ được trả về dấu nhắc cho hệ thống cục bộ của bạn.

Bây giờ chúng ta hãy tạo các thùng chứa trên máy từ xa.

Bước 8 - Tạo Docker Containers trên một Host từ xa Dockerized

Cho đến nay, bạn đã cung cấp một Droperet Dockerized trên tài khoản DigitalOcean của bạn và bạn đã kích hoạt nó - đó là, khách hàng Docker của bạn chỉ vào nó. Bước hợp lý tiếp theo là xoay các thùng chứa lên nó. Ví dụ, hãy thử chạy thùng chứa Nginx chính thức.

Sử dụng docker-machine use để chọn máy từ xa của bạn:

docker-machine use machine-name

Bây giờ thực thi lệnh này để chạy một thùng chứa Nginx trên máy đó:

docker run -d -p 8080:80 --name httpserver nginx

Trong lệnh này, chúng ta đang lập bản đồ cổng 80 trong container Nginx đến cảng 8080 trên máy chủ được Dockerized để chúng tôi có thể truy cập trang Nginx mặc định từ bất kỳ đâu.

Nếu lệnh được thực hiện thành công, bạn sẽ có thể truy cập trang Nginx mặc định bằng cách trỏ trình duyệt Web của bạn đến http://docker_machine_ip:8080.

Trong khi máy chủ Docker vẫn được kích hoạt (như được thấy trong tên của nó trong dấu nhắc), bạn sẽ có thể liệt kê các hình ảnh trên máy chủ đó:

docker images

Đầu ra phải bao gồm hình ảnh Nginx bạn vừa sử dụng, cộng với hình ảnh bạn đã tải xuống trước đây:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              ae513a47849c        3 weeks ago         109MB

Bạn cũng có thể liệt kê các thùng chứa đang hoạt động hoặc đang chạy trên máy chủ:

docker ps

Nếu thùng chứa Nginx bạn chạy trong bước này là thùng chứa hoạt động duy nhất, đầu ra sẽ trông giống như sau:

OutputCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4284f9d25548        nginx               "nginx -g 'daemon of…"   20 minutes ago      Up 20 minutes       0.0.0.0:8080->80/tcp   httpserver

Để thoát lời nhắc cho máy chủ từ xa, hãy nhập exit. Điều này cũng sẽ đóng terminal:

exit

Tiền boa: Nếu bạn dự định tạo vùng chứa trên máy chủ từ xa, trình khách Docker của bạn phải được trỏ đến nó - nghĩa là, nó phải là máy chủ đang hoạt động trong thiết bị đầu cuối mà bạn đang sử dụng. Nếu không, bạn sẽ tạo vùng chứa trên máy cục bộ của mình. Hãy để nhắc lệnh của bạn là hướng dẫn của bạn.

Bước 9 - Vô hiệu hóa báo cáo sự cố (Tùy chọn)

Theo mặc định, bất cứ khi nào một nỗ lực cung cấp một máy chủ Dockerized bằng cách sử dụng Docker Machine không thành công, hoặc Docker Machine bị treo, một số thông tin chẩn đoán được gửi tự động đến tài khoản Docker trên Bugsnag. Nếu bạn không cảm thấy thoải mái với điều này, bạn có thể tắt báo cáo bằng cách tạo một tệp trống có tên no-error-report trong cài đặt của bạn .docker/machine danh mục.

Để thực hiện điều đó, chỉ cần gõ:

touch ~/.docker/machine/no-error-report

Kiểm tra các tập tin cho các thông báo lỗi nếu cung cấp không thành công hoặc Docker Machine bị treo.

Phần kết luận

Đây là một giới thiệu về cài đặt và sử dụng Docker Machine để cung cấp nhiều Docker Droplets từ xa từ một hệ thống cục bộ. Bây giờ bạn sẽ có thể nhanh chóng cung cấp nhiều máy chủ Dockerized trên tài khoản DigitalOcean của bạn khi bạn cần.

Để biết thêm về Docker Machines, hãy truy cập trang tài liệu chính thức. Ba tập lệnh bash được tải xuống trong hướng dẫn này được lưu trữ trên trang GitHub này.

Thêm Bình Luận: