DPDK-dev Archive on lore.kernel.org
 help / color / Atom feed
From: Yasufumi Ogawa <yasufum.o@gmail.com>
To: "Halim, Abdul" <abdul.halim@intel.com>,
	"Ruifeng Wang (Arm Technology China)" <Ruifeng.Wang@arm.com>,
	"dev@dpdk.org" <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
Date: Mon, 9 Dec 2019 19:18:14 +0900
Message-ID: <d8a5d490-6060-e952-7304-0e4197e190f2@gmail.com> (raw)
In-Reply-To: <SN6PR11MB2893F18FBE9EB1E9208D16FAFE5F0@SN6PR11MB2893.namprd11.prod.outlook.com>

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.
> 

  parent reply index

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-27 16:44 [dpdk-dev] [PATCH] " Abdul Halim
2019-09-30  8:54 ` Ray Kinsella
2019-09-30 12:21   ` Halim, Abdul
2019-10-04 10:08 ` [dpdk-dev] [PATCH v2] " Abdul Halim
2019-10-15  8:39   ` Ray Kinsella
2019-11-13 20:26     ` Yasufumi Ogawa
2019-12-03 11:42 ` [dpdk-dev] [PATCH v3] " Abdul Halim
2019-12-05 14:13   ` Ruifeng Wang (Arm Technology China)
2019-12-05 19:51     ` Yasufumi Ogawa
2019-12-06 11:12       ` Halim, Abdul
2019-12-09  3:23         ` Ruifeng Wang (Arm Technology China)
2019-12-09  9:44           ` Yasufumi Ogawa
2019-12-09 10:18         ` Yasufumi Ogawa [this message]
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
2019-12-11  6:45   ` Ruifeng Wang (Arm Technology China)
2019-12-11 16:35     ` Halim, Abdul
2019-12-11 16:39 ` [dpdk-dev] [PATCH v6] " Abdul Halim
2019-12-12  6:53   ` Ruifeng Wang (Arm Technology China)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d8a5d490-6060-e952-7304-0e4197e190f2@gmail.com \
    --to=yasufum.o@gmail.com \
    --cc=Ruifeng.Wang@arm.com \
    --cc=abdul.halim@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=nd@arm.com \
    --cc=ray.kinsella@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK-dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \
		dev@dpdk.org
	public-inbox-index dpdk-dev

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git