Cài đặt Skywire trong Docker container

Docker cho phép chúng ta triển khai nhanh một ứng dụng, dễ cài đặt và bảo trì nên nó là một ưu thế để triển khai Skywire một cách nhanh chóng. Để chạy Skywire trong một Docker container thì bạn phải có Docker được cài đặt sẵn. Nếu chưa cài đặt Docker, bạn thực hiện lệnh sau để cài đặt Docker trên các bo cài đặt Skywire sử dụng Linux.

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

Câu lệnh đầu tiên thực hiện tải một script ở trang chủ Docker và câu lệnh thứ 2 thực thi script để cài đặt Docker trên bo của bạn

Xem thêm cài đặt Docker ở link sau https://docs.docker.com/engine/install/

Cài đặt Skywire sử dụng docker

Hiện tại, file ảnh docker hỗ trợ những kiến trúc sau:

Kiến trúc tag
x86-64 amd64-latest
arm64 arm64v8-latest
armhf armhf

Chi tiết các tag có thể tham khảo ở link sau:

https://hub.docker.com/r/skywirex/skywire-hypervisor

Skywire hiện bao gồm hai thành phần chính là Visor và Hypervisor.

  • Visor: tương tự như một nút (node), là thành phần cơ bản tạo nên mạng skywire
  • Hypervisor: trình quản lý visor, thông qua giao diện của trình quản lý ta có thể tương tác với visor

Cài đặt Skywire nghĩa là bạn cần cài đặt Visor và Hypervisor lên bo mạch. Bạn chỉ cần cài một Hypervisor để điều khiển nhiều visor khác nhau thông qua HypervisorUI

Cài đặt Hypervisor và chạy HypervisorUI

# docker create \
    --name=hypervisor \
    -it \
    --restart=unless-stopped \
    --net=host \
    -v ~/.config/skywire:/root/skywire/config \
   skywirex/skywire-hypervisor:<tag>

Thay thế tương ứng với kiến trúc hệ điều hành được hỗ trợ ở bảng trên.

Câu lệnh Docker trên được giải thích chi tiết như sau:

  • docker create gọi docker tạo một container
  • -it cho phép chạy cửa sổ lệnh sau khi tạo container
  • --restart=unless-stopped khởi động lại nếu không gọi lệnh dừng
  • -v ~/.config/skywire lưu file cấu hình ở thư mục ~/.config/skywire ở máy chính

Sau khi container được tạo tiến hành chạy container đó bằng câu lệnh sau:

# docker start hypervisor

Sau khi thực thi câu lệnh này container tên hypervisor sẽ thực hiện kiểm tra file cấu hình đã tồn tại hay chưa. Nếu chưa tồn tại file cấu hình, nó sẽ tạo một file cấu hình và lưu ở thư mục ~/.config/skywire. Nếu đã tồn tại file cấu hình thì sẽ dùng file cấu hình đó để chạy container hypervisor.

Kiểm tra trạng thái của container hypervisor ta có thể thực hiện lệnh sau:

# docker ps -a

Lúc này bạn sẽ truy cập được vào UI của hypervisor qua địa chỉ <Địa chỉ IP cài Hypervisor>:8000, ví dụ 192.168.1.11:8000, mặc định sẽ không có password để login UI, hypervisorUI sẽ trông như sau:

Giao diện hypervisor

Giao diện hypervisor

Xem thông tin public key của Hypervisor

Public key của hypervisor cần được nhập vào file cấu hình của visor. Do đó ta tiến hành xem public key của hypervisor bằng câu lệnh sau:

# cat ~/.config/skywire/hypervisor-config.json

Public key cùng với thông tin của file cấu hình sẽ được hiển thị ra màn hình, bạn copy và lưu thông tin public key lại để sử dụng cho file cấu hình của visor.

Cài đặt Visor

Tương tự với hypervisor ta tiến hành tạo visor trong docker container và chạy nó với câu lệnh sau:

# docker create \
    --name=visor \
    --cap-add=NET_ADMIN \
    -it \
    --restart=unless-stopped \
    --net=host \
    -v ~/.config/skywire:/root/skywire/config \
   skywirex/skywire-visor:<tag>

Chạy docker container với câu lệnh

docker start visor

Sau khi chạy visor thì bạn dừng visor để chỉnh sửa file cấu hình đã được tự động tạo ra. Việc chỉnh sửa file cấu hình cho phép hypervisor có thể truy cập và đọc thông tin từ visor từ đó hiển thị ra hypervisor UI.

docker stop visor

Chỉnh sửa nội dung file cấu hình skywire-config.json trong thư mục ~/.config/skywire như bên dưới

"stcp": {
    "pk_table": null,
    "local_address": "localhost:7777"
  },
...................

"hypervisors": [{
                 "public_key":"hypervisor-public-key"
  }],

Thay hypervisor-public-key bằng public key đã lấy ở trên.

Giao diện hypervisor có một visor

Giao diện hypervisor có một visor

Backup skywire

Nén thư mục skywire sử dụng câu lệnh sau

tar czvf skywire-backup.tgz ~/.config/skywire

Copy và lưu ở một nơi an toàn để có thể phục hồi lại nút khi cần.