Code Monkey home page Code Monkey logo

isula-build's Introduction

isula-build

isula-build is a tool provided by the iSula team for building container images. It can quickly build a container image based on a given Dockerfile.

The tool adopts the server + client mode. The binary file isula-build is the client that provides a CLI for building and managing images, while isula-builder is the server that runs as a daemon in the background, responding all the requests from client.

User can use the CLI to

  • Build an image from a Dockerfile (build).
  • List all images in local store (image).
  • Import container base images (import).
  • Load layered images (load).
  • Remove local persistent images (rm).
  • Export layered images (save).
  • Tag local persistent images (tag).
  • Pull images from a remote repository (pull).
  • Push images to a remote repository (push).
  • View operating environment and system information (info).
  • Log in to a remote image repository (login).
  • Log out of a remote image repository (logout).
  • Query isula-build version (version).

In addition, the following capabilities are also provided:

  • Dockerfile compatible syntax.
  • Support for extended file attributes, such as linux security, IMA, EVM, user, and trusted.
  • Support for export of different image formats, for example, docker-archive, iSulad.

Documentation

Getting Started

Installation on openEuler

Install from source.

For compiling from source on openEuler, these packages are required on user's OS:

  • make
  • golang (version 1.15 or later)
  • btrfs-progs-devel
  • device-mapper-devel
  • glib2-devel
  • gpgme-devel
  • libassuan-devel
  • libseccomp-devel
  • git
  • bzip2
  • systemd-devel

User can install them on openEuler with yum:

sudo yum install make btrfs-progs-devel device-mapper-devel glib2-devel gpgme-devel libassuan-devel libseccomp-devel git bzip2 go-md2man systemd-devel golang

Get the source code with git:

git clone https://gitee.com/openeuler/isula-build.git

Enter the source code directory and begin compiling:

cd isula-build
sudo make

Five targets can be selected to compile under "Build" after the command is executed:

  • all
  • isula-build
  • isula-builder
  • safe
  • debug

sudo make all compiles the client isula-build and server isula-builder. sudo make isula-build compiles only the client. sudo make isula-builder compiles only the server. sudo make safe compiles the client and server to generate secure binary files. sudo make debug compiles the client and server to generate binary files containing debug. User can select targets to compile as required.

After compiling success, user can install the binaries and default configuration files simply with:

sudo make install

Install as RPM package.

isula-build is now released with update pack of openEuler 20.03 LTS, user can install it using yum or rpm. Before user install, please enable "update" in the repo file.

With yum
sudo yum install -y isula-build

NOTE: Please make sure the "update" part of user's yum configuration is enabled. User can download the source of yum from openEuler repo list and install it.

With rpm

User can download the RPM package of isula-build and intall it.

sudo rpm -ivh isula-build-*.rpm

Running the Daemon Server

Run as the system service.

To manage isula-build by systemd, please refer to following steps:

sudo install -p -m 640 ./isula-build.service /etc/systemd/system/isula-build.service
sudo systemctl enable isula-build
sudo systemctl start isula-build

Directly run the isula-builder binary file.

User can also run the isula-builder binary file on the server to start the service.

sudo isula-builder --dataroot="/var/lib/isula-build"

Example on Building Container Images

Prerequisites

For building container images, runc is required.

User can get runc by installing docker or docker-runc on user's openEuler distro:

sudo yum install docker

or

sudo yum install docker-runc

Build an image.

Here is an example for building a container image, for more details please refer to Usage Guidelines.

Create a simple buildDir and write the Dockerfile

FROM alpine:latest
LABEL foo=bar
COPY ./* /home/dir1/

Build the image in the buildDir.

$ sudo isula-build ctr-img build -f Dockerfile .
STEP  1: FROM alpine:latest
STEP  2: LABEL foo=bar
STEP  3: COPY ./* /home/dir1/
Getting image source signatures
Copying blob sha256:e9235582825a2691b1c91a96580e358c99acfd48082cbf1b92fd2ba4a791efc3
Copying blob sha256:dc3bca97af8b81508c343b13a08493c7809b474dc25986fcbae90c6722201be3
Copying config sha256:9ec92a8819f9da1b06ea9ff83307ff859af2959b70bfab101f6a325b1a211549
Writing manifest to image destination
Storing signatures
Build success with image id: 9ec92a8819f9da1b06ea9ff83307ff859af2959b70bfab101f6a325b1a211549

List local images.

$ sudo isula-build ctr-img images
-----------------  -----------  ----------------  ----------------------------------------------
    REPOSITORY         TAG          IMAGE ID                       CREATED
------------------  ----------  ----------------  ----------------------------------------------
      <none>          latest      9ec92a8819f9        2020-06-11 07:45:39.265106109 +0000 UTC

Removing Images

$ sudo isula-build ctr-img rm 9ec92a8819f9
Deleted: sha256:86567f7a01b04c662a9657aac436e8d63ecebb26da4252abb016d177721fa11b

Integration with iSulad or Docker

Integration with iSulad or docker are listed in integration.

Precautions

Constraints, limitations, and differences from docker build are listed in precautions.

How to Contribute

We are happy to provide guidance for the new contributors.

Please sign the CLA before contributing.

Licensing

isula-build is licensed under the Mulan PSL v2.

isula-build's People

Contributors

cooperli avatar hlwqds avatar irene-cheung2022 avatar jingxiaolu avatar shitou12345678 avatar vanient avatar xiangxinyong avatar yangfeiyu20102011 avatar zklei avatar zvier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.