* [dpdk-dev] [PATCH] build: add dockerfile for building docker image @ 2019-08-27 16:44 Abdul Halim 2019-09-30 8:54 ` Ray Kinsella ` (5 more replies) 0 siblings, 6 replies; 24+ messages in thread From: Abdul Halim @ 2019-08-27 16:44 UTC (permalink / raw) To: dev; +Cc: Abdul Halim 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> --- extras/Dockerfile.ubuntu | 38 ++++++++++++++++++++++++++++++++++++++ extras/README.md | 8 ++++++++ 2 files changed, 46 insertions(+) create mode 100644 extras/Dockerfile.ubuntu create mode 100644 extras/README.md diff --git a/extras/Dockerfile.ubuntu b/extras/Dockerfile.ubuntu new file mode 100644 index 0000000..3d5b36b --- /dev/null +++ b/extras/Dockerfile.ubuntu @@ -0,0 +1,38 @@ +# 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 \ + pkgconf \ + python3 \ + python3-pip \ + ninja-build \ + libjansson-dev \ + libbsd-dev \ + libnuma-dev \ + libssl-dev \ + zlib1g-dev \ + libpcap-dev \ + libibverbs-dev \ + && pip3 install meson + +ADD . /tmp/dpdk + +WORKDIR /tmp/dpdk + +RUN meson build \ + -Ddefault_library=shared \ + -Dmachine=default \ + -Dper_library_versions=false \ + && ninja -C build install \ + && 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..967ddf7 --- /dev/null +++ b/extras/README.md @@ -0,0 +1,8 @@ +# 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.ubuntu . +``` -- 1.8.3.1 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH] build: add dockerfile for building docker image 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image 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 ` (4 subsequent siblings) 5 siblings, 1 reply; 24+ messages in thread From: Ray Kinsella @ 2019-09-30 8:54 UTC (permalink / raw) To: Abdul Halim, dev Hi Abdul, Comments inline. On 27/08/2019 17:44, 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> > --- > extras/Dockerfile.ubuntu | 38 ++++++++++++++++++++++++++++++++++++++ > extras/README.md | 8 ++++++++ > 2 files changed, 46 insertions(+) > create mode 100644 extras/Dockerfile.ubuntu > create mode 100644 extras/README.md > > diff --git a/extras/Dockerfile.ubuntu b/extras/Dockerfile.ubuntu So I would be concerned about it being called Dockerfile.ubuntu, because at the moment it only covers Bionic, and Xenial is still supported until April 21. The pattern FD.io VPP adopts is calling it Dockerfile.bionic. > new file mode 100644 > index 0000000..3d5b36b > --- /dev/null > +++ b/extras/Dockerfile.ubuntu > @@ -0,0 +1,38 @@ > +# 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 \ > + pkgconf \ > + python3 \ > + python3-pip \ > + ninja-build \ > + libjansson-dev \ > + libbsd-dev \ > + libnuma-dev \ > + libssl-dev \ > + zlib1g-dev \ > + libpcap-dev \ > + libibverbs-dev \ > + && pip3 install meson > + > +ADD . /tmp/dpdk > + > +WORKDIR /tmp/dpdk > + > +RUN meson build \ > + -Ddefault_library=shared \ > + -Dmachine=default \ > + -Dper_library_versions=false \ > + && ninja -C build install \ > + && cd /; rm -rf /tmp/dpdk > + Is it safe to remove /tmp/dpdk, then remove the WORKDIR. Should be the other way around? > +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..967ddf7 > --- /dev/null > +++ b/extras/README.md > @@ -0,0 +1,8 @@ > +# 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.ubuntu . > +``` > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH] build: add dockerfile for building docker image 2019-09-30 8:54 ` Ray Kinsella @ 2019-09-30 12:21 ` Halim, Abdul 0 siblings, 0 replies; 24+ messages in thread From: Halim, Abdul @ 2019-09-30 12:21 UTC (permalink / raw) To: Ray Kinsella, dev Hi Ray, Thanks for your feedback. Please see comments inline. > -----Original Message----- > From: Ray Kinsella [mailto:mdr@ashroe.eu] > Sent: Monday, September 30, 2019 9:54 AM > To: Halim, Abdul <abdul.halim@intel.com>; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH] build: add dockerfile for building docker > image > > Hi Abdul, > > Comments inline. > > On 27/08/2019 17:44, 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> > > --- > > extras/Dockerfile.ubuntu | 38 > ++++++++++++++++++++++++++++++++++++++ > > extras/README.md | 8 ++++++++ > > 2 files changed, 46 insertions(+) > > create mode 100644 extras/Dockerfile.ubuntu create mode 100644 > > extras/README.md > > > > diff --git a/extras/Dockerfile.ubuntu b/extras/Dockerfile.ubuntu > > So I would be concerned about it being called Dockerfile.ubuntu, because at > the moment it only covers Bionic, and Xenial is still supported until April 21. > The pattern FD.io VPP adopts is calling it Dockerfile.bionic. I will rename this file to Dockerfile.bionic as suggested. > > > new file mode 100644 > > index 0000000..3d5b36b > > --- /dev/null > > +++ b/extras/Dockerfile.ubuntu > > @@ -0,0 +1,38 @@ > > +# 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 \ > > + pkgconf \ > > + python3 \ > > + python3-pip \ > > + ninja-build \ > > + libjansson-dev \ > > + libbsd-dev \ > > + libnuma-dev \ > > + libssl-dev \ > > + zlib1g-dev \ > > + libpcap-dev \ > > + libibverbs-dev \ > > + && pip3 install meson > > + > > +ADD . /tmp/dpdk > > + > > +WORKDIR /tmp/dpdk > > + > > +RUN meson build \ > > + -Ddefault_library=shared \ > > + -Dmachine=default \ > > + -Dper_library_versions=false \ > > + && ninja -C build install \ > > + && cd /; rm -rf /tmp/dpdk > > + > > Is it safe to remove /tmp/dpdk, then remove the WORKDIR. > Should be the other way around? > The WORKDIR instruction sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow it. It is very much like 'cd' into a location for other commands to run in there. Once the dpdk build is finished successfully and library is installed we no longer need the source files in the final image. So, we can safely remove it and the subsequent ' WORKDIR /' instruction below ensures that WORKDIR is set to a valid location. > > +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..967ddf7 > > --- /dev/null > > +++ b/extras/README.md > > @@ -0,0 +1,8 @@ > > +# 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.ubuntu . > > +``` > > -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [dpdk-dev] [PATCH v2] build: add dockerfile for building docker image 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image Abdul Halim 2019-09-30 8:54 ` Ray Kinsella @ 2019-10-04 10:08 ` Abdul Halim 2019-10-15 8:39 ` Ray Kinsella 2019-12-03 11:42 ` [dpdk-dev] [PATCH v3] " Abdul Halim ` (3 subsequent siblings) 5 siblings, 1 reply; 24+ messages in thread From: Abdul Halim @ 2019-10-04 10:08 UTC (permalink / raw) To: dev; +Cc: ray.kinsella, Abdul Halim 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 --- extras/Dockerfile.bionic | 40 ++++++++++++++++++++++++++++++++++++++++ extras/README.md | 8 ++++++++ 2 files changed, 48 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..f83b720 --- /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 build \ + -Ddefault_library=shared \ + -Dmachine=default \ + -Dper_library_versions=false \ + && ninja -C 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..f1aa898 --- /dev/null +++ b/extras/README.md @@ -0,0 +1,8 @@ +# 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 . +``` -- 1.8.3.1 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v2] build: add dockerfile for building docker image 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 0 siblings, 1 reply; 24+ messages in thread From: Ray Kinsella @ 2019-10-15 8:39 UTC (permalink / raw) To: Abdul Halim, dev; +Cc: ray.kinsella On 04/10/2019 11:08, 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 > --- > extras/Dockerfile.bionic | 40 ++++++++++++++++++++++++++++++++++++++++ > extras/README.md | 8 ++++++++ > 2 files changed, 48 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..f83b720 > --- /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 build \ > + -Ddefault_library=shared \ > + -Dmachine=default \ > + -Dper_library_versions=false \ > + && ninja -C 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..f1aa898 > --- /dev/null > +++ b/extras/README.md > @@ -0,0 +1,8 @@ > +# 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 . > +``` > Acked-by: Ray Kinsella <mdr@ashroe.eu> ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v2] build: add dockerfile for building docker image 2019-10-15 8:39 ` Ray Kinsella @ 2019-11-13 20:26 ` Yasufumi Ogawa 0 siblings, 0 replies; 24+ messages in thread From: Yasufumi Ogawa @ 2019-11-13 20:26 UTC (permalink / raw) To: Ray Kinsella, Abdul Halim, dev; +Cc: ray.kinsella On 2019/10/15 1:39, Ray Kinsella wrote: > > > On 04/10/2019 11:08, 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. Hi Abdul, I have tested your Dockerfile and confirmed that shared lib is generated under /usr/local as described in the Dockerfile. Just a comment, I wonder if you add an example of usecase in documentation for helping users understanding how to use. Regards, Yasufumi >> >> 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 >> --- >> extras/Dockerfile.bionic | 40 ++++++++++++++++++++++++++++++++++++++++ >> extras/README.md | 8 ++++++++ >> 2 files changed, 48 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..f83b720 >> --- /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 build \ >> + -Ddefault_library=shared \ >> + -Dmachine=default \ >> + -Dper_library_versions=false \ >> + && ninja -C 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..f1aa898 >> --- /dev/null >> +++ b/extras/README.md >> @@ -0,0 +1,8 @@ >> +# 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 . >> +``` >> > Acked-by: Ray Kinsella <mdr@ashroe.eu> > Tested-by: Yasufumi Ogawa <yasufum.o@gmail.com> ^ permalink raw reply [flat|nested] 24+ messages in thread
* [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image Abdul Halim 2019-09-30 8:54 ` Ray Kinsella 2019-10-04 10:08 ` [dpdk-dev] [PATCH v2] " Abdul Halim @ 2019-12-03 11:42 ` Abdul Halim 2019-12-05 14:13 ` Ruifeng Wang (Arm Technology China) 2019-12-10 13:44 ` [dpdk-dev] [PATCH v4] " Abdul Halim ` (2 subsequent siblings) 5 siblings, 1 reply; 24+ messages in thread From: Abdul Halim @ 2019-12-03 11:42 UTC (permalink / raw) To: dev; +Cc: ray.kinsella, yasufum.o, Abdul Halim 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 --- extras/Dockerfile.bionic | 40 +++++++++++++++++++++++++++++++++++++ extras/README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 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..f83b720 --- /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 build \ + -Ddefault_library=shared \ + -Dmachine=default \ + -Dper_library_versions=false \ + && ninja -C 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..f38d7f1 --- /dev/null +++ b/extras/README.md @@ -0,0 +1,52 @@ +# 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 dpdk helloworld application. Since, we are +creating a docker file for dpdk helloworld app we need to add the dpdk source +files, thus create the following docker file in dpdk root directory. + +``` +cat << EOF > Dockerfile.dpdkSampleApp +FROM dpdk + +ADD . /opt/dpdk + +WORKDIR /opt/dpdk/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 -it -v /dev/hugepages:/dev/hugepages dpdk-helloworld +``` + +## Running the sample app +Once inside the container run helloword binary + +``` +$ root@11233ed2e69c # helloworld +``` + -- 1.8.3.1 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 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 0 siblings, 1 reply; 24+ messages in thread From: Ruifeng Wang (Arm Technology China) @ 2019-12-05 14:13 UTC (permalink / raw) To: Abdul Halim, dev; +Cc: ray.kinsella, yasufum.o, nd > -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of Abdul Halim > Sent: Tuesday, December 3, 2019 19:42 > To: dev@dpdk.org > Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Abdul Halim > <abdul.halim@intel.com> > Subject: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker > image > > 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 > --- > extras/Dockerfile.bionic | 40 > +++++++++++++++++++++++++++++++++++++ > extras/README.md | 52 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 92 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..f83b720 > --- /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 build \ > + -Ddefault_library=shared \ > + -Dmachine=default \ > + -Dper_library_versions=false \ > + && ninja -C 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..f38d7f1 > --- /dev/null > +++ b/extras/README.md > @@ -0,0 +1,52 @@ > +# 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 dpdk helloworld application. Since, > +we are creating a docker file for dpdk helloworld app we need to add > +the dpdk source files, thus create the following docker file in dpdk root > directory. > + > +``` > +cat << EOF > Dockerfile.dpdkSampleApp > +FROM dpdk > + > +ADD . /opt/dpdk > + > +WORKDIR /opt/dpdk/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 . > +``` Hi Abdul, I tried the steps on AArch64 platform, and hit error as below: $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . Sending build context to Docker daemon 2.55GB Step 1/4 : FROM dpdk ---> 955448007987 Step 2/4 : ADD . /opt/dpdk ---> d8b58019a7e2 Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld ---> Running in 14fc89f7d3cd Removing intermediate container 14fc89f7d3cd ---> 065a682c58fd Step 4/4 : RUN make && cp build/helloworld-shared /usr/local/bin/helloworld ---> Running in 11e755a7180b Makefile:44: *** "Please define RTE_SDK environment variable". Stop. The command '/bin/sh -c make && cp build/helloworld-shared /usr/local/bin/helloworld' returned a non-zero code: 2 Missing define of RTE_SDK and RTE_TARGET? > + > +This sample app now can be run like any other applicaiton in a docker > container. > + > +``` > +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages dpdk-helloworld > +``` > + > +## Running the sample app > +Once inside the container run helloword binary > + > +``` > +$ root@11233ed2e69c # helloworld > +``` > + > -- > 1.8.3.1 > > -------------------------------------------------------------- > Intel Research and Development Ireland Limited Registered in Ireland > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > Registered Number: 308263 > > > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). Any review or distribution by others is > strictly prohibited. If you are not the intended recipient, please contact the > sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 2019-12-05 14:13 ` Ruifeng Wang (Arm Technology China) @ 2019-12-05 19:51 ` Yasufumi Ogawa 2019-12-06 11:12 ` Halim, Abdul 0 siblings, 1 reply; 24+ messages in thread From: Yasufumi Ogawa @ 2019-12-05 19:51 UTC (permalink / raw) To: Ruifeng Wang (Arm Technology China), Abdul Halim, dev; +Cc: ray.kinsella, nd On 2019/12/05 23:13, Ruifeng Wang (Arm Technology China) wrote: > >> -----Original Message----- >> From: dev <dev-bounces@dpdk.org> On Behalf Of Abdul Halim >> Sent: Tuesday, December 3, 2019 19:42 >> To: dev@dpdk.org >> Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Abdul Halim >> <abdul.halim@intel.com> >> Subject: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker >> image >> >> 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> >> [...] >> diff --git a/extras/README.md b/extras/README.md new file mode 100644 >> index 0000000..f38d7f1 >> --- /dev/null >> +++ b/extras/README.md >> @@ -0,0 +1,52 @@ >> +# 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 dpdk helloworld application. Since, >> +we are creating a docker file for dpdk helloworld app we need to add >> +the dpdk source files, thus create the following docker file in dpdk root >> directory. >> + >> +``` >> +cat << EOF > Dockerfile.dpdkSampleApp >> +FROM dpdk >> + >> +ADD . /opt/dpdk >> + >> +WORKDIR /opt/dpdk/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 . >> +``` > > Hi Abdul, > > I tried the steps on AArch64 platform, and hit error as below: > > $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . > Sending build context to Docker daemon 2.55GB > Step 1/4 : FROM dpdk > ---> 955448007987 > Step 2/4 : ADD . /opt/dpdk > ---> d8b58019a7e2 > Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld > ---> Running in 14fc89f7d3cd > Removing intermediate container 14fc89f7d3cd > ---> 065a682c58fd > Step 4/4 : RUN make && cp build/helloworld-shared /usr/local/bin/helloworld > ---> Running in 11e755a7180b > Makefile:44: *** "Please define RTE_SDK environment variable". Stop. > The command '/bin/sh -c make && cp build/helloworld-shared /usr/local/bin/helloworld' returned a non-zero code: 2 > > Missing define of RTE_SDK and RTE_TARGET? Hi Ruifeng, I think you run you run the command in dpdk/extras. However, this 'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir so that it is mounted as '/opt/dpdk' in the second step above. I have tested this Dockerfile on Ubuntu 18.04 and compiled without any error. RTE_SDK is set correctly, but dpdk's directory is not mounted in the container. Abdul, >> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . I think this line should be corrected as following, and make it clear it should be run in dpdk's root. docker build -t ${DOCKERAPP_TAG} -f extras/Dockerfile.dpdkSampleApp . Even if the container image is built successfully, there is another problem in running app because it isn't run in privileged mode. root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld EAL: Detected 16 lcore(s) EAL: Detected 1 NUMA nodes ... EAL: Failed to get current mempolicy: Operation not permitted. Assuming MPOL_DEFAULT. set_mempolicy: Operation not permitted set_mempolicy: Operation not permitted EAL: error allocating rte services array EAL: FATAL: rte_service_init() failed EAL: rte_service_init() failed PANIC in main(): Cannot init EAL 5: [helloworld(+0x84a) [0x55555555484a]] 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7ffff7721b97]] 3: [helloworld(+0x818) [0x555555554818]] 2: [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd) [0x7ffff7afb410]] 1: [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x2e) [0x7ffff7b1598e]] Aborted (core dumped) I think '--privileged' option should be added to avoid the error. $ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages dpdk-helloworld I have one more suggestion. You might have added $USER to docker group and run docker without sudo like as following. $ sudo groupadd docker $ sudo usermod -aG docker $USER I wounder it is better to use sudo in your examples, or add the instruction for users not familiar with docker. Regards, Yasufumi > >> + >> +This sample app now can be run like any other applicaiton in a docker >> container. >> + >> +``` >> +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages dpdk-helloworld >> +``` >> + >> +## Running the sample app >> +Once inside the container run helloword binary >> + >> +``` >> +$ root@11233ed2e69c # helloworld >> +``` >> + >> -- >> 1.8.3.1 >> >> -------------------------------------------------------------- >> Intel Research and Development Ireland Limited Registered in Ireland >> Registered Office: Collinstown Industrial Park, Leixlip, County Kildare >> Registered Number: 308263 >> >> >> This e-mail and any attachments may contain confidential material for the >> sole use of the intended recipient(s). Any review or distribution by others is >> strictly prohibited. If you are not the intended recipient, please contact the >> sender and delete all copies. > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 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 10:18 ` Yasufumi Ogawa 0 siblings, 2 replies; 24+ messages in thread From: Halim, Abdul @ 2019-12-06 11:12 UTC (permalink / raw) To: Yasufumi Ogawa, Ruifeng Wang (Arm Technology China), dev Cc: Kinsella, Ray, nd, Richardson, Bruce > -----Original Message----- > From: Yasufumi Ogawa <yasufum.o@gmail.com> > Sent: Thursday, December 5, 2019 7:52 PM > To: Ruifeng Wang (Arm Technology China) <Ruifeng.Wang@arm.com>; > Halim, Abdul <abdul.halim@intel.com>; dev@dpdk.org > Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker > image > > On 2019/12/05 23:13, Ruifeng Wang (Arm Technology China) wrote: > > > >> -----Original Message----- > >> From: dev <dev-bounces@dpdk.org> On Behalf Of Abdul Halim > >> Sent: Tuesday, December 3, 2019 19:42 > >> To: dev@dpdk.org > >> Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Abdul Halim > >> <abdul.halim@intel.com> > >> Subject: [dpdk-dev] [PATCH v3] build: add dockerfile for building > >> docker image > >> > >> 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> > >> > [...] > >> diff --git a/extras/README.md b/extras/README.md new file mode > 100644 > >> index 0000000..f38d7f1 > >> --- /dev/null > >> +++ b/extras/README.md > >> @@ -0,0 +1,52 @@ > >> +# 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 dpdk helloworld application. > >> +Since, we are creating a docker file for dpdk helloworld app we need > >> +to add the dpdk source files, thus create the following docker file > >> +in dpdk root > >> directory. > >> + > >> +``` > >> +cat << EOF > Dockerfile.dpdkSampleApp FROM dpdk > >> + > >> +ADD . /opt/dpdk > >> + > >> +WORKDIR /opt/dpdk/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 . > >> +``` > > > > Hi Abdul, > > > > I tried the steps on AArch64 platform, and hit error as below: > > > > $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . > > Sending build context to Docker daemon 2.55GB > > Step 1/4 : FROM dpdk > > ---> 955448007987 > > Step 2/4 : ADD . /opt/dpdk > > ---> d8b58019a7e2 > > Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld > > ---> Running in 14fc89f7d3cd > > Removing intermediate container 14fc89f7d3cd > > ---> 065a682c58fd > > Step 4/4 : RUN make && cp build/helloworld-shared > /usr/local/bin/helloworld > > ---> Running in 11e755a7180b > > Makefile:44: *** "Please define RTE_SDK environment variable". Stop. > > The command '/bin/sh -c make && cp build/helloworld-shared > > /usr/local/bin/helloworld' returned a non-zero code: 2 > > > > Missing define of RTE_SDK and RTE_TARGET? > > Hi Ruifeng, > > I think you run you run the command in dpdk/extras. However, this > 'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir so that it > is mounted as '/opt/dpdk' in the second step above. I have tested this > Dockerfile on Ubuntu 18.04 and compiled without any error. > RTE_SDK is set correctly, but dpdk's directory is not mounted in the > container. > > Abdul, > > >> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . > > I think this line should be corrected as following, and make it clear it should > be run in dpdk's root. > > docker build -t ${DOCKERAPP_TAG} -f extras/Dockerfile.dpdkSampleApp . > > Even if the container image is built successfully, there is another problem in > running app because it isn't run in privileged mode. > > root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld > EAL: Detected 16 lcore(s) > EAL: Detected 1 NUMA nodes > ... > EAL: Failed to get current mempolicy: Operation not permitted. Assuming > MPOL_DEFAULT. > set_mempolicy: Operation not permitted > set_mempolicy: Operation not permitted > EAL: error allocating rte services array > EAL: FATAL: rte_service_init() failed > EAL: rte_service_init() failed > PANIC in main(): > Cannot init EAL > 5: [helloworld(+0x84a) [0x55555555484a]] > 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) > [0x7ffff7721b97]] > 3: [helloworld(+0x818) [0x555555554818]] > 2: [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd) > [0x7ffff7afb410]] > 1: > [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x2e) > [0x7ffff7b1598e]] > Aborted (core dumped) > > I think '--privileged' option should be added to avoid the error. > > $ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages dpdk- > helloworld > > I have one more suggestion. You might have added $USER to docker group > and run docker without sudo like as following. > > $ sudo groupadd docker > $ sudo usermod -aG docker $USER > > I wounder it is better to use sudo in your examples, or add the instruction for > users not familiar with docker. > > Regards, > Yasufumi Hi Yasufumi, Thank you for your feedback. The steps for creating the sample app docker file explains that that we are creating the file at dpdk root directory. So the assumption here is the docker run command also run from there. Not sure if we need to repeat this later also. The 'cat' command above creates the docker file in dpdk root directory for simplicity. Actually, we just needed the examples/helloworld source code from there. As for other user application, the docker file could be anywhere, not necessarily in dpdk tree at all. User need to run docker build from where their own docker file is. The dpdk 'base' container should be used as shared-lib to build dpdk application with libdpdk. So, the dpdk source code, RTE_SDK or RTE_TARGET is not needed unless the pkg-config is unable to find libdpdk. I will update the patch with suggested '--privileged' flag on docker run command. Not sure if we should cover the docker permissions and docker specific configurations on this doc though. I am sure user can find those resources somewhere else if needed. Hi Ruifeng, Unfortunately I could not create Aarch64 environment to test this. Could you please run the following command in your env and see if you can get output as below: $ docker run --rm dpdk pkg-config --list-all | grep libdpdk libdpdk DPDK - The Data Plane Development Kit (DPDK). Regards, Abdul > > > > >> + > >> +This sample app now can be run like any other applicaiton in a > >> +docker > >> container. > >> + > >> +``` > >> +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages > >> +dpdk-helloworld ``` > >> + > >> +## Running the sample app > >> +Once inside the container run helloword binary > >> + > >> +``` > >> +$ root@11233ed2e69c # helloworld > >> +``` > >> + > >> -- > >> 1.8.3.1 > >> > >> -------------------------------------------------------------- > >> Intel Research and Development Ireland Limited Registered in Ireland > >> Registered Office: Collinstown Industrial Park, Leixlip, County > >> Kildare Registered Number: 308263 > >> > >> > >> This e-mail and any attachments may contain confidential material for > >> the sole use of the intended recipient(s). Any review or distribution > >> by others is strictly prohibited. If you are not the intended > >> recipient, please contact the sender and delete all copies. > > -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 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 1 sibling, 1 reply; 24+ messages in thread From: Ruifeng Wang (Arm Technology China) @ 2019-12-09 3:23 UTC (permalink / raw) To: Halim, Abdul, Yasufumi Ogawa, dev Cc: Kinsella, Ray, nd, Richardson, Bruce, nd > -----Original Message----- > From: Halim, Abdul <abdul.halim@intel.com> > Sent: Friday, December 6, 2019 19:13 > To: Yasufumi Ogawa <yasufum.o@gmail.com>; Ruifeng Wang (Arm > Technology China) <Ruifeng.Wang@arm.com>; dev@dpdk.org > Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com>; Richardson, > Bruce <bruce.richardson@intel.com> > Subject: RE: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker > image > > > > > -----Original Message----- > > From: Yasufumi Ogawa <yasufum.o@gmail.com> > > Sent: Thursday, December 5, 2019 7:52 PM > > To: Ruifeng Wang (Arm Technology China) <Ruifeng.Wang@arm.com>; > Halim, > > Abdul <abdul.halim@intel.com>; dev@dpdk.org > > Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com> > > Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building > > docker image > > > > On 2019/12/05 23:13, Ruifeng Wang (Arm Technology China) wrote: > > > > > >> -----Original Message----- > > >> From: dev <dev-bounces@dpdk.org> On Behalf Of Abdul Halim > > >> Sent: Tuesday, December 3, 2019 19:42 > > >> To: dev@dpdk.org > > >> Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Abdul Halim > > >> <abdul.halim@intel.com> > > >> Subject: [dpdk-dev] [PATCH v3] build: add dockerfile for building > > >> docker image > > >> > > >> 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> > > >> > > [...] > > >> diff --git a/extras/README.md b/extras/README.md new file mode > > 100644 > > >> index 0000000..f38d7f1 > > >> --- /dev/null > > >> +++ b/extras/README.md > > >> @@ -0,0 +1,52 @@ > > >> +# 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 dpdk helloworld application. > > >> +Since, we are creating a docker file for dpdk helloworld app we > > >> +need to add the dpdk source files, thus create the following > > >> +docker file in dpdk root > > >> directory. > > >> + > > >> +``` > > >> +cat << EOF > Dockerfile.dpdkSampleApp FROM dpdk > > >> + > > >> +ADD . /opt/dpdk > > >> + > > >> +WORKDIR /opt/dpdk/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 . > > >> +``` > > > > > > Hi Abdul, > > > > > > I tried the steps on AArch64 platform, and hit error as below: > > > > > > $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . > > > Sending build context to Docker daemon 2.55GB > > > Step 1/4 : FROM dpdk > > > ---> 955448007987 > > > Step 2/4 : ADD . /opt/dpdk > > > ---> d8b58019a7e2 > > > Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld > > > ---> Running in 14fc89f7d3cd > > > Removing intermediate container 14fc89f7d3cd > > > ---> 065a682c58fd > > > Step 4/4 : RUN make && cp build/helloworld-shared > > /usr/local/bin/helloworld > > > ---> Running in 11e755a7180b > > > Makefile:44: *** "Please define RTE_SDK environment variable". Stop. > > > The command '/bin/sh -c make && cp build/helloworld-shared > > > /usr/local/bin/helloworld' returned a non-zero code: 2 > > > > > > Missing define of RTE_SDK and RTE_TARGET? > > > > Hi Ruifeng, > > > > I think you run you run the command in dpdk/extras. However, this > > 'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir so > > that it is mounted as '/opt/dpdk' in the second step above. I have > > tested this Dockerfile on Ubuntu 18.04 and compiled without any error. > > RTE_SDK is set correctly, but dpdk's directory is not mounted in the > > container. > > Hi Yasufumi, I ran the command in dpdk root dir which should be correct. The issue was due to shared library image not been correctly built. See below. Thanks. /Ruifeng > > Abdul, > > > > >> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . > > > > I think this line should be corrected as following, and make it clear > > it should be run in dpdk's root. > > > > docker build -t ${DOCKERAPP_TAG} -f extras/Dockerfile.dpdkSampleApp . > > > > Even if the container image is built successfully, there is another > > problem in running app because it isn't run in privileged mode. > > > > root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld > > EAL: Detected 16 lcore(s) > > EAL: Detected 1 NUMA nodes > > ... > > EAL: Failed to get current mempolicy: Operation not permitted. > > Assuming MPOL_DEFAULT. > > set_mempolicy: Operation not permitted > > set_mempolicy: Operation not permitted > > EAL: error allocating rte services array > > EAL: FATAL: rte_service_init() failed > > EAL: rte_service_init() failed > > PANIC in main(): > > Cannot init EAL > > 5: [helloworld(+0x84a) [0x55555555484a]] > > 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) > > [0x7ffff7721b97]] > > 3: [helloworld(+0x818) [0x555555554818]] > > 2: > > [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd) > > [0x7ffff7afb410]] > > 1: > > [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x2 > > e) > > [0x7ffff7b1598e]] > > Aborted (core dumped) > > > > I think '--privileged' option should be added to avoid the error. > > > > $ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages > > dpdk- helloworld > > > > I have one more suggestion. You might have added $USER to docker group > > and run docker without sudo like as following. > > > > $ sudo groupadd docker > > $ sudo usermod -aG docker $USER > > > > I wounder it is better to use sudo in your examples, or add the > > instruction for users not familiar with docker. > > > > Regards, > > Yasufumi > > Hi Yasufumi, > Thank you for your feedback. > The steps for creating the sample app docker file explains that that we are > creating the file at dpdk root directory. So the assumption here is the docker > run command also run from there. Not sure if we need to repeat this later > also. > > The 'cat' command above creates the docker file in dpdk root directory for > simplicity. Actually, we just needed the examples/helloworld source code > from there. As for other user application, the docker file could be anywhere, > not necessarily in dpdk tree at all. User need to run docker build from where > their own docker file is. > > The dpdk 'base' container should be used as shared-lib to build dpdk > application with libdpdk. So, the dpdk source code, RTE_SDK or RTE_TARGET > is not needed unless the pkg-config is unable to find libdpdk. > > I will update the patch with suggested '--privileged' flag on docker run > command. > Not sure if we should cover the docker permissions and docker specific > configurations on this doc though. I am sure user can find those resources > somewhere else if needed. > > Hi Ruifeng, > Unfortunately I could not create Aarch64 environment to test this. Could you > please run the following command in your env and see if you can get output > as below: > > $ docker run --rm dpdk pkg-config --list-all | grep libdpdk > libdpdk DPDK - The Data Plane Development Kit (DPDK). > Hi Abdul, Yes, the issue was due to pkg-config could not find libdpdk. I didn't get expected libdpdk info in pkg-config output. Just found that even my building of dpdk shared library image was failed. Shared library image build failure was due to local 'build' directory in my dpdk source tree. And the 'build' impacted meson configuration in container. Not sure if it is a worth to mention that base dpdk tree should be clean. With '--privileged' flag suggested by Yasufumi: Tested-by: Ruifeng Wang <ruifeng.wang@arm.com> Thanks. /Ruifeng > > Regards, > Abdul > > > > > > > > >> + > > >> +This sample app now can be run like any other applicaiton in a > > >> +docker > > >> container. > > >> + > > >> +``` > > >> +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages > > >> +dpdk-helloworld ``` > > >> + > > >> +## Running the sample app > > >> +Once inside the container run helloword binary > > >> + > > >> +``` > > >> +$ root@11233ed2e69c # helloworld > > >> +``` > > >> + > > >> -- > > >> 1.8.3.1 > > >> > > >> -------------------------------------------------------------- > > >> Intel Research and Development Ireland Limited Registered in > > >> Ireland Registered Office: Collinstown Industrial Park, Leixlip, > > >> County Kildare Registered Number: 308263 > > >> > > >> > > >> This e-mail and any attachments may contain confidential material > > >> for the sole use of the intended recipient(s). Any review or > > >> distribution by others is strictly prohibited. If you are not the > > >> intended recipient, please contact the sender and delete all copies. > > > > -------------------------------------------------------------- > Intel Research and Development Ireland Limited Registered in Ireland > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > Registered Number: 308263 > > > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). Any review or distribution by others is > strictly prohibited. If you are not the intended recipient, please contact the > sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 2019-12-09 3:23 ` Ruifeng Wang (Arm Technology China) @ 2019-12-09 9:44 ` Yasufumi Ogawa 0 siblings, 0 replies; 24+ messages in thread From: Yasufumi Ogawa @ 2019-12-09 9:44 UTC (permalink / raw) To: Ruifeng Wang (Arm Technology China), Halim, Abdul, dev Cc: Kinsella, Ray, nd, Richardson, Bruce On 2019/12/09 12:23, Ruifeng Wang (Arm Technology China) wrote: >> -----Original Message----- >> From: Halim, Abdul <abdul.halim@intel.com> >> Sent: Friday, December 6, 2019 19:13 >> To: Yasufumi Ogawa <yasufum.o@gmail.com>; Ruifeng Wang (Arm >> Technology China) <Ruifeng.Wang@arm.com>; dev@dpdk.org >> Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com>; Richardson, >> Bruce <bruce.richardson@intel.com> >> Subject: RE: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker >> image >> >> >> >>> -----Original Message----- >>> From: Yasufumi Ogawa <yasufum.o@gmail.com> >>> Sent: Thursday, December 5, 2019 7:52 PM >>> To: Ruifeng Wang (Arm Technology China) <Ruifeng.Wang@arm.com>; >> Halim, >>> Abdul <abdul.halim@intel.com>; dev@dpdk.org >>> Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com> >>> Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building >>> docker image >>> >>> On 2019/12/05 23:13, Ruifeng Wang (Arm Technology China) wrote: >>>> >>>>> -----Original Message----- >>>>> From: dev <dev-bounces@dpdk.org> On Behalf Of Abdul Halim >>>>> Sent: Tuesday, December 3, 2019 19:42 >>>>> To: dev@dpdk.org >>>>> Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Abdul Halim >>>>> <abdul.halim@intel.com> >>>>> Subject: [dpdk-dev] [PATCH v3] build: add dockerfile for building >>>>> docker image >>>>> >>>>> 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> >>>>> >>> [...] >>>>> diff --git a/extras/README.md b/extras/README.md new file mode >>> 100644 >>>>> index 0000000..f38d7f1 >>>>> --- /dev/null >>>>> +++ b/extras/README.md >>>>> @@ -0,0 +1,52 @@ >>>>> +# 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 dpdk helloworld application. >>>>> +Since, we are creating a docker file for dpdk helloworld app we >>>>> +need to add the dpdk source files, thus create the following >>>>> +docker file in dpdk root >>>>> directory. >>>>> + >>>>> +``` >>>>> +cat << EOF > Dockerfile.dpdkSampleApp FROM dpdk >>>>> + >>>>> +ADD . /opt/dpdk >>>>> + >>>>> +WORKDIR /opt/dpdk/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 . >>>>> +``` >>>> >>>> Hi Abdul, >>>> >>>> I tried the steps on AArch64 platform, and hit error as below: >>>> >>>> $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . >>>> Sending build context to Docker daemon 2.55GB >>>> Step 1/4 : FROM dpdk >>>> ---> 955448007987 >>>> Step 2/4 : ADD . /opt/dpdk >>>> ---> d8b58019a7e2 >>>> Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld >>>> ---> Running in 14fc89f7d3cd >>>> Removing intermediate container 14fc89f7d3cd >>>> ---> 065a682c58fd >>>> Step 4/4 : RUN make && cp build/helloworld-shared >>> /usr/local/bin/helloworld >>>> ---> Running in 11e755a7180b >>>> Makefile:44: *** "Please define RTE_SDK environment variable". Stop. >>>> The command '/bin/sh -c make && cp build/helloworld-shared >>>> /usr/local/bin/helloworld' returned a non-zero code: 2 >>>> >>>> Missing define of RTE_SDK and RTE_TARGET? >>> >>> Hi Ruifeng, >>> >>> I think you run you run the command in dpdk/extras. However, this >>> 'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir so >>> that it is mounted as '/opt/dpdk' in the second step above. I have >>> tested this Dockerfile on Ubuntu 18.04 and compiled without any error. >>> RTE_SDK is set correctly, but dpdk's directory is not mounted in the >>> container. >>> > Hi Yasufumi, > > I ran the command in dpdk root dir which should be correct. > The issue was due to shared library image not been correctly built. See below. Hi Ruifeng, I've misunderstood about RTE_SDK as Abdul said. Sorry. > > Thanks. > /Ruifeng >>> Abdul, >>> >>> >> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . >>> >>> I think this line should be corrected as following, and make it clear >>> it should be run in dpdk's root. >>> >>> docker build -t ${DOCKERAPP_TAG} -f extras/Dockerfile.dpdkSampleApp . >>> >>> Even if the container image is built successfully, there is another >>> problem in running app because it isn't run in privileged mode. >>> >>> root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld >>> EAL: Detected 16 lcore(s) >>> EAL: Detected 1 NUMA nodes >>> ... >>> EAL: Failed to get current mempolicy: Operation not permitted. >>> Assuming MPOL_DEFAULT. >>> set_mempolicy: Operation not permitted >>> set_mempolicy: Operation not permitted >>> EAL: error allocating rte services array >>> EAL: FATAL: rte_service_init() failed >>> EAL: rte_service_init() failed >>> PANIC in main(): >>> Cannot init EAL >>> 5: [helloworld(+0x84a) [0x55555555484a]] >>> 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) >>> [0x7ffff7721b97]] >>> 3: [helloworld(+0x818) [0x555555554818]] >>> 2: >>> [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd) >>> [0x7ffff7afb410]] >>> 1: >>> [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x2 >>> e) >>> [0x7ffff7b1598e]] >>> Aborted (core dumped) >>> >>> I think '--privileged' option should be added to avoid the error. >>> >>> $ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages >>> dpdk- helloworld >>> >>> I have one more suggestion. You might have added $USER to docker group >>> and run docker without sudo like as following. >>> >>> $ sudo groupadd docker >>> $ sudo usermod -aG docker $USER >>> >>> I wounder it is better to use sudo in your examples, or add the >>> instruction for users not familiar with docker. >>> >>> Regards, >>> Yasufumi >> >> Hi Yasufumi, >> Thank you for your feedback. >> The steps for creating the sample app docker file explains that that we are >> creating the file at dpdk root directory. So the assumption here is the docker >> run command also run from there. Not sure if we need to repeat this later >> also. >> >> The 'cat' command above creates the docker file in dpdk root directory for >> simplicity. Actually, we just needed the examples/helloworld source code >> from there. As for other user application, the docker file could be anywhere, >> not necessarily in dpdk tree at all. User need to run docker build from where >> their own docker file is. >> >> The dpdk 'base' container should be used as shared-lib to build dpdk >> application with libdpdk. So, the dpdk source code, RTE_SDK or RTE_TARGET >> is not needed unless the pkg-config is unable to find libdpdk. >> >> I will update the patch with suggested '--privileged' flag on docker run >> command. >> Not sure if we should cover the docker permissions and docker specific >> configurations on this doc though. I am sure user can find those resources >> somewhere else if needed. >> >> Hi Ruifeng, >> Unfortunately I could not create Aarch64 environment to test this. Could you >> please run the following command in your env and see if you can get output >> as below: >> >> $ docker run --rm dpdk pkg-config --list-all | grep libdpdk >> libdpdk DPDK - The Data Plane Development Kit (DPDK). >> > Hi Abdul, > > Yes, the issue was due to pkg-config could not find libdpdk. > I didn't get expected libdpdk info in pkg-config output. > > Just found that even my building of dpdk shared library image was failed. > Shared library image build failure was due to local 'build' directory in my > dpdk source tree. And the 'build' impacted meson configuration in container. > > Not sure if it is a worth to mention that base dpdk tree should be clean. I am not sure the problem is always happened if the tree is not cleaned, but might be helpful. Regards, Yasufumi > > With '--privileged' flag suggested by Yasufumi: > Tested-by: Ruifeng Wang <ruifeng.wang@arm.com> > > Thanks. > /Ruifeng >> >> Regards, >> Abdul >> >>> >>>> >>>>> + >>>>> +This sample app now can be run like any other applicaiton in a >>>>> +docker >>>>> container. >>>>> + >>>>> +``` >>>>> +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages >>>>> +dpdk-helloworld ``` >>>>> + >>>>> +## Running the sample app >>>>> +Once inside the container run helloword binary >>>>> + >>>>> +``` >>>>> +$ root@11233ed2e69c # helloworld >>>>> +``` >>>>> + >>>>> -- >>>>> 1.8.3.1 >>>>> >>>>> -------------------------------------------------------------- >>>>> Intel Research and Development Ireland Limited Registered in >>>>> Ireland Registered Office: Collinstown Industrial Park, Leixlip, >>>>> County Kildare Registered Number: 308263 >>>>> >>>>> >>>>> This e-mail and any attachments may contain confidential material >>>>> for the sole use of the intended recipient(s). Any review or >>>>> distribution by others is strictly prohibited. If you are not the >>>>> intended recipient, please contact the sender and delete all copies. >>>> >> -------------------------------------------------------------- >> Intel Research and Development Ireland Limited Registered in Ireland >> Registered Office: Collinstown Industrial Park, Leixlip, County Kildare >> Registered Number: 308263 >> >> >> This e-mail and any attachments may contain confidential material for the >> sole use of the intended recipient(s). Any review or distribution by others is >> strictly prohibited. If you are not the intended recipient, please contact the >> sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 2019-12-06 11:12 ` Halim, Abdul 2019-12-09 3:23 ` Ruifeng Wang (Arm Technology China) @ 2019-12-09 10:18 ` Yasufumi Ogawa 2019-12-10 13:16 ` Halim, Abdul 1 sibling, 1 reply; 24+ messages in thread From: Yasufumi Ogawa @ 2019-12-09 10:18 UTC (permalink / raw) To: Halim, Abdul, Ruifeng Wang (Arm Technology China), dev Cc: Kinsella, Ray, nd, Richardson, Bruce Hi Abdul, On 2019/12/06 20:12, Halim, Abdul wrote: >> -----Original Message----- >> From: Yasufumi Ogawa <yasufum.o@gmail.com> >> Sent: Thursday, December 5, 2019 7:52 PM >> To: Ruifeng Wang (Arm Technology China) <Ruifeng.Wang@arm.com>; >> Halim, Abdul <abdul.halim@intel.com>; dev@dpdk.org >> Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com> >> Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker >> image >> [...] >>> >>> Hi Abdul, >>> >>> I tried the steps on AArch64 platform, and hit error as below: >>> >>> $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . >>> Sending build context to Docker daemon 2.55GB >>> Step 1/4 : FROM dpdk >>> ---> 955448007987 >>> Step 2/4 : ADD . /opt/dpdk >>> ---> d8b58019a7e2 >>> Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld >>> ---> Running in 14fc89f7d3cd >>> Removing intermediate container 14fc89f7d3cd >>> ---> 065a682c58fd >>> Step 4/4 : RUN make && cp build/helloworld-shared >> /usr/local/bin/helloworld >>> ---> Running in 11e755a7180b >>> Makefile:44: *** "Please define RTE_SDK environment variable". Stop. >>> The command '/bin/sh -c make && cp build/helloworld-shared >>> /usr/local/bin/helloworld' returned a non-zero code: 2 >>> >>> Missing define of RTE_SDK and RTE_TARGET? >> >> Hi Ruifeng, >> >> I think you run you run the command in dpdk/extras. However, this >> 'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir so that it >> is mounted as '/opt/dpdk' in the second step above. I have tested this >> Dockerfile on Ubuntu 18.04 and compiled without any error. >> RTE_SDK is set correctly, but dpdk's directory is not mounted in the >> container. >> >> Abdul, >> >> >> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . >> >> I think this line should be corrected as following, and make it clear it should >> be run in dpdk's root. >> >> docker build -t ${DOCKERAPP_TAG} -f extras/Dockerfile.dpdkSampleApp . >> >> Even if the container image is built successfully, there is another problem in >> running app because it isn't run in privileged mode. >> >> root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld >> EAL: Detected 16 lcore(s) >> EAL: Detected 1 NUMA nodes >> ... >> EAL: Failed to get current mempolicy: Operation not permitted. Assuming >> MPOL_DEFAULT. >> set_mempolicy: Operation not permitted >> set_mempolicy: Operation not permitted >> EAL: error allocating rte services array >> EAL: FATAL: rte_service_init() failed >> EAL: rte_service_init() failed >> PANIC in main(): >> Cannot init EAL >> 5: [helloworld(+0x84a) [0x55555555484a]] >> 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) >> [0x7ffff7721b97]] >> 3: [helloworld(+0x818) [0x555555554818]] >> 2: [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd) >> [0x7ffff7afb410]] >> 1: >> [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x2e) >> [0x7ffff7b1598e]] >> Aborted (core dumped) >> >> I think '--privileged' option should be added to avoid the error. >> >> $ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages dpdk- >> helloworld >> >> I have one more suggestion. You might have added $USER to docker group >> and run docker without sudo like as following. >> >> $ sudo groupadd docker >> $ sudo usermod -aG docker $USER >> >> I wounder it is better to use sudo in your examples, or add the instruction for >> users not familiar with docker. >> >> Regards, >> Yasufumi > > Hi Yasufumi, > Thank you for your feedback. > The steps for creating the sample app docker file explains that that we > are creating the file at dpdk root directory. So the assumption here is the docker > run command also run from there. Not sure if we need to repeat this later also. > > The 'cat' command above creates the docker file in dpdk > root directory for simplicity. Actually, we just needed the examples/helloworld > source code from there. As for other user application, the docker file could > be anywhere, not necessarily in dpdk tree at all. User need to run docker build > from where their own docker file is. Yes. > > The dpdk 'base' container should be used as shared-lib to build dpdk application > with libdpdk. So, the dpdk source code, RTE_SDK or RTE_TARGET is not needed > unless the pkg-config is unable to find libdpdk. Sorry, I mixed up with the case of using these env variables. > > I will update the patch with suggested '--privileged' flag on docker run command. > Not sure if we should cover the docker permissions and docker specific > configurations on this doc though. I am sure user can find those resources > somewhere else if needed. OK. It is just a suggestion. I though that it is better to include basic usage concisely, but no need if user can find it easily. Regards, Yasufumi > > Hi Ruifeng, > Unfortunately I could not create Aarch64 environment to test this. Could you please > run the following command in your env and see if you can get output as below: > > $ docker run --rm dpdk pkg-config --list-all | grep libdpdk > libdpdk DPDK - The Data Plane Development Kit (DPDK). > > > Regards, > Abdul > >> >>> >>>> + >>>> +This sample app now can be run like any other applicaiton in a >>>> +docker >>>> container. >>>> + >>>> +``` >>>> +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages >>>> +dpdk-helloworld ``` >>>> + >>>> +## Running the sample app >>>> +Once inside the container run helloword binary >>>> + >>>> +``` >>>> +$ root@11233ed2e69c # helloworld >>>> +``` >>>> + >>>> -- >>>> 1.8.3.1 >>>> >>>> -------------------------------------------------------------- >>>> Intel Research and Development Ireland Limited Registered in Ireland >>>> Registered Office: Collinstown Industrial Park, Leixlip, County >>>> Kildare Registered Number: 308263 >>>> >>>> >>>> This e-mail and any attachments may contain confidential material for >>>> the sole use of the intended recipient(s). Any review or distribution >>>> by others is strictly prohibited. If you are not the intended >>>> recipient, please contact the sender and delete all copies. >>> > -------------------------------------------------------------- > Intel Research and Development Ireland Limited > Registered in Ireland > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > Registered Number: 308263 > > > This e-mail and any attachments may contain confidential material for the sole > use of the intended recipient(s). Any review or distribution by others is > strictly prohibited. If you are not the intended recipient, please contact the > sender and delete all copies. > ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image 2019-12-09 10:18 ` Yasufumi Ogawa @ 2019-12-10 13:16 ` Halim, Abdul 0 siblings, 0 replies; 24+ messages in thread From: Halim, Abdul @ 2019-12-10 13:16 UTC (permalink / raw) To: Yasufumi Ogawa, Ruifeng Wang (Arm Technology China), dev Cc: Kinsella, Ray, nd, Richardson, Bruce Hi Yasufumi and Ruifeng, Thanks for your feedback and verification. I will update the patch with suggested changes and improve it little bit more to avoid the dirty build directory. Also, for the sample app I will copy examples/helloworld source code only in the docker file. Regards, Abdul > -----Original Message----- > From: Yasufumi Ogawa <yasufum.o@gmail.com> > Sent: Monday, December 9, 2019 10:18 AM > To: Halim, Abdul <abdul.halim@intel.com>; Ruifeng Wang (Arm Technology > China) <Ruifeng.Wang@arm.com>; dev@dpdk.org > Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com>; Richardson, > Bruce <bruce.richardson@intel.com> > Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker > image > > Hi Abdul, > > On 2019/12/06 20:12, Halim, Abdul wrote: > >> -----Original Message----- > >> From: Yasufumi Ogawa <yasufum.o@gmail.com> > >> Sent: Thursday, December 5, 2019 7:52 PM > >> To: Ruifeng Wang (Arm Technology China) <Ruifeng.Wang@arm.com>; > >> Halim, Abdul <abdul.halim@intel.com>; dev@dpdk.org > >> Cc: Kinsella, Ray <ray.kinsella@intel.com>; nd <nd@arm.com> > >> Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building > >> docker image > >> > [...] > >>> > >>> Hi Abdul, > >>> > >>> I tried the steps on AArch64 platform, and hit error as below: > >>> > >>> $ sudo docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp > . > >>> Sending build context to Docker daemon 2.55GB > >>> Step 1/4 : FROM dpdk > >>> ---> 955448007987 > >>> Step 2/4 : ADD . /opt/dpdk > >>> ---> d8b58019a7e2 > >>> Step 3/4 : WORKDIR /opt/dpdk/examples/helloworld > >>> ---> Running in 14fc89f7d3cd > >>> Removing intermediate container 14fc89f7d3cd > >>> ---> 065a682c58fd > >>> Step 4/4 : RUN make && cp build/helloworld-shared > >> /usr/local/bin/helloworld > >>> ---> Running in 11e755a7180b > >>> Makefile:44: *** "Please define RTE_SDK environment variable". Stop. > >>> The command '/bin/sh -c make && cp build/helloworld-shared > >>> /usr/local/bin/helloworld' returned a non-zero code: 2 > >>> > >>> Missing define of RTE_SDK and RTE_TARGET? > >> > >> Hi Ruifeng, > >> > >> I think you run you run the command in dpdk/extras. However, this > >> 'Dockerfile.dpdkSampleApp' is expected to be run in dpdk's root dir > >> so that it is mounted as '/opt/dpdk' in the second step above. I have > >> tested this Dockerfile on Ubuntu 18.04 and compiled without any error. > >> RTE_SDK is set correctly, but dpdk's directory is not mounted in the > >> container. > >> > >> Abdul, > >> > >> >> +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . > >> > >> I think this line should be corrected as following, and make it clear > >> it should be run in dpdk's root. > >> > >> docker build -t ${DOCKERAPP_TAG} -f > extras/Dockerfile.dpdkSampleApp . > >> > >> Even if the container image is built successfully, there is another > >> problem in running app because it isn't run in privileged mode. > >> > >> root@0d2a309dfd2c:/opt/dpdk/examples/helloworld# helloworld > >> EAL: Detected 16 lcore(s) > >> EAL: Detected 1 NUMA nodes > >> ... > >> EAL: Failed to get current mempolicy: Operation not permitted. > >> Assuming MPOL_DEFAULT. > >> set_mempolicy: Operation not permitted > >> set_mempolicy: Operation not permitted > >> EAL: error allocating rte services array > >> EAL: FATAL: rte_service_init() failed > >> EAL: rte_service_init() failed > >> PANIC in main(): > >> Cannot init EAL > >> 5: [helloworld(+0x84a) [0x55555555484a]] > >> 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) > >> [0x7ffff7721b97]] > >> 3: [helloworld(+0x818) [0x555555554818]] > >> 2: > >> [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(__rte_panic+0xbd) > >> [0x7ffff7afb410]] > >> 1: > >> [/usr/local/lib/x86_64-linux-gnu/librte_eal.so.20.1(rte_dump_stack+0x > >> 2e) > >> [0x7ffff7b1598e]] > >> Aborted (core dumped) > >> > >> I think '--privileged' option should be added to avoid the error. > >> > >> $ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages > >> dpdk- helloworld > >> > >> I have one more suggestion. You might have added $USER to docker > >> group and run docker without sudo like as following. > >> > >> $ sudo groupadd docker > >> $ sudo usermod -aG docker $USER > >> > >> I wounder it is better to use sudo in your examples, or add the > >> instruction for users not familiar with docker. > >> > >> Regards, > >> Yasufumi > > > > Hi Yasufumi, > > Thank you for your feedback. > > The steps for creating the sample app docker file explains that that > > we are creating the file at dpdk root directory. So the assumption > > here is the docker run command also run from there. Not sure if we need > to repeat this later also. > > > > The 'cat' command above creates the docker file in dpdk root directory > > for simplicity. Actually, we just needed the examples/helloworld > > source code from there. As for other user application, the docker file > > could be anywhere, not necessarily in dpdk tree at all. User need to > > run docker build from where their own docker file is. > Yes. > > > > > The dpdk 'base' container should be used as shared-lib to build dpdk > > application with libdpdk. So, the dpdk source code, RTE_SDK or > > RTE_TARGET is not needed unless the pkg-config is unable to find libdpdk. > Sorry, I mixed up with the case of using these env variables. > > > > > I will update the patch with suggested '--privileged' flag on docker run > command. > > Not sure if we should cover the docker permissions and docker specific > > configurations on this doc though. I am sure user can find those > > resources somewhere else if needed. > OK. It is just a suggestion. I though that it is better to include basic usage > concisely, but no need if user can find it easily. > > Regards, > Yasufumi > > > > Hi Ruifeng, > > Unfortunately I could not create Aarch64 environment to test this. > > Could you please run the following command in your env and see if you can > get output as below: > > > > $ docker run --rm dpdk pkg-config --list-all | grep libdpdk > > libdpdk DPDK - The Data Plane Development Kit (DPDK). > > > > > > Regards, > > Abdul > > > >> > >>> > >>>> + > >>>> +This sample app now can be run like any other applicaiton in a > >>>> +docker > >>>> container. > >>>> + > >>>> +``` > >>>> +$ docker run --rm -it -v /dev/hugepages:/dev/hugepages > >>>> +dpdk-helloworld ``` > >>>> + > >>>> +## Running the sample app > >>>> +Once inside the container run helloword binary > >>>> + > >>>> +``` > >>>> +$ root@11233ed2e69c # helloworld > >>>> +``` > >>>> + > >>>> -- > >>>> 1.8.3.1 > >>>> > >>>> -------------------------------------------------------------- > >>>> Intel Research and Development Ireland Limited Registered in > >>>> Ireland Registered Office: Collinstown Industrial Park, Leixlip, > >>>> County Kildare Registered Number: 308263 > >>>> > >>>> > >>>> This e-mail and any attachments may contain confidential material > >>>> for the sole use of the intended recipient(s). Any review or > >>>> distribution by others is strictly prohibited. If you are not the > >>>> intended recipient, please contact the sender and delete all copies. > >>> > > -------------------------------------------------------------- > > Intel Research and Development Ireland Limited Registered in Ireland > > Registered Office: Collinstown Industrial Park, Leixlip, County > > Kildare Registered Number: 308263 > > > > > > This e-mail and any attachments may contain confidential material for > > the sole use of the intended recipient(s). Any review or distribution > > by others is strictly prohibited. If you are not the intended > > recipient, please contact the sender and delete all copies. > > -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [dpdk-dev] [PATCH v4] build: add dockerfile for building docker image 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image Abdul Halim ` (2 preceding siblings ...) 2019-12-03 11:42 ` [dpdk-dev] [PATCH v3] " Abdul Halim @ 2019-12-10 13:44 ` Abdul Halim 2019-12-10 13:55 ` [dpdk-dev] [PATCH v5] " Abdul Halim 2019-12-11 16:39 ` [dpdk-dev] [PATCH v6] " Abdul Halim 5 siblings, 0 replies; 24+ messages in thread From: Abdul Halim @ 2019-12-10 13:44 UTC (permalink / raw) To: dev; +Cc: ray.kinsella, yasufum.o, Ruifeng.Wang, Abdul Halim 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 --- 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..8b6b04a --- /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 +``` + -- 1.8.3.1 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image Abdul Halim ` (3 preceding siblings ...) 2019-12-10 13:44 ` [dpdk-dev] [PATCH v4] " Abdul Halim @ 2019-12-10 13:55 ` Abdul Halim 2019-12-10 17:44 ` Ray Kinsella 2019-12-11 6:45 ` Ruifeng Wang (Arm Technology China) 2019-12-11 16:39 ` [dpdk-dev] [PATCH v6] " Abdul Halim 5 siblings, 2 replies; 24+ messages in thread From: Abdul Halim @ 2019-12-10 13:55 UTC (permalink / raw) To: dev; +Cc: ray.kinsella, yasufum.o, Ruifeng.Wang, Abdul Halim 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 +``` + -- 1.8.3.1 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 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 6:45 ` Ruifeng Wang (Arm Technology China) 1 sibling, 1 reply; 24+ messages in thread From: Ray Kinsella @ 2019-12-10 17:44 UTC (permalink / raw) To: dev, Abdul Halim 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 ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 2019-12-10 17:44 ` Ray Kinsella @ 2019-12-11 10:53 ` Halim, Abdul 2019-12-11 17:00 ` Ray Kinsella 0 siblings, 1 reply; 24+ messages in thread From: Halim, Abdul @ 2019-12-11 10:53 UTC (permalink / raw) To: Ray Kinsella, dev > -----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 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 2019-12-11 10:53 ` Halim, Abdul @ 2019-12-11 17:00 ` Ray Kinsella 2023-06-12 2:44 ` Stephen Hemminger 0 siblings, 1 reply; 24+ messages in thread From: Ray Kinsella @ 2019-12-11 17:00 UTC (permalink / raw) To: Halim, Abdul, dev 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 ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 2019-12-11 17:00 ` Ray Kinsella @ 2023-06-12 2:44 ` Stephen Hemminger 0 siblings, 0 replies; 24+ messages in thread From: Stephen Hemminger @ 2023-06-12 2:44 UTC (permalink / raw) To: Ray Kinsella; +Cc: Halim, Abdul, dev On Wed, 11 Dec 2019 17:00:14 +0000 Ray Kinsella <mdr@ashroe.eu> wrote: > > > > 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 Have to agree with Ray here. The DPDK build process is complex and robust enough as is. Unless someone wants to go farther with container based build, it doesn't look like this patch got any traction in 4 years so dropping it. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 2019-12-10 13:55 ` [dpdk-dev] [PATCH v5] " Abdul Halim 2019-12-10 17:44 ` Ray Kinsella @ 2019-12-11 6:45 ` Ruifeng Wang (Arm Technology China) 2019-12-11 16:35 ` Halim, Abdul 1 sibling, 1 reply; 24+ messages in thread From: Ruifeng Wang (Arm Technology China) @ 2019-12-11 6:45 UTC (permalink / raw) To: Abdul Halim, dev; +Cc: ray.kinsella, yasufum.o, nd > -----Original Message----- > From: Abdul Halim <abdul.halim@intel.com> > Sent: Tuesday, December 10, 2019 21:55 > To: dev@dpdk.org > Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Ruifeng Wang (Arm > Technology China) <Ruifeng.Wang@arm.com>; Abdul Halim > <abdul.halim@intel.com> > Subject: [PATCH v5] build: add dockerfile for building docker image > > 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 You may want to rm /tmp/dpdk-build as well. Regards, /Ruifeng > + > +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 > +``` > + > -- > 1.8.3.1 > > -------------------------------------------------------------- > Intel Research and Development Ireland Limited Registered in Ireland > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > Registered Number: 308263 > > > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). Any review or distribution by others is > strictly prohibited. If you are not the intended recipient, please contact the > sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v5] build: add dockerfile for building docker image 2019-12-11 6:45 ` Ruifeng Wang (Arm Technology China) @ 2019-12-11 16:35 ` Halim, Abdul 0 siblings, 0 replies; 24+ messages in thread From: Halim, Abdul @ 2019-12-11 16:35 UTC (permalink / raw) To: Ruifeng Wang (Arm Technology China), dev; +Cc: Kinsella, Ray, yasufum.o, nd > -----Original Message----- > From: Ruifeng Wang (Arm Technology China) <Ruifeng.Wang@arm.com> > Sent: Wednesday, December 11, 2019 6:45 AM > To: Halim, Abdul <abdul.halim@intel.com>; dev@dpdk.org > Cc: Kinsella, Ray <ray.kinsella@intel.com>; yasufum.o@gmail.com; nd > <nd@arm.com> > Subject: RE: [PATCH v5] build: add dockerfile for building docker image > > > > -----Original Message----- > > From: Abdul Halim <abdul.halim@intel.com> > > Sent: Tuesday, December 10, 2019 21:55 > > To: dev@dpdk.org > > Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Ruifeng Wang (Arm > > Technology China) <Ruifeng.Wang@arm.com>; Abdul Halim > > <abdul.halim@intel.com> > > Subject: [PATCH v5] build: add dockerfile for building docker image > > > > 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 > > You may want to rm /tmp/dpdk-build as well. Sure, I'll update the patch. > > Regards, > /Ruifeng > > + > > +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 > > +``` > > + > > -- > > 1.8.3.1 > > > > -------------------------------------------------------------- > > Intel Research and Development Ireland Limited Registered in Ireland > > Registered Office: Collinstown Industrial Park, Leixlip, County > > Kildare Registered Number: 308263 > > > > > > This e-mail and any attachments may contain confidential material for > > the sole use of the intended recipient(s). Any review or distribution > > by others is strictly prohibited. If you are not the intended > > recipient, please contact the sender and delete all copies. -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* [dpdk-dev] [PATCH v6] build: add dockerfile for building docker image 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image Abdul Halim ` (4 preceding siblings ...) 2019-12-10 13:55 ` [dpdk-dev] [PATCH v5] " Abdul Halim @ 2019-12-11 16:39 ` Abdul Halim 2019-12-12 6:53 ` Ruifeng Wang (Arm Technology China) 5 siblings, 1 reply; 24+ messages in thread From: Abdul Halim @ 2019-12-11 16:39 UTC (permalink / raw) To: dev; +Cc: ray.kinsella, yasufum.o, Ruifeng.Wang, Abdul Halim 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 --- v6: * clean up temp build directory --- 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..08b4c60 --- /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 /tmp/dpdk-build + +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 +``` + -- 1.8.3.1 -------------------------------------------------------------- Intel Research and Development Ireland Limited Registered in Ireland Registered Office: Collinstown Industrial Park, Leixlip, County Kildare Registered Number: 308263 This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [dpdk-dev] [PATCH v6] build: add dockerfile for building docker image 2019-12-11 16:39 ` [dpdk-dev] [PATCH v6] " Abdul Halim @ 2019-12-12 6:53 ` Ruifeng Wang (Arm Technology China) 0 siblings, 0 replies; 24+ messages in thread From: Ruifeng Wang (Arm Technology China) @ 2019-12-12 6:53 UTC (permalink / raw) To: Abdul Halim, dev; +Cc: ray.kinsella, yasufum.o, nd > -----Original Message----- > From: Abdul Halim <abdul.halim@intel.com> > Sent: Thursday, December 12, 2019 00:39 > To: dev@dpdk.org > Cc: ray.kinsella@intel.com; yasufum.o@gmail.com; Ruifeng Wang (Arm > Technology China) <Ruifeng.Wang@arm.com>; Abdul Halim > <abdul.halim@intel.com> > Subject: [PATCH v6] build: add dockerfile for building docker image > > 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 > > --- > v6: > * clean up temp build directory > --- > 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 > Tested-by: Ruifeng Wang <ruifeng.wang@arm.com> ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2023-06-12 2:44 UTC | newest] Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-08-27 16:44 [dpdk-dev] [PATCH] build: add dockerfile for building docker image 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 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)
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).