github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/nydus/README.md (about)

     1  # Overview
     2  
     3  The nydus project implements a user space filesystem on top of a container image format that improves over the current OCI image specification, in terms of container launching speed, image space, and network bandwidth efficiency, as well as data integrity.See [Nydus](https://github.com/dragonflyoss/image-service).
     4  
     5  Nydus can help sealer to improve image distribution performance.
     6  
     7  ## How to use it
     8  
     9  Using existing images that support nydus directly, such as:
    10  
    11  ```shell
    12  sealer run kubernetes-nydus:v1.19.8 --masters xxx.xxx.xxx.xxx  --passwd xxxxxxx
    13  ```
    14  
    15  or merge nydus image to other images, such as:
    16  
    17  ```shell
    18  sealer merge kubernetes:v1.19.8 nydus:v1.0.0 -t kubernetes-nydus:1.0.0
    19  ```
    20  
    21  ## How to rebuild it
    22  
    23  1. copy nydusdfile dir to /var/lib/sealer
    24  
    25  ```bash
    26  cp -r nydusdfile /var/lib/sealer
    27  ```
    28  
    29  2. git clone nydus, buid binary and copy to nydusdfile dir
    30  
    31  ```bash
    32  cd ~
    33  git clone https://github.com/dragonflyoss/image-service.git
    34  cd image-service
    35  # build nydusd,nydus-images, x86_64
    36  make static-release
    37  cp target-fusedev/x86_64-unknown-linux-musl/release/nydusd /var/lib/sealer/nydusdfile/clientfile
    38  cp target-fusedev/x86_64-unknown-linux-musl/release/nydus-image /var/lib/sealer/nydusdfile/serverfile
    39  # build nydus-backend-proxy
    40  cd contrib/nydus-backend-proxy
    41  make static-release
    42  cp arget/x86_64-unknown-linux-musl/release/nydus-backend-proxy /var/lib/sealer/nydusdfile/serverfile
    43  ```
    44  
    45  the final nydusdfile dir is as:
    46  
    47  ```bash
    48  nydusdfile
    49  ├── clientfile              #  the files need be scp to inodes to start nydusd
    50  │   ├── clean.sh            # nydusd clean
    51  │   ├── nydusd              # nydusd,Linux FUSE user-space daemon
    52  │   └── start.sh            # start nydusd
    53  └── serverfile              # the files for nydusdserver
    54      ├── nydus-backend-proxy # A simple HTTP server to serve local directory as a blob backend for nydusd
    55      ├── nydusblobs          # nydus blobs dir
    56      ├── nydus-image         # Convert dir into a nydus format container image generating meta part file and data part file respectively
    57      ├── Rocket.toml         # Roket config file of nydusd http server
    58      ├── serverclean.sh      # nydusd http server clean
    59      └── serverstart.sh      # convert nydus images and start nydusd http server
    60  ```
    61  
    62  3. modify Metadata
    63  
    64  set "NydusFlag":true, such as
    65  
    66  ```bash
    67  # vim /var/lib/sealer/Metadata
    68  {
    69    "version": "v1.19.8",
    70    "arch": "x86_64",
    71    "NydusFlag":true
    72  }
    73  ```
    74  
    75  4. build new image
    76  
    77  ```bash
    78  cd /var/lib/sealer
    79  sealer build -t {Your Image Name} -f Kubefile .
    80  ```