Cách sử dụng server Docker từ xa để tăng tốc quy trình làm việc của bạn
Việc xây dựng các file binary và hình ảnh sử dụng nhiều CPU là một quá trình rất chậm và tốn thời gian, có thể biến notebook của bạn thành một máy sưởi không gian đôi khi. Việc đẩy Docker image trên kết nối chậm cũng mất nhiều thời gian. May mắn là có một cách khắc phục dễ dàng cho những vấn đề này. Docker cho phép bạn tải tất cả các việc đó xuống một server từ xa để máy local của bạn không phải thực hiện công việc khó khăn đó.Tính năng này đã được giới thiệu trong Docker 18.09. Nó hỗ trợ kết nối với server Docker từ xa thông qua SSH. Nó yêu cầu rất ít cấu hình trên client và chỉ cần một server Docker thông thường mà không cần bất kỳ cấu hình đặc biệt nào chạy trên máy từ xa. Trước Docker 18.09, bạn phải sử dụng Docker Machine để tạo một server Docker từ xa và sau đó cấu hình môi trường Docker local để sử dụng nó. Phương pháp mới này loại bỏ sự phức tạp bổ sung đó.
 Trong hướng dẫn này, bạn sẽ tạo Server để lưu trữ  server  Docker từ xa và  cấu hình  lệnh docker trên máy local  của bạn để sử dụng nó.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Một account DigitalOcean. Bạn có thể tạo một account nếu bạn chưa có.
-  Docker được cài đặt trên máy local  hoặc  server  phát triển của bạn. Nếu bạn đang làm việc với Ubuntu 18.04, hãy làm theo Bước 1 và 2 của Cách cài đặt và sử dụng Docker trên Ubuntu 18.04 ; nếu không, hãy làm theo tài liệu chính thức để biết thông tin về cách cài đặt trên các hệ điều hành khác. Đảm bảo thêm  user  không phải root của bạn vào  group  docker, như được mô tả trong Bước 2 của hướng dẫn được liên kết.
Bước 1 - Tạo Server Docker
Để bắt đầu, hãy quay một Server với một lượng sức mạnh xử lý tương đối. Các gói Tối ưu hóa CPU là hoàn hảo cho mục đích này, nhưng các gói Tiêu chuẩn cũng hoạt động tốt. Nếu bạn sẽ biên dịch các chương trình sử dụng nhiều tài nguyên, thì các gói Tối ưu hóa CPU cung cấp các lõi CPU chuyên dụng cho phép xây dựng nhanh hơn. Mặt khác, các gói Tiêu chuẩn cung cấp tỷ lệ CPU trên RAM cân bằng hơn.
Hình ảnh một cú nhấp chuột của Docker đảm nhận tất cả quá trình cài đặt cho ta . Thực hiện theo liên kết này để tạo server tối ưu hóa CPU 16GB / 8vCPU bằng Docker từ console .
 Ngoài ra, bạn có thể sử dụng doctl để tạo Server từ dòng lệnh local   của bạn . Để cài đặt nó, hãy làm theo hướng dẫn trong tệp doctl README trên GitHub .
Lệnh sau tạo một server tối ưu hóa CPU 16GB / 8vCPU mới trong vùng FRA1 dựa trên Docker image One-click:
- doctl compute server create docker-host \ 
-     --image docker-18-04 \ 
-     --region fra1 \ 
-     --size c-8 \ 
-     --wait \ 
-     --ssh-keys $(doctl compute ssh-key list --format ID --no-header | sed 's/$/,/' | tr -d '\n' | sed 's/,$//') 
Lệnh doctl sử dụng giá trị ssh-keys để chỉ định SSH key  mà nó sẽ áp dụng cho Server mới của bạn.  Ta  sử dụng một vỏ con để gọi doctl compute ssh-key-list để truy xuất các SSH key  được liên kết với account  DigitalOcean của bạn, sau đó phân tích cú pháp kết quả bằng cách sử dụng lệnh sed và tr để định dạng dữ liệu theo đúng định dạng. Lệnh này bao gồm tất cả các SSH key  trong account  của bạn, nhưng bạn có thể thay thế lệnh con được đánh dấu bằng dấu  fingerprint  của bất kỳ khóa nào bạn có trong account   của bạn .
Khi Server được tạo, bạn sẽ thấy địa chỉ IP của nó trong số các chi tiết khác:
OutputID           Name           Public IPv4        Private IPv4    Public IPv6    Memory    VCPUs    Disk    Region    Image                                 Status    Tags    Features    Volumes 148681562    docker-host    your_server_ip                                    16384     8        100     fra1      Ubuntu Docker 5:18.09.6~3 on 18.04    active  Bạn có thể tìm hiểu thêm về cách sử dụng lệnh doctl trong hướng dẫn Cách sử dụng doctl, Ứng dụng khách dòng lệnh DigitalOcean chính thức .
Khi Server được tạo, bạn sẽ có sẵn server Docker. Vì mục đích bảo mật, hãy tạo một user Linux để sử dụng thay vì root .
Đầu tiên, kết nối với Server bằng SSH với quyền là user gốc :
- ssh root@your_server_ip 
Sau khi kết nối, hãy thêm user mới. Lệnh này thêm một lệnh có tên sammy :
- adduser sammy 
Sau đó, thêm user vào group docker để cấp cho nó quyền chạy các lệnh trên server Docker.
- sudo usermod -aG docker sammy 
Cuối cùng, thoát khỏi  server  từ xa  bằng lệnh  exit .
 Bây giờ  server  đã sẵn sàng, hãy cấu hình lệnh docker local  để sử dụng nó.
Bước 2 - Cấu hình Docker để Sử dụng Server Từ xa
 Để sử dụng  server  từ xa làm  server  lưu trữ Docker thay vì máy local , hãy đặt biến môi trường DOCKER_HOST trỏ đến  server  từ xa. Biến này sẽ hướng dẫn client  Docker CLI kết nối với  server  từ xa.
- export DOCKER_HOST=ssh://sammy@your_server_ip 
Bây giờ bất kỳ lệnh Docker nào bạn chạy sẽ được chạy trên Server. Ví dụ: nếu bạn khởi động containers web server và hiển thị một cổng, nó sẽ được chạy trên Server và sẽ có thể truy cập được thông qua cổng mà bạn đã hiển thị trên địa chỉ IP của Server.
 Để  xác minh  bạn đang truy cập Server  với quyền  là  server  Docker, hãy chạy docker info .
- docker info 
Bạn sẽ thấy tên  server  của Server được liệt kê trong trường Name như sau:
Output… Name: docker-host … Một điều cần lưu ý là khi bạn chạy một docker build lệnh, bối cảnh xây dựng (tất cả các file và folder  truy cập từ Dockerfile ) sẽ được gửi đến  server  và sau đó là quá trình xây dựng sẽ chạy. Tùy thuộc vào kích thước của bối cảnh xây dựng và số lượng file , có thể mất nhiều thời gian hơn so với xây dựng hình ảnh trên máy local . Một giải pháp sẽ là tạo một folder  mới dành riêng cho  Docker image  và chỉ sao chép hoặc liên kết các file  sẽ được sử dụng trong hình ảnh để không có file  không cần thiết nào vô tình được tải lên.
 Khi bạn đã đặt biến DOCKER_HOST bằng cách sử dụng export , giá trị của nó sẽ tồn tại trong suốt thời gian của phiên shell. Nếu bạn cần sử dụng lại  server  Docker local   của bạn , bạn có thể xóa biến bằng lệnh sau:
unset DOCKER_HOST Kết luận
Bạn đã tạo một server Docker từ xa và kết nối với nó local . Lần tới khi pin notebook của bạn sắp hết hoặc bạn cần tạo một Docker image nặng, hãy sử dụng server Docker từ xa sáng bóng thay vì máy local của bạn.
Bạn cũng có thể quan tâm đến việc tìm hiểu cách tối ưu hóa Docker image để production hoặc cách tối ưu hóa chúng đặc biệt cho Kubernetes .
Các tin liên quan
Cách cài đặt WordPress với Docker Compose2019-05-24
Cách di chuyển Docker compose workflow sang Kubernetes
2019-04-03
Cách tối ưu hóa image Docker cho sản xuất
2019-03-25
Giữ lại một ứng dụng Node.js để phát triển với Docker Compose
2019-03-05
Cách cài đặt và sử dụng Docker Compose trên CentOS 7
2019-01-23
Cách sử dụng Traefik làm reverse-proxy cho container Docker trên Debian 9
2019-01-08
Cách thiết lập registry Docker riêng trên Ubuntu 18.04
2019-01-07
Cách thiết lập triển khai nhiều node với Rancher 2.1, Kubernetes và Docker Machine trên Ubuntu 18.04
2019-01-03
Cách tạo ứng dụng Node.js với Docker
2018-11-29
Cách quản lý triển khai nhiều node với Máy Rancher và Docker trên Ubuntu 16.04
2018-10-30
 

