Cách triển khai container Docker trên máy chủ từ xa

  • Việc sử dụng Docker Compose và SSH hoặc GitHub Actions giúp đơn giản hóa việc triển khai container lên máy chủ từ xa và giúp việc cập nhật dịch vụ dễ dàng hơn.
  • Các công cụ như WSL 2, VS Code và Dev Containers cho phép phát triển trong môi trường Docker từ xa với trải nghiệm gần như cục bộ.
  • Plesk và Portainer cung cấp giao diện web để quản lý các máy chủ Docker cục bộ và từ xa, các ngăn xếp Compose, volume và image.
  • Với VNC/noVNC và Caddy, bạn có thể chạy các ứng dụng đồ họa trong các container từ xa và truy cập chúng một cách an toàn từ trình duyệt.

Triển khai container Docker trên máy chủ từ xa

Làm việc với các container Docker trên máy chủ từ xa Nó đã trở thành công cụ thiết yếu cho bất kỳ ai muốn triển khai các ứng dụng hiện đại mà không bị sa lầy vào các phụ thuộc, phiên bản thư viện và câu nói kinh điển "nó hoạt động trên máy của tôi". Tuy nhiên, khi chúng ta chuyển từ việc chạy một ứng dụng đơn giản sang một ứng dụng phức tạp hơn. docker run Việc chuyển từ thiết lập một hệ thống triển khai phức tạp cục bộ trên máy chủ Linux, sử dụng Docker Compose, GitHub shares, Plesk, Portainer hoặc thậm chí các ứng dụng đồ họa có thể truy cập qua trình duyệt, sẽ trở nên phức tạp hơn một chút.

Nếu mục tiêu của bạn là triển khai các container Docker trên một máy chủ từ xa. (Ubuntu, Debian, Windows với WSL 2, máy chủ đám mây, Plesk, v.v.) và thực hiện theo cách dễ bảo trì, tự động và an toàn, hướng dẫn này sẽ cung cấp cho bạn một hành trình khá đầy đủ: từ việc sử dụng cơ bản Docker Compose từ xa, đến môi trường phát triển với VS Code, triển khai từ Plesk, quản trị với Portainer và thực thi từ xa các ứng dụng đồ họa bằng noVNC và Caddy.

Khái niệm cơ bản: Container Docker và triển khai từ xa

Docker là một nền tảng container. Nó đóng gói một ứng dụng cùng với tất cả những gì cần thiết (thư viện, các phụ thuộc, các tập tin nhị phân, cấu hình hệ thống tối thiểu) để ứng dụng đó chạy giống nhau trên bất kỳ máy nào đã cài đặt Docker engine. Điểm khác biệt chính so với máy ảo là container không bao gồm một hệ điều hành hoàn chỉnh; thay vào đó, nó chia sẻ nhân hệ điều hành của máy chủ, dẫn đến hình ảnh nhẹ hơn và hiệu suất tốt hơn.

Triển khai các container Docker trên máy chủ từ xa Thông thường, bạn sẽ có một máy chủ (ví dụ: máy chủ Ubuntu trên đám mây) với Docker và, tùy chọn, Docker Compose, sau đó gửi mã hoặc hình ảnh đến đó để chạy. Bạn có thể thực hiện việc này thủ công qua SSH, tự động hóa bằng GitHub Actions hoặc tích hợp với các bảng điều khiển như Plesk hoặc các công cụ như Portainer.

Các tình huống thực tế chính mà bạn sẽ gặp phải Khi nói về "Docker từ xa", có ba khía cạnh: phát triển cục bộ nhưng chạy container trên một máy khác (hoặc trong WSL 2), triển khai tự động các dịch vụ backend/frontend, và quản lý các container sản xuất (giám sát, ghi nhật ký, khởi động lại, chính sách mạng, v.v.). Công nghệ thì giống nhau; điều thay đổi là cách thức điều phối nó.

Ngoài các dịch vụ phụ trợ truyền thống,Docker cho phép thực hiện một điều ít người biết đến nhưng rất mạnh mẽ: chạy các ứng dụng đồ họa (trình soạn thảo email, IDE, công cụ phân tích, v.v.) bên trong các container từ xa và truy cập chúng từ trình duyệt bằng VNC qua WebSocket. Đây là một cách thuận tiện để tận dụng các máy chủ mạnh mẽ khi máy tính cá nhân của bạn không đủ mạnh.

Từ lệnh `docker run` đến `Docker Compose` trên máy chủ từ xa.

Sử dụng Docker Compose trên máy chủ từ xa

Một kiểu triển khai thủ công khá phổ biến. Nó bao gồm việc có một kho mã nguồn trên GitHub, một máy chủ Ubuntu từ xa đã cài đặt Docker và một quy trình CI/CD (ví dụ: GitHub Actions) thực hiện các bước sau khi bạn đẩy mã lên một nhánh như... development o main:

  • Kết nối đến máy chủ từ xa thông qua SSH.
  • Dừng máy và di chuyển các thùng chứa đang hoạt động.
  • Tải xuống các ảnh Docker mới từ Docker Hub (hoặc từ kho lưu trữ riêng của bạn).
  • chạy docker run cho mỗi dịch vụ.
  • Hãy để Nginx (hoặc máy chủ proxy ngược mà bạn sử dụng) chuyển hướng lưu lượng truy cập đến các cổng của từng container.

Khi bạn chuyển sang sử dụng Docker Compose Quy trình được đơn giản hóa đáng kể, bởi vì thay vì quản lý từng container một, bạn định nghĩa toàn bộ hệ thống (giao diện người dùng, máy chủ, cơ sở dữ liệu, bộ nhớ đệm, v.v.) trong một thành phần duy nhất. docker-compose.yml, với mạng lưới, khối lượng và các biến số môi trường của nó.

Cách làm đơn giản nhất (và khá phổ biến) với GitHub Actions Quy trình làm việc cần thực hiện một thao tác sau: cd vào thư mục dự án trên máy chủ từ xa (nơi bạn docker-compose.yml) và thực thi các lệnh như:

  • docker compose pull Để mang đến những hình ảnh mới nhất.
  • docker compose down dừng lại và loại bỏ các thùng chứa cũ (tùy chọn kèm theo) --remove-orphans).
  • docker compose up -d --build nếu bạn tạo ảnh từ chính máy chủ.

Phương pháp này hoạt động tốt và khá hiệu quả.Nếu bạn kiểm soát tốt thông tin đăng nhập, biến môi trường và dung lượng lưu trữ, bạn có thể cải thiện bảo mật bằng cách ngăn GitHub Actions có quyền truy cập root hoàn toàn vào máy chủ, hạn chế khóa SSH, sử dụng người dùng chuyên dụng hoặc thậm chí hiển thị Docker như một dịch vụ từ xa an toàn với chứng chỉ, thay vì chạy mọi thứ qua SSH.

Không có "phương pháp thần kỳ" nào tốt hơn thế này. Đối với một môi trường đơn giản: chìa khóa là tự động hóa và viết mã tốt. docker-compose.ymlHãy sử dụng các thẻ hình ảnh không thay đổi (ví dụ: các phiên bản cụ thể) và có cơ chế khôi phục (ví dụ: lưu phiên bản trước của bản phối hoặc hình ảnh).

Môi trường phát triển từ xa với Docker, WSL 2 và VS Code.

Quản lý Docker từ xa với VS Code và WSL 2

Trên Windows, việc phát triển phần mềm bằng Docker sử dụng WSL 2 rất phổ biến.Docker Desktop cho Windows cung cấp một công cụ dựa trên WSL 2 cho phép bạn chạy các container Linux và Windows từ cùng một máy, đồng thời chỉnh sửa mã bằng VS Code và kiểm thử trên trình duyệt cục bộ.

Quy trình làm việc điển hình để thiết lập môi trường phát triển với các container từ xa sử dụng WSL 2 như sau:

  1. Cài đặt WSL 2 và một bản phân phối Linux (ví dụ: Ubuntu).
  2. Bạn cài đặt Docker Desktop trên Windows và bật tùy chọn "Sử dụng công cụ dựa trên WSL 2" trong Cài đặt > Chung.
  3. Trong Cài đặt > Tài nguyên > Tích hợp WSL, bạn chọn các bản phân phối WSL mà bạn muốn Docker hoạt động trên đó.
  4. Bạn kiểm tra quá trình cài đặt bằng docker --version và chạy docker run hello-world trong bản phân phối WSL.

Phát triển “bên trong” các thùng chứa Và không chỉ việc sử dụng Docker làm công cụ là đủ; VS Code đóng vai trò then chốt. Với WSL, Dev Containers và các tiện ích mở rộng của Docker, bạn có thể làm được những việc như:

  • Mở thư mục dự án của bạn được lưu trữ trong WSL trực tiếp trong VS Code.
  • Mở lại thư mục đó “trong môi trường phát triển” (Dev Container), sử dụng lệnh sau: Dockerfile và một devcontainer.json Hãy mô tả môi trường lý tưởng của bạn (phiên bản Python, Node, v.v.).
  • Gỡ lỗi ứng dụng của bạn từ VS Code trong khi ứng dụng đang chạy trong container.

Một ví dụ rất phổ biến Cách làm này áp dụng cho dự án Django hoặc Node.js: bạn sao chép kho lưu trữ vào WSL, mở thư mục bằng lệnh sau: code .Bạn chọn một định nghĩa Dev Container (ví dụ: “Python 3”) và VS Code sẽ xây dựng ảnh và khởi động container với tất cả các phụ thuộc. Từ đó, bạn có thể chạy, gỡ lỗi và xác minh rằng mã hoạt động trên Linux ngay cả khi hệ thống máy chủ của bạn là Windows.

Phương pháp này cũng hữu ích khi máy tính của bạn không mạnh lắm.Vì bạn có thể chuyển một phần tải sang máy chủ từ xa bằng Docker và kết nối với nó bằng VS Code thông qua SSH và Dev Containers, hoạt động gần như thể nó đang chạy cục bộ nhưng lại dựa vào tài nguyên của máy chủ.

Triển khai ứng dụng trên máy chủ đám mây bằng Docker và Docker Compose

Thiết lập máy chủ đám mây với Docker sẵn sàng cho việc triển khai. Với hầu hết các nhà cung cấp, quá trình này diễn ra rất nhanh: bạn chọn một ảnh hệ thống đã được cài đặt sẵn Docker, chờ vài phút và máy của bạn đã sẵn sàng để nhận container.

Một mô hình điển hình để triển khai một ứng dụng Node.js đơn giản. Nó sẽ như thế này:

  1. Tạo dự án Node.js (ví dụ: một dự án "Hello world" với Express) trên máy tính cục bộ của bạn: thư mục dự án, thư mục con app, npm init, cài đặt các phần phụ thuộc (chẳng hạn như express) và một index.js Thao tác này thiết lập một máy chủ trên cổng 3030 với một thông báo cơ bản.
  2. Đóng gói ứng dụng bằng Docker. Dockerfile điều đó xác định hình ảnh cơ bản (ví dụ: node:12), WORKDIRSao chép các tệp ứng dụng, chạy npm install và để lộ cổng bên trong.
  3. Thêm một .dockerignore để tránh đặt những thứ như node_modules.
  4. Tạo một docker-compose.yml trong thư mục gốc của dự án, chỉ định phiên bản (ví dụ: 3.8) và xác định dịch vụ chính của nó, build, ánh xạ cổng (3030:3030) và lệnh (node index).

Khi bạn đã chuẩn bị xong dự án và bản soạn thảoQuá trình triển khai lên máy chủ từ xa thường diễn ra theo trình tự sau:

  • Bạn kết nối với máy chủ thông qua SSH.
  • Bạn sao chép kho lưu trữ hoặc tải lên các tệp (Git, SCP, rsync…).
  • Bạn cài đặt docker-soạn nếu nó chưa có sẵn (trong nhiều bản phân phối Linux, bạn phải cài đặt nó riêng biệt với Docker, ví dụ bằng cách tải xuống tệp nhị phân từ GitHub và cấp quyền thực thi cho nó).
  • Bạn thực hiện docker-compose up (o docker compose up (tùy thuộc vào phiên bản) để các hình ảnh được tải xuống, hình ảnh ứng dụng của bạn được xây dựng và các container được khởi động.

Một điểm thường bị bỏ qua là tường lửa của nhà cung cấp.Nếu dịch vụ của bạn lắng nghe trên cổng 3030, bạn cần mở cổng này trong quy tắc tường lửa hoặc tạo chính sách cụ thể và liên kết nó với máy chủ. Nếu không, bạn sẽ chỉ thấy thông báo "kết nối bị từ chối" từ bên ngoài, ngay cả khi container đang chạy đúng cách.

Sau khi hệ thống đi vào hoạt động, bạn có thể truy cập ứng dụng. sử dụng địa chỉ IP công cộng và cổng được hiển thị của máy chủ (ví dụ: https://IP_DEL_SERVIDOR:3030), hoặc bằng cách ẩn cổng đó phía sau một máy chủ proxy ngược như Nginx/Traefik lắng nghe trên cổng 80/443.

Quản lý container từ xa bằng Plesk và Docker

Nếu bạn sử dụng Plesk làm bảng điều khiển của mìnhBạn cũng có thể sử dụng tiện ích mở rộng Docker của nó để quản lý các container trực tiếp từ giao diện web, cả trên chính máy chủ và trên các máy chủ Docker từ xa.

Plesk hỗ trợ Docker trên nhiều hệ điều hành khác nhau.CentOS 7, RHEL 7, Debian 10/11/12, nhiều phiên bản Ubuntu khác nhau (18.04, 20.04, 22.04, 24.04), AlmaLinux 8/9, Rocky Linux 8.x và Virtuozzo 7 đã được cập nhật. Trong Plesk dành cho Windows, Docker không chạy cục bộ mà chạy trên một máy từ xa đóng vai trò là máy chủ Docker.

Có một số hạn chế quan trọng cần lưu ý.:

  • Bạn không thể sử dụng tiện ích mở rộng Docker nếu Plesk được triển khai bên trong vùng chứa Docker.
  • Để sử dụng các dịch vụ Docker từ xa (tức là các máy chủ bên ngoài), bạn cần có giấy phép bổ sung hoặc các gói cụ thể (Hosting Pack, Power Pack, Developer Pack).
  • Các container Docker được quản lý bởi Plesk không "có thể di chuyển" theo đúng nghĩa, mặc dù bạn có thể sao lưu dữ liệu mà chúng sử dụng bằng cách sử dụng volume hoặc snapshot.

Từ giao diện Plesk, bạn có thể tìm kiếm hình ảnh. Cả trong kho lưu trữ cục bộ (hình ảnh đã được tải xuống máy chủ) và trên Docker Hub. Để khởi chạy một container, bảng điều khiển sẽ hướng dẫn bạn:

  1. Thăm Docker > Container > Chạy Container.
  2. Tìm ảnh Docker mong muốn và xem tài liệu hướng dẫn của nó trên Docker Hub (nếu có).
  3. Bạn có thể tùy chọn chọn nhãn/phiên bản hình ảnh cụ thể.
  4. Cấu hình các tham số của container (biến môi trường, cổng, dung lượng, bộ nhớ, khởi động tự động, v.v.) và nhấp vào Chạy.

Plesk cũng cho phép bạn quản lý các cài đặt nâng cao. Đối với mỗi container: bạn có thể gán lại cổng (tự động hoặc thủ công), quyết định xem cổng đó có thể truy cập được từ Internet hay chỉ từ localhost, giới hạn dung lượng RAM mà container có thể sử dụng, định nghĩa các volume (đường dẫn trên máy chủ và trong container) hoặc thêm bao nhiêu biến môi trường tùy thích.

Về khía cạnh điều phối từ xaPlesk có thể hoạt động với “các dịch vụ Docker từ xa”. Điều này bao gồm việc cấu hình trình nền Docker trên máy chủ từ xa (ví dụ: sử dụng một /etc/docker/daemon.json (có hỗ trợ TLS và socket TCP), tạo chứng chỉ .pem và đăng ký máy chủ đó trong Plesk từ Docker > Môi trường > Thêm máy chủSau đó, bạn có thể đánh dấu nút Docker đó là đang hoạt động và chuyển đổi giữa các máy chủ khác nhau từ cùng một giao diện.

Triển khai các stack Docker Compose từ Plesk

Nếu bạn đã sử dụng Docker Compose cho cơ sở hạ tầng của mìnhBạn có thể quan tâm đến việc để Plesk xử lý việc triển khai "stack" từ các tệp. docker-compose.yml.

Quy trình triển khai Compose trong Plesk Nó khá đơn giản:

  1. Nhập Docker > Ngăn xếp > Thêm ngăn xếp.
  2. Gán tên dự án cho ngăn xếp.
  3. Chọn nguồn của tệp Soạn thảo: trình soạn thảo (dán nội dung), tải tệp từ máy tính của bạn hoặc chọn tệp hiện có trong không gian web của một tên miền.
  4. Xác nhận cấu hình và cho phép Plesk khai báo và tạo các container đã định nghĩa.

Mọi thứ được xây dựng trong quá trình xây dựng Tệp Compose liên quan được lưu trữ trong thư mục chính của trang web, giúp dễ dàng truy cập vào nhật ký, các tạo phẩm trung gian hoặc các tệp bổ sung được tạo ra trong quá trình xây dựng.

Plesk cũng hỗ trợ quản lý hình ảnh cục bộ.: từ Docker > Hình ảnh Bạn có thể lọc, xem xét các thẻ sản phẩm khác nhau, xem dung lượng đã sử dụng và xóa hình ảnh lỗi thời để giải phóng dung lượng ổ đĩa. Điều này rất quan trọng trong môi trường làm việc từ xa với không gian lưu trữ hạn chế.

Nếu bạn sử dụng Nginx làm máy chủ web phía trước (front-end).Plesk áp dụng các quy tắc ủy quyền (ví dụ: trong nginx.conf (Từ tên miền) để định tuyến lưu lượng truy cập đến các container Docker của bạn, ngay cả trong các trường hợp phía sau NAT. Điều này giúp bạn không cần phải tự cấu hình proxy ngược trên các máy chủ từ xa.

Quản lý container từ xa với Portainer

Portainer là một giao diện web nhẹ. Đối với Docker, nó giúp đơn giản hóa đáng kể công việc hàng ngày của những người không muốn làm việc nhiều với dòng lệnh. Nó hoạt động như một container và có thể quản lý máy chủ cục bộ hoặc nhiều máy chủ từ xa (ngay cả với Portainer Agent).

Để cài đặt Portainer trên máy chủ của bạn bằng Docker Bạn thường thực hiện theo các bước cơ bản sau:

  • Tạo một thư mục chứa dữ liệu Portainer: docker volume create portainer_data.
  • Khởi chạy container Portainer bằng cách ánh xạ cổng 8000 và 9000, gắn socket Docker (/var/run/docker.sock) và khối lượng dữ liệu: docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer.

Thao tác này sẽ khiến Portainer lắng nghe trên cổng 9000 của máy chủ.Như thường lệ, bạn cần mở cổng trong tường lửa hoặc cho phép truy cập thông qua máy chủ proxy ngược HTTPS. Lần đầu tiên truy cập qua trình duyệt, Portainer sẽ yêu cầu bạn tạo người dùng quản trị, sau đó bạn có thể chọn quản lý Docker cục bộ hoặc các máy chủ từ xa khác.

Bảng điều khiển Portainer khá trực quan.Bạn sẽ thấy các container đang hoạt động, nhật ký của chúng, số liệu thống kê mức tiêu thụ tài nguyên, các stack Compose, mạng, volume, và nhiều hơn nữa. Và quan trọng nhất, nó cho phép bạn tạo lại container với các tham số khác nhau, cập nhật image, quản lý stack và tập trung nhiều máy chủ từ xa từ một giao diện duy nhất.

Chạy các ứng dụng đồ họa trong các container từ xa và truy cập chúng thông qua trình duyệt.

Khi máy tính của bạn hết tài nguyên Nhưng nếu bạn cần sử dụng các ứng dụng đồ họa nặng (như trình soạn thảo email, IDE hoặc công cụ phân tích ngược), một giải pháp rất thú vị là chạy chúng trong các container Docker trên một máy chủ mạnh mẽ và truy cập chúng thông qua web.

Một nghiên cứu trường hợp được ghi chép rất kỹ lưỡng. Ý tưởng là đóng gói Mozilla Thunderbird vào một container, hiển thị giao diện đồ họa của nó thông qua TigerVNC/noVNC, và bảo mật quyền truy cập bằng Caddy. Khái niệm này có thể được tái sử dụng cho hầu hết mọi ứng dụng GUI trên Linux.

Kiến trúc cơ bản của loại vùng chứa đồ họa này thường bao gồm::

  • Một máy chủ VNC/X11 hạng nhẹ (TigerVNC) hoạt động như một máy chủ hiển thị.
  • Một trình quản lý cửa sổ tối giản (OpenBox) để xử lý các cửa sổ.
  • Một loại máy chủ nhỏ gọn, dễ sử dụng. easy-novnc Điều này cho phép VNC hoạt động như một WebSocket và tạo ra một trang HTML để kết nối từ trình duyệt.
  • supervisord hoặc các phương pháp tương tự để khởi động và giám sát tất cả các tiến trình bên trong vùng chứa.
  • Ứng dụng đó (Thunderbird, GIMP, v.v.) được cấu hình để hiển thị trên màn hình từ xa (DISPLAY=:0).

Trên thực tế, một thư mục làm việc sẽ được thiết lập. (ví dụ: ~/thunderbird) nơi chúng được đặt:

  • Un giám sát.conf Cấu hình này xác định các chương trình cần khởi chạy: TigerVNC, easy-novnc, OpenBox và ứng dụng chính, với thứ tự ưu tiên sao cho máy chủ đồ họa khởi động trước ứng dụng.
  • Un menu.xml OpenBox cấu hình menu màn hình nền (ứng dụng chính, cửa sổ dòng lệnh, trình giám sát tiến trình với htop, v.v.).
  • Un Dockerfile nhiều giai đoạn trong giai đoạn đầu tiên biên soạn easy-novnc Sử dụng Go, và ở bước thứ hai, nó tạo ra ảnh hệ thống cuối cùng trên Debian, cài đặt openbox, tigervnc, supervisor, các tiện ích dòng lệnh, ứng dụng (Thunderbird trong ví dụ này), sao chép các tệp nhị phân và cấu hình, tạo người dùng không phải root và định nghĩa một phân vùng dữ liệu bền vững. /data.

Lệnh mặc định của container thường được ủy quyền cho supervisord., khởi động nó như một người dùng thông thường gosuSau khi điều chỉnh quyền truy cập trên ổ đĩa dữ liệu, khi container khởi động, VNC, noVNC, trình quản lý cửa sổ và ứng dụng sẽ tự động được khởi chạy, và bạn chỉ cần truy cập vào cổng HTTP do easy-novnc cung cấp.

Để làm cho nó mạnh mẽ hơn và thân thiện hơn với người dùng trên internet.Nên đặt một máy chủ web như Caddy ở phía trước, cũng trong một container, hoạt động như một proxy ngược cho ứng dụng đồ họa của bạn, bổ sung xác thực cơ bản (tên người dùng và mật khẩu được mã hóa) và tùy chọn cung cấp WebDAV để truy cập các tệp. /data từ máy tính cục bộ của bạn.

Điều phối giải pháp với mạng lưới, dung lượng và Caddy.

Để giữ cho kiểu triển khai này được tổ chức một cách hiệu quả. Thông thường, người ta sẽ tạo mạng Docker riêng và một hoặc nhiều volume dữ liệu:

  • Ví dụ: Mạng thunderbird-netThông tin này sẽ được chia sẻ bởi tất cả các container liên quan.
  • Âm lượng thunderbird-data Nơi này sẽ chứa hồ sơ người dùng và dữ liệu lâu dài của ứng dụng đồ họa.

Vùng chứa của ứng dụng đồ họa Bạn có thể khởi chạy nó bằng lệnh tương tự như sau:

  • Chính sách --restart=always để nó có thể tự đứng vững.
  • Lắp ráp khối lượng thunderbird-data:/data.
  • Kết nối mạng thunderbird-net.
  • Tên có thể nhận dạng (thunderbird-app(ví dụ) mà Caddy sẽ sử dụng cho máy chủ proxy ngược.

Trong một thư mục khác (ví dụ: ~/caddy) Hình ảnh của Caddy được tạo ra với các mô-đun cần thiết (chẳng hạn như plugin WebDAV) và một Caddyfile trong đó định nghĩa:

  • Máy chủ trên cổng 8080.
  • Un reverse_proxy để thunderbird-app:8080 (hoặc cổng mà noVNC cung cấp).
  • Các đường dẫn bổ sung để điều hướng qua các tập tin (/files) và đối với WebDAV (/webdav), cả hai đều phục vụ nội dung của khối lượng dữ liệu.
  • Một khối basicauth Điều này bảo vệ tất cả các đường dẫn có người dùng và mật khẩu băm được đọc từ các biến môi trường.

Khi tạo vùng chứa Caddycùng một thể tích được lắp ráp thunderbird-data:/dataNó kết nối với mạng. thunderbird-net và cổng của nó được công bố (ví dụ, -p 8080:8080) trên máy chủ. Với điều này, bạn chỉ cần truy cập vào trình duyệt của mình để http://IP_DEL_SERVIDOR:8080Nhập thông tin đăng nhập của bạn và nhấp vào "Kết nối" để bắt đầu sử dụng ứng dụng đồ họa từ xa.

Việc bảo trì lâu dài rất đơn giản.Khi cần cập nhật, bạn có thể dừng và xóa các container, xây dựng lại các image với phiên bản mới và khởi chạy lại chúng. docker run Duy trì dung lượng dữ liệu để các cài đặt và tệp của người dùng vẫn được giữ nguyên.

Với tất cả các thành phần này (Docker Compose, Plesk, Portainer, VS Code, WSL 2, Caddy, noVNC…) Có thể thiết lập mọi thứ, từ triển khai hệ thống phụ trợ đơn giản đến máy tính để bàn từ xa được đóng gói trong container và truy cập hoàn hảo qua trình duyệt, tận dụng các máy chủ mạnh hơn nhiều so với máy tính của bạn và duy trì khả năng kiểm soát khá tốt đối với mạng, bảo mật, lưu trữ và cập nhật.