From: Ray Kinsella <mdr@ashroe.eu>
To: "Halim, Abdul" <abdul.halim@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image
Date: Wed, 11 Dec 2019 17:00:14 +0000 [thread overview]
Message-ID: <8b3accf7-4e24-4874-15ee-3f840c0f08e5@ashroe.eu> (raw)
In-Reply-To: <SN6PR11MB2893D481B9F4A699A663246AFE5A0@SN6PR11MB2893.namprd11.prod.outlook.com>
On 11/12/2019 10:53, Halim, Abdul wrote:
>
>
>> -----Original Message-----
>> From: Ray Kinsella <mdr@ashroe.eu>
>> Sent: Tuesday, December 10, 2019 5:45 PM
>> To: dev@dpdk.org; Halim, Abdul <abdul.halim@intel.com>
>> Subject: Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker
>> image
>>
>>
>>
>> On 10/12/2019 13:55, Abdul Halim wrote:
>>> Adding a Dockerfile with Ubuntu bionic base image to build dpdk as
>>> shared library. This docker image could be used as base image to build
>>> and run dpdk applications in containers.
>>>
>>> Signed-off-by: Abdul Halim <abdul.halim@intel.com>
>>>
>>> ---
>>>
>>> v2:
>>> * renamed Dockerfile name from Dockerfile.ubuntu to Dockerfile.bionic
>>> * added call to ldconfig to update cache of libraries to include newly
>>> installed DPDK libs
>>>
>>> ---
>>>
>>> v3:
>>> * added example use-case of dpdk dockerfile in extras/README.md
>>>
>>> ---
>>> v4:
>>> * changed meson build to use tmp dir in docker build
>>> * changed sample app dockerfile to add only helloworld source code
>>>
>>> ---
>>> v5:
>>> * fix whitespace error
>>> ---
>>> extras/Dockerfile.bionic | 40
>> +++++++++++++++++++++++++++++++++++++
>>> extras/README.md | 51
>> ++++++++++++++++++++++++++++++++++++++++++++++++
>>> 2 files changed, 91 insertions(+)
>>> create mode 100644 extras/Dockerfile.bionic create mode 100644
>>> extras/README.md
>>>
>>> diff --git a/extras/Dockerfile.bionic b/extras/Dockerfile.bionic new
>>> file mode 100644 index 0000000..cf9c176
>>> --- /dev/null
>>> +++ b/extras/Dockerfile.bionic
>>> @@ -0,0 +1,40 @@
>>> +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Intel
>>> +Corporation FROM ubuntu:bionic
>>> +
>>> +# install requirements for getting and building DPDK # including
>>> +dependencies for DPDK features RUN apt-get update && apt-get install
>>> +-y \
>>> + build-essential \
>>> + pkg-config \
>>> + python3 \
>>> + python3-pip \
>>> + ninja-build \
>>> + libjansson-dev \
>>> + libbsd-dev \
>>> + libnuma-dev \
>>> + libssl-dev \
>>> + zlib1g-dev \
>>> + libpcap-dev \
>>> + libibverbs-dev \
>>> + && pip3 install meson \
>>> + && apt-get clean && rm -rf /var/lib/apt/lists/*
>>> +
>>> +ADD . /tmp/dpdk
>>> +
>>> +WORKDIR /tmp/dpdk
>>> +
>>> +RUN meson /tmp/dpdk-build \
>>> + -Ddefault_library=shared \
>>> + -Dmachine=default \
>>> + -Dper_library_versions=false \
>>> + && ninja -C /tmp/dpdk-build install \
>>> + && ldconfig \
>>> + && cd /; rm -rf /tmp/dpdk
>>> +
>>> +WORKDIR /
>>> +
>>> +# Installed DPDK Shared library location:
>>> +# lib dir : /usr/local/lib/
>>> +# include : /usr/local/include/
>>> +# pkgconfig file:
>>> +/usr/local/lib/x86_64-linux-gnu/pkgconfig/libdpdk.pc
>>> diff --git a/extras/README.md b/extras/README.md new file mode
>> 100644
>>> index 0000000..8001012
>>> --- /dev/null
>>> +++ b/extras/README.md
>>> @@ -0,0 +1,51 @@
>>> +# Build DPDK Docker image
>>> +
>>> +To build a docker image run the following command from dpdk root
>> directory.
>>> +
>>> +```
>>> +DOCKER_TAG="dpdk"
>>> +docker build -t ${DOCKER_TAG} -f extras/Dockerfile.bionic .
>>> +```
>>> +
>>> +# Example of how to use this dpdk library image
>>> +
>>> +The following steps shows how to use the dpdk shared library
>>> +container to build and run a dpdk application without having to build
>>> +dpdk library for each application.
>>> +
>>> +## Create a dpdk sample app docker file with 'dpdk' as the base image
>>> +
>>> +Create a docker file to build the helloworld application from
>>> +example/helloworld source files in dpdk root directory.
>>> +
>>> +```
>>> +cat << EOF > Dockerfile.dpdkSampleApp FROM dpdk
>>> +
>>> +ADD examples/helloworld /opt/examples/helloworld
>>> +
>>> +WORKDIR /opt/examples/helloworld
>>> +RUN make && cp build/helloworld-shared /usr/local/bin/helloworld EOF
>>> +```
>>> +
>>> +## Build sample app docker image
>>> +
>>> +```
>>> +DOCKERAPP_TAG="dpdk-helloworld"
>>> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp .
>>> +```
>>> +
>>> +This sample app now can be run like any other applicaiton in a docker
>> container.
>>> +
>>> +```
>>> +$ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages
>>> +dpdk-helloworld ```
>>> +
>>> +## Running the sample app
>>> +Once inside the container run helloword binary
>>> +
>>> +```
>>> +$ root@11233ed2e69c # helloworld
>>> +```
>>> +
>>>
>>
>> Hi Abdul,
>>
>> Other's feel free to shoot me down.
>> But I am not sure that HelloWorld is really the example we want to show
>> here.
>>
>> HelloWorld is good and it minimizes the associated config you need to
>> describe.
>> However does it really help a someone get started running DPDK in a
>> container, as there is no network interface.
>>
>> Is there anyway we could show something running on a network interface?
>> Perhaps we contrive something simple with vEth, AF_Packet and TestPMD?
>>
>> Ray K
>
> Hi Ray,
> Our intent here is to show how to use this dpdk shared lib in container to build
> an application and run it. The same steps can be taken for any other advanced
> DPDK apps to take advantage of this shared library.
> As you've mentioned, other apps will require various HW related configuration
> to be shown and explained. The DPDK documentation already cover them
> in details. And that may unintentionally divert the focus to that particular app.
> This is my opinion only :)
>
> However, if you strongly feel that the example should be with one of the apps
> you've mentioned I can update it accordingly.
>
> Many thanks!
>
> Regards,
> Abdul
My simple point is that DPDK without a network card, is not the majority use case.
Dataplane Development Kit implies some sort of a network data plane :-)
Thanks,
Ray K
next prev parent reply other threads:[~2019-12-11 17:00 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-27 16:44 [dpdk-dev] [PATCH] " Abdul Halim
2019-09-30 8:54 ` Ray Kinsella
2019-09-30 12:21 ` Halim, Abdul
2019-10-04 10:08 ` [dpdk-dev] [PATCH v2] " Abdul Halim
2019-10-15 8:39 ` Ray Kinsella
2019-11-13 20:26 ` Yasufumi Ogawa
2019-12-03 11:42 ` [dpdk-dev] [PATCH v3] " Abdul Halim
2019-12-05 14:13 ` Ruifeng Wang (Arm Technology China)
2019-12-05 19:51 ` Yasufumi Ogawa
2019-12-06 11:12 ` Halim, Abdul
2019-12-09 3:23 ` Ruifeng Wang (Arm Technology China)
2019-12-09 9:44 ` Yasufumi Ogawa
2019-12-09 10:18 ` Yasufumi Ogawa
2019-12-10 13:16 ` Halim, Abdul
2019-12-10 13:44 ` [dpdk-dev] [PATCH v4] " Abdul Halim
2019-12-10 13:55 ` [dpdk-dev] [PATCH v5] " Abdul Halim
2019-12-10 17:44 ` Ray Kinsella
2019-12-11 10:53 ` Halim, Abdul
2019-12-11 17:00 ` Ray Kinsella [this message]
2023-06-12 2:44 ` Stephen Hemminger
2019-12-11 6:45 ` Ruifeng Wang (Arm Technology China)
2019-12-11 16:35 ` Halim, Abdul
2019-12-11 16:39 ` [dpdk-dev] [PATCH v6] " Abdul Halim
2019-12-12 6:53 ` Ruifeng Wang (Arm Technology China)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8b3accf7-4e24-4874-15ee-3f840c0f08e5@ashroe.eu \
--to=mdr@ashroe.eu \
--cc=abdul.halim@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).