From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F429C43603 for ; Thu, 5 Dec 2019 19:51:46 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 042B320707 for ; Thu, 5 Dec 2019 19:51:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Cq0Vi96K" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 042B320707 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 971C91BF7F; Thu, 5 Dec 2019 20:51:43 +0100 (CET) Received: from mail-pj1-f65.google.com (mail-pj1-f65.google.com [209.85.216.65]) by dpdk.org (Postfix) with ESMTP id E4D931BF75 for ; Thu, 5 Dec 2019 20:51:41 +0100 (CET) Received: by mail-pj1-f65.google.com with SMTP id g4so1696945pjs.10 for ; Thu, 05 Dec 2019 11:51:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=np+zf3lZzH+fqRCn34jJdG+lFOonfruhIrQAb/nZJKM=; b=Cq0Vi96KjQM7IeEt09Nv5uvp6S1aEroUbBf96gEXuO3pf2wsMb84SjgH0JRmXPwE0w 7ZstICTryb1f/aYma4JAKjRhCdDXFueBsjvom84AiLvAP0ZvLAiQc4AjbVB2NtW7Wym0 WIQJz6z5JO8Kf9Ziu0KwG2KxZmJcXj2UgdLg2jUr1QxvONLOvOCeehuKwiPbnua/+RJK NBnXLGXJ98y29YgczlVY63aXMis+9ir6Uq0pi0gSusIZhlirzZ4lomvU8uaVmIHdrUxt 5JxAM+wFGt5MJJRK84ARmWA8Pw3BHk67zOg+Y/a0EI3/ndYyfZRwR9Ryq3iNSNVRtD9I 7jtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=np+zf3lZzH+fqRCn34jJdG+lFOonfruhIrQAb/nZJKM=; b=XpxCgfTI3V4bSE4AURdOgut6zhZsd3gqpDeBDTuYNyChS+/iNgZuuXxtNBPhO1uTha 2wsdmSpPR/GKuPf4MyIbEk4D2LwS/Q+UvlwGvELslgt2YUtXBSw7HwSHGIcZlUV8tUoF pKWssIsccLKHFQa01MqPmCBRTzAX3nIHLDCABM3V6DW7RULzfqH4yn5FgRbcq9PVSkLF c3y0kHyTEWWR6L5ajQWr7URUbgmD7TG1AyjydnMNks7qIecv09HOBN3chESbIjQNlAZp almDdt3PZD7Bc8ncg2Ht5+sbUclZjDYC0vkHSMU0Gwbt5yGvsdZd6kobA1K5q/KklENH Co1w== X-Gm-Message-State: APjAAAUcPHpOFMBhnryf9uTNC/zfOdDXOBumTICflLnYy2bfcl6y38oW cxTsG5N8LQXXmnZCS9cS5Xo= X-Google-Smtp-Source: APXvYqzZduXuYYv1/gcHzeWjI51DMoV0qv7XsmQ6QZHEA8PEsgUqhPU5FNpY4CafIWeRKzFMrlSbFQ== X-Received: by 2002:a17:902:409:: with SMTP id 9mr10698825ple.306.1575575500907; Thu, 05 Dec 2019 11:51:40 -0800 (PST) Received: from mugwort.local ([2400:4050:c8c2:de00:55a2:f021:694c:15b4]) by smtp.gmail.com with ESMTPSA id u20sm12146383pgf.29.2019.12.05.11.51.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Dec 2019 11:51:40 -0800 (PST) To: "Ruifeng Wang (Arm Technology China)" , Abdul Halim , "dev@dpdk.org" Cc: "ray.kinsella@intel.com" , nd References: <1566924290-451677-1-git-send-email-abdul.halim@intel.com> <1575373341-29969-1-git-send-email-abdul.halim@intel.com> From: Yasufumi Ogawa Message-ID: <199e2fda-bfb2-bd46-0b89-9d575f6c8989@gmail.com> Date: Fri, 6 Dec 2019 04:51:37 +0900 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v3] build: add dockerfile for building docker image X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 2019/12/05 23:13, Ruifeng Wang (Arm Technology China) wrote: > >> -----Original Message----- >> From: dev 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 >> >> 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 >> [...] >> 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. >