Thứ hai, 21/05/2018 | 00:00 GMT+7

Cách cung cấp và quản lý server Docker từ xa bằng Máy Docker trên CentOS 7

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

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

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

Yêu cầu

Để làm theo hướng dẫn này, bạn cần những thứ sau:

  • Máy local chạy CentOS 7 có cài đặt Docker. (xem Cách cài đặt và sử dụng Docker trên CentOS 7 để biết hướng dẫn)
  • Mã thông báo API DigitalOcean. Nếu bạn chưa 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ã thông báo, hãy đảm bảo 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ư đã cho trong bài viết đó.

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

Ở bước này, ta sẽ thực hiện quá trình cài đặt Docker Machine trên máy tính local đang chạy CentOS 7 của bạn.

Để download và cài đặt file binary , 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 file phải là docker-machine-Linux-x86_64 . Đổi tên 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:

chmod +x docker-machine 

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

sudo mv docker-machine /usr/local/bin 

Kiểm tra version , điều này sẽ cho biết rằng nó đã được cài đặt đúng cách:

  • docker-machine version

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

Output
docker-machine version 0.14.0, build 89b8332

Bước 2 - Cài đặt tập lệnh máy Docker bổ sung

Có ba tập lệnh bash trong repository lưu trữ Docker Machine GitHub được thiết kế để tạo điều kiện thuận lợi cho việc sử dụng các lệnh dockerdocker-machine . Chúng cung cấp khả năng hoàn thành lệnh và tùy chỉnh bash-prompt.

Trong bước này, ta sẽ cài đặt ba tập lệnh trên máy local của bạn. Chúng sẽ được download và cài đặt vào thư /etc/bash_completion.d .

Tập lệnh đầu tiên giúp bạn có thể thấy máy đang hoạt động trong dấu nhắc bash của bạn . Điều này rất hữu ích khi bạn làm việc với và chuyển đổi giữa nhiều máy được tài liệu hóa. Tập lệnh được gọi là docker-machine-prompt.bash . Để download , 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 tất cài đặt file ở trên, bạn sẽ phải đặt giá trị tùy chỉnh cho biến PS1 trong file .bashrc của bạn . Vì vậy, hãy mở nó bằ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

Copy paste dòng sau vào cuối file đó:

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

Với sửa đổi này đối với file ~/.bashrc của bạn, 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 shell .

Lưu và đóng file .

Tập lệnh thứ hai được gọi là docker-machine-wrapper.bash . Nó thêm lệnh con use lệnh docker docker-machine , giúp bạn dễ dàng chuyển đổi giữa các Máy được Dockerized. Để download , 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 các lệnh docker-machine . Download bằng cách sử dụ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 nay, hãy đóng, sau đó mở lại terminal 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. Lệnh hoàn thành cho dockerdocker-machine lệnh bây giờ sẽ được làm việc. Nếu nó không hoạt động, có khả năng là gói bash-completion 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ẽ sửa chữa nó.

Bước 3 - Cấp phép Server lưu trữ Tài liệu hóa bằng Máy Docker

Đến đây bạn có Docker và Máy Docker đang chạy trên máy local của bạn , giờ đây bạn có thể cung cấp Server tài liệu hóa trên account DigitalOcean của bạn bằng cách sử dụng lệnh docker-machine create docker của Docker Machine. Nếu bạn chưa làm như vậy, hãy chỉ định mã thông báo API DigitalOcean của bạn cho một biến bash bằng cách sử dụng:

  • export shell-variable=your-api-token

LƯU Ý: Hướng dẫn này sử dụng DOTOKEN làm biến bash cho mã thông báo DO API. Tên biến không nhất thiết phải là DOTOKEN, và không cần phải viết hoa toàn bộ.

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

  • nano ~/.bashrc

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

~/.bashrc
export DOTOKEN=your-api-token

Để kích hoạt biến trong phiên terminal hiện tại, hãy nhập:

  • source ~/.bashrc

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

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

Đầu ra một phần khi server đang được tạo như sau. Trong kết quả này, tên của server 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 SSH key được tạo ra cho các server mới để docker-machine có thể truy cập nó từ xa. Server đượ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 Server đã được cài đặt và chạy.

Để xem server mới tạo từ dòng lệnh, hãy nhập:

  • docker-machine ls

Đầu ra phải giống như sau :

Output
NAME 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 server được tài liệu hóa

Bước này chỉ cho bạn cách chỉ định hệ điều hành cơ sở và version cho Server lưu trữ tài liệu được tạo bằng --digitalocean-image .

Ví dụ: để tạo server lưu trữ Tài liệu hóa bằng CentOS 7, hãy nhập:

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

Điều gì sẽ xảy ra nếu bạn muốn chạy Debian 8 trên server của bạn ? 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 server Dockerized với Docker Machine được cho là version mới nhất (hoặc version LTS mới nhất cho Ubuntu). Tuy nhiên, tại thời điểm xuất bản này, lệnh docker-machine create vẫn đang sử dụng Ubuntu 16.04 LTS làm hệ điều hành cơ bản, mặc dù Ubuntu 18.04 là version 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 version mong muốn bằng cách chuyển --digitalocean-image vào --digitalocean-image docker-machine create :

  • 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à sự lựa chọn duy nhất mà bạn có. Bạn cũng có thể chỉ định kích thước của Server . Theo mặc định, nó là Server nhỏ nhất, có RAM 1 GB, CPU đơn và ổ SSD 25 GB.

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

Ví dụ: để cung cấp một 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

Mẹo: Nếu bạn làm mới trang Server của trang tổng quan DigitalOcean, bạn sẽ thấy các server mới mà bạn đã tạo bằng lệnh docker-machine .

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

Bạn đã thấy cách cung cấp server lưu trữ được Tài liệu hóa bằng cách sử dụng lệnh con create . Bạn cũng đã thấy cách liệt kê các server có sẵn cho Máy Docker bằng ls con ls . Trong bước này, bạn sẽ tìm hiểu thêm về một vài lệnh con của docker docker-machine .

Để nhận thông tin chi tiết về server lưu trữ được Tài liệu hóa, hãy sử dụng lệnh phụ inspect , như sau:

  • docker-machine inspect machine-name

Đầu ra phải bao gồm các dòng như thế này. Dòng Hình ảnh tiết lộ version của 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 server , hãy nhập:

  • docker-machine config machine-name

Đầu ra phải giống 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 kết quả của lệnh docker-machine config tiết lộ địa chỉ IP của server lưu trữ, nhưng bạn cũng có thể lấy thông tin đó bằng lệnh :

  • docker-machine ip machine-name

Nếu bạn cần tắt server từ xa, bạn có thể sử dụng docker-machine để dừng nó:

  • docker-machine stop machine-name

Xác minh nó đã dừng lại.

  • docker-machine ls

Trạng thái của server đã thay đổi:

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

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

  • docker-machine start machine-name

Xác minh nó đã được khởi động:

  • docker-machine ls

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

Ouput
NAME 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 server :

  • docker-machine rm machine-name

Bước 6 - Thực thi lệnh trên server được tài liệu hóa thông qua SSH

Đến đây, bạn đã nhận được thông tin về server 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 root trên server Docker bằng cách sử dụng lệnh con ssh của docker-machine từ hệ thống local của bạn. Phần này giải thích cách thực hiện các lệnh ssh qua docker-machine cũng như cách mở một phiên SSH tới một server Dockerized.

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

  • docker-machine ssh machine-name yum update

Bạn không chắc server Docker từ xa của bạn đang sử dụng kernel nào? Nhập nội dung sau:

  • docker-machine ssh machine-name uname -r

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

  • docker-machine ssh machine-name

Dấu nhắc lệnh của bạn sẽ thay đổi để cho biết là bạn đã đăng nhập vào server từ xa:

root@machine-name# 

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

exit 

Bước 7 - Kích hoạt Server lưu trữ Tài liệu hóa

Kích hoạt server Docker kết nối ứng dụng Docker local của bạn với hệ thống đó, điều này giúp bạn có thể chạy các lệnh docker bình thường trên hệ thống từ xa. Để kích hoạt server Docker, hãy nhập 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 sau:

  • docker-machine use machine-name

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

Sau khi nhập bất kỳ lệnh nào ở trên, dấu nhắc bash của bạn sẽ thay đổi để cho biết ứng dụng client Docker của bạn đang trỏ đến server Docker từ xa. Nó sẽ có dạng này. Tên của server lưu trữ sẽ ở cuối dấu nhắc :

username@localmachine:~ [machine-name]$ 

Bây giờ bất kỳ lệnh docker nào bạn nhập tại dấu nhắc lệnh này sẽ được thực thi trên server từ xa đó.

Nếu một server đang hoạt động trên terminal mà lệnh docker-machine ls được chạy, dấu hoa thị bên dưới cột ACTIVE cho thấy đó là server đang 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

LƯU Ý: Khi server hoạt động, bất kỳ lệnh docker nào bạn nhập trên terminal bạn đang sử dụng sẽ được thực thi trên server từ xa. Tuy nhiên, tất cả các lệnh Linux bình thường đều được thực thi trên máy tính local .

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

docker-machine use -u 

Bạn sẽ được đưa trở lại dấu nhắc cho hệ thống local của bạn.

Bây giờ hãy tạo containers trên máy từ xa.

Bước 8 - Tạo containers Docker trên server lưu trữ tài liệu hóa từ xa

Lúc này, bạn đã cấp phép cho Dockerized Server trên account DigitalOcean của bạn và bạn đã kích hoạt nó - tức là ứng dụng client Docker của bạn đang trỏ đến nó. Bước hợp lý tiếp theo là quay các container trên đó. Ví dụ: hãy thử chạy containers 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 containers Nginx trên máy đó:

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

Trong lệnh này, ta đang ánh xạ cổng 80 trong containers Nginx thành cổng 8080 trên server Dockerized để ta có thể truy cập trang Nginx mặc định từ bất kỳ đâu.

Nếu lệnh được thực thi thành công, bạn 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 server lưu trữ Docker vẫn được kích hoạt (như tên của nó trong dấu nhắc ), bạn có thể liệt kê các hình ảnh trên server đó:

docker images 

Đầu ra phải bao gồm hình ảnh Nginx bạn vừa sử dụng, cộng với những hình ảnh khác mà bạn đã download trước đó:

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

Bạn cũng có thể liệt kê các containers đang hoạt động hoặc đang chạy trên server :

  • docker ps

Nếu containers Nginx bạn đã chạy trong bước này là containers hoạt động duy nhất, thì kết quả sẽ giống như sau:

Output
CONTAINER 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 khỏi dấu nhắc cho server từ xa, hãy nhập exit . Điều này cũng sẽ đóng terminal :

exit 

Mẹo: Nếu bạn định tạo containers trên server từ xa, ứng dụng client Docker của bạn phải trỏ đến nó - nghĩa là, nó phải là server đang hoạt động trong terminal mà bạn đang sử dụng. Nếu không, bạn sẽ tạo containers trên máy local của bạn . Hãy để dấu nhắc lệnh của bạn làm hướng dẫn cho bạn.

Bước 9 - Tắt báo cáo sự cố (Tùy chọn)

Theo mặc định, khi nào nỗ lực cung cấp server lưu trữ Tài liệu hóa bằng Máy Docker không thành công hoặc Máy Docker gặp sự cố, một số thông tin chẩn đoán sẽ tự động được gửi đến account Docker trên Bugsnag. Nếu không 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 file trống no-error-report tên là no-error-report trong folder installations .docker/machine .

Để thực hiện điều đó, chỉ cần nhập:

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

Kiểm tra file để tìm thông báo lỗi nếu cấp phép không thành công hoặc Máy Docker bị treo.

Kết luận

Đây là phần giới thiệu về cách cài đặt và sử dụng Docker Machine để cung cấp nhiều Docker Server từ xa từ một hệ thống local . Như vậy, bạn có thể nhanh chóng cung cấp nhiều server lưu trữ Tài liệu hóa trên account 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 download trong hướng dẫn này được lưu trữ trên trang GitHub này .


Tags:

Các tin liên quan

Cách cung cấp và quản lý server Docker từ xa bằng Máy Docker trên Ubuntu 16.04
2018-05-21
Cách quản lý và giám sát các container Docker có khô trên Ubuntu 16.04
2018-04-25
Cách tạo image Docker và lưu trữ kho lưu trữ image Docker với GitLab
2018-02-12
3 Mẹo để Đặt tên container Docker
2018-01-04
3 Mẹo để Đặt tên container Docker
2018-01-04
Cách cài đặt Docker Compose trên Ubuntu 16.04
2017-12-21
Cách sử dụng Traefik làm Reverse Proxy cho Docker Containers trên Ubuntu 16.04
2017-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