Thứ ba, 25/06/2019 | 00:00 GMT+7

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 sedtr để đị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:

Output
ID 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 .


Tags:

Các tin liên quan

Cách cài đặt WordPress với Docker Compose
2019-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