Git Product home page Git Product logo

vpp-base's Introduction

vpp-base

Workflow Latest Version Docker Pulls

The vpp-base builds docker images for VPP.


Table of contents:

Available Versions

List of currently availables versions that are being maintained:

Image Tag Packagecloud Repo Version Details
master master version size
latest release version size
24.02 2402 version size
23.10 2310 version size
23.06 2306 version size
23.02 2302 version size

The complete list of available image tags can be found on DockerHub.

Intro

The purpose of vpp-base is to provide tools for building docker images with any version of VPP.

Use cases:

  • Use as a base image in your Dockerfiles
  • Quickly test something specific VPP version
  • Build docker image for custom VPP builds
  • Generate VPP binary API bindings
  • Distribute Debian packages for VPP

The project was created because there are no official docker images provided by the FD.io community.

Quickstart

Use latest release of VPP

# Pull the image
➢ docker pull ligato/vpp-base

# Print the VPP version
➢ docker run --rm ligato/vpp-base cat /vpp/version
20.05-release

Use development version of VPP

# Pull the image
➢ docker pull ligato/vpp-base:master

# Print the VPP version
➢ docker run --rm ligato/vpp-base:master cat /vpp/version
20.09-rc0~157-g8eca60df7~b1410

Build Image

Build with official VPP version

To build vpp-base image you can simply use docker build command (no need to clone this repository at all):

# Build with latest VPP release
➢ docker build github.com/ligato/vpp-base

# Build with stable VPP 20.05
➢ docker build --build-arg REPO='2005' github.com/ligato/vpp-base

# Build with exact VPP version
➢ docker build --build-arg REPO='master' --build-arg VPP_VERSION='20.09-rc0~174-gbfeae8c57' github.com/ligato/vpp-base

# Build with specific VPP commit
➢ docker build --build-arg REPO='master' --build-arg VPP_VERSION='20.09-rc0~[^ ]*-g<commit>' github.com/ligato/vpp-base

Build with custom VPP version

To build vpp-base with custom VPP you can use the custom which installs from local debian packages by adding .deb packages from custom directory and installing them.

# build VPP
(
  cd vpp
  make install-dep install-ext-deps
  make pkg-deb
)

# copy debian packages from build-root
cp ./vpp/build-root/*.deb ./custom/

# build custom vpp-base image
docker build --tag vpp-base:custom ./custom

NOTE: You can put VPP repo into vpp directory at the root of this repo and it will be ignored by git.

Images

The vpp-base images are built continuously by GitHub workflow and published to DockerHub repository ligato/vpp-base.

Image Contents

The vpp-base image contains the following pieces:

  • Installed VPP ready for use with default config - /etc/vpp/startup.conf
  • Download script for getting VPP packages - /get-vpp.sh
  • Debian packages that come with VPP - /vpp/*.deb
  • Version file that contains VPP version - /vpp/version
# List files in /vpp/ directory
➤ docker run --rm ligato/vpp-base:latest ls -Sgh
total 11M
-rw-r--r-- 1 root 3.4M Jan 29 23:02 vpp_20.01-release_amd64.deb
-rw-r--r-- 1 root 3.1M Jan 29 23:02 vpp-plugin-dpdk_20.01-release_amd64.deb
-rw-r--r-- 1 root 3.0M Jan 29 23:02 vpp-plugin-core_20.01-release_amd64.deb
-rw-r--r-- 1 root 941K Jan 29 23:02 vpp-dev_20.01-release_amd64.deb
-rw-r--r-- 1 root 166K Jan 29 23:02 libvppinfra_20.01-release_amd64.deb
-rw-r--r-- 1 root 132K Jan 29 23:02 libvppinfra-dev_20.01-release_amd64.deb
-rw-r--r-- 1 root  24K Jan 29 23:02 python3-vpp-api_20.01-release_amd64.deb
-rw-r--r-- 1 root  24K Jan 29 23:02 vpp-api-python_20.01-release_amd64.deb
-rw-r--r-- 1 root   14 Feb  7 10:14 version

# Print installed VPP packages
➤ docker run --rm -i ligato/vpp-base dpkg-query -W '*vpp*'
libvppinfra	20.01-release
libvppinfra-dev	20.01-release
python3-vpp-api	20.01-release
vpp	20.01-release
vpp-api-python	20.01-release
vpp-dbg	20.01-release
vpp-dev	20.01-release
vpp-plugin-core	20.01-release
vpp-plugin-dpdk	20.01-release

Tag Format

Tags are derived from particular VPP version installed in the image. However they are some differences between image tag and particular VPP version:

  • character ~ is replaced with dot . (not allowed in docker image tags)
  • build number suffix (~bXXXX) is omitted in tags

Periodically updated images have fixed tags:

  • ligato/vpp-base:latest - latest official release
  • ligato/vpp-base:master - latest development version
  • ligato/vpp-base:YY.MM - latest stable versions

All the published images are also tagged using their particular version:

  • ligato/vpp-base:YY.MM-release - official releases
  • ligato/vpp-base:YY.MM-rc0.N-gabcdefg - development versions
  • ligato/vpp-base:YY.MM-rcX.N-gabcdefg - release canditate versions
  • ligato/vpp-base:YY.MM.X-N.gd28bac409 - stable versions

vpp-base's People

Contributors

giluerre avatar juliusmilan avatar ondrajz avatar ondrej-fabry avatar pemoticak avatar samuel-dudik avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

vpp-base's Issues

is this repo still active?

I'm getting the following error

dpdk                 [notice]: virtio_init_queue(): virtqueue does not exist
dpdk                 [notice]: eth_virtio_pci_init(): Failed to init virtio device

not sure how to fix this, does anyone have more explicit instructions?

Using virtio-user interfaces

Hi guys,
I am trying to run the vpp + dpdk in containers and have the vpp inside container connected to the vpp in host OS via virtio-user interface. I have tested this scenario with DPDK L2forwarding and everything is fine, but as you see even thought the virtio-user interface is defined in startup.conf I cannot see the VirtioUser interface in vppctl's "show int" command.
This is the startup.conf file of VPP,

unix {
  nodaemon
  log /var/log/vpp/vpp.log
  full-coredump
  cli-listen /run/vpp/cli-server.sock
}

api-trace {
  on
}

dpdk {
  #vdev virtio_user0
  no-pci
  huge-dir /dev/hugepages
  vdev virtio_user0,path=/var/run/usvhost1
  socket-mem 8,0
  #vdev net_vhost0,iface=/etc/vpp/sock.sock

}

plugins {
  path /home/mojtaba/vpp/build-root/build-vpp_debug-native/vpp/lib/vpp_plugins
  #plugin dpdk_plugin.so { disable }
}

cpu {
  main-core 5
}

vpp abort core dump

I used the VPP-base source code, but I modified the startup.conf file in it. I turned on the dpdk option in startup.conf.but I could not bind the network card, so there is a problem.

image

Skip publishing "rc0" versions for releases

I guess publishing *-rc0.* versions makes sense the most sense for development - master branch, because for the releases - stable/* branches, there are only bugfixes being cherry-picked and we'd usually always just want the most recent one since there are no breaking changes and only fixes.

Add python3-pkg-resources

Hi,

vpp-base docker image includes python3-vpp-api but it depends on python3-pkg-resources which is not installed

/vpp # python3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from vpp_papi import VPPApiCLient
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/vpp_papi/__init__.py", line 13, in <module>
    import pkg_resources  # part of setuptools
ModuleNotFoundError: No module named 'pkg_resources'

Package python3-pkg-resources is relatively small, can you please add it to docker image?

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.