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 Ubuntu 16.04

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ư 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 Ubuntu 16.04 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 Ubuntu 16.04 có cài đặt Docker (xem Cách cài đặt và sử dụng Docker trên Ubuntu 16.04 để 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. Để sử dụng dễ 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

Trong 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 chạy Ubuntu 16.04 của bạn.

Để download và cài đặt file binary Máy Docker, 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 này 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 cho phép bạn xem máy đang hoạt động từ dấu nhắc bash của bạn. Điều này rất hữu ích khi bạn đang làm việc 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 . Để làm như 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

Trong file đó, có ba dòng bắt đầu bằng PS1 . Chúng phải giống như sau:

~ / .bashrc
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '  PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" 

Đối với mỗi dòng, hãy chèn $(__docker_machine_ps1 " [%s]") gần cuối để chúng đọc:

~ / .bashrc
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__docker_machine_ps1 " [%s]")\$ '  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(__docker_machine_ps1 " [%s]")\$ '  PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$(__docker_machine_ps1 " [%s]")$PS1" 

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 dễ dàng chuyển đổi giữa các Máy Docker. Để 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.

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 DOTOKEN=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 .

Mở file đó bằng nano :

  • 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 máy. Để tạo máy đầ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 máy đang được tạo như sau. Trong kết quả này, tên của máy là ubuntu1604-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 is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env ubuntu1604-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 máy 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 ubuntu1604-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

Theo mặc định, hệ điều hành cơ bản được sử dụng khi tạo server Dockerized với Docker Machine được cho là Ubuntu LTS mới nhất. 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 trên một máy được cấp phép gần đây, bạn sẽ phải chỉ định Ubuntu cùng với version mong muốn bằng cách chuyển --digitalocean-image tới lệnh docker-machine create --digitalocean-image docker-machine create .

Ví dụ: để tạo một máy sử dụng Ubuntu 18.04, hãy nhập:

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

Bạn không bị giới hạn ở một version Ubuntu. Bạn có thể tạo máy bằng bất kỳ hệ điều hành nào được hỗ trợ trên DigitalOcean. Ví dụ, để tạo một máy sử dụng Debian 8, hãy nhập:

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

Để cung cấp server lưu trữ Dockerized sử dụng CentOS 7 làm hệ điều hành cơ sở, hãy chỉ định centos-7-0-x86 làm tên hình ảnh, như sau:

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

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 console DigitalOcean của bạn , bạn sẽ thấy các máy 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 bổ sung

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ẽ học thêm 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 hiển thị version của bản phân phối Linux được sử dụng và dòng kích thước cho biết kích thước slug:

Output
... { "ConfigVersion": 3, "Driver": { "IPAddress": "203.0.113.71", "MachineName": "ubuntu1604-docker", "SSHUser": "root", "SSHPort": 22, ... "Image": "ubuntu-16-04-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

Tình trạng của máy đã thay đổi:

Ouput
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS ubuntu1604-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 ubuntu1604-docker - digitalocean Running tcp://203.0.113.71:2376 v18.05.0-ce

Sau đó, bạn có thể xóa nó bằng cách sử dụng:

  • docker-machine rm machine-name

Server sẽ bị xóa cùng với SSH key được tạo cho nó bởi docker-machine. Bây giờ, khi liệt kê các server được Tài liệu hóa, bạn sẽ không thấy server mà bạn vừa xóa:

  • docker-machine ls

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ề máy 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 máy có Ubuntu 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 database gói trên server Docker:

  • docker-machine ssh machine-name apt-get update

Bạn thậm chí có thể áp dụng các bản cập nhật có sẵn bằng cách sử dụng:

  • docker-machine ssh machine-name apt-get upgrade

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 máy. Nó 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:

Output
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 ubuntu1604-docker * digitalocean Running tcp://203.0.113.71:2376 v18.05.0-ce

Để 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. Điều này cũng sẽ đóng terminal :

  • exit

Lưu ý: Nếu bạn định tạo containers trên một máy từ xa, ứng dụng client Docker của bạn phải trỏ đến nó - nghĩa là, nó phải là máy đ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 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 Docker Machine 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 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 file trống no-error-report tên là no-error-report trong folder .docker/machine cài đặt của bạn.

Để tạo file , hãy 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 CentOS 7
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