[VAL-93] Docker command fails in blucon.sh Created: 19/Dec/19  Updated: 20/Dec/19  Resolved: 20/Dec/19

Status: Done
Project: Validation
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Medium
Reporter: Juha Kosonen Assignee: Alex Antone
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: 0 minutes
Time Spent: 1 hour
Original Estimate: Not Specified


 Description   

An attempt to run a test via blucon.sh fails due to docker executable is not found

 

[cloudadmin@controller-1 validation]$ bash ./bluval/blucon.sh -l os rec
AKRAINO_HOME not available. Setting...
AKRAINO_HOME=/home/cloudadmin/juha
Building docker image
Sending build context to Docker daemon 40.96kB
Step 1/6 : FROM python:3.6-alpine3.9
 ---> d6f5a1298164
Step 2/6 : RUN apk --no-cache add --update gcc git libc-dev libffi libffi-dev make openssl-dev
 ---> Using cache
 ---> 11848faf90db
Step 3/6 : RUN git clone https://gerrit.akraino.org/r/validation /opt/akraino/validation
 ---> Using cache
 ---> 55304eb30ca4
Step 4/6 : RUN pip3 install -r /opt/akraino/validation/bluval/requirements.txt
 ---> Using cache
 ---> 14f1449416f2
Step 5/6 : WORKDIR /opt/akraino/validation
 ---> Using cache
 ---> 9eaf0e8c555c
Step 6/6 : ENTRYPOINT ["python3", "bluval/blucon.py"]
 ---> Using cache
 ---> ea7d60b3c94c
Successfully built ea7d60b3c94c
Successfully tagged akraino/validation:blucon-master
+ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /home/cloudadmin/juha/results:/opt/akraino/results -v /home/cloudadmin/juha/validation:/opt/akraino/validation akraino/validation:blucon-master -l os rec
/bin/sh: docker: not found
Invoking ["docker run --rm -v /home/cloudadmin/juha/validation/tests/variables.yaml:/opt/akraino/validation/tests/variables.yaml -v /home/cloudadmin/juha/validation/bluval:/opt/akraino/validation/bluval -v /home/cloudadmin/juha/results:/opt/akraino/results -v /home/cloudadmin/.ssh:/root/.ssh akraino/validation:os-latest /bin/sh -c 'cd /opt/akraino/validation && python bluval/bluval.py -l os rec'"]
[cloudadmin@controller-1 validation]$

 

The binary is there even reported as missing

[cloudadmin@controller-1 juha]$ docker run -ti -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /home/cloudadmin/juha/results:/opt/akraino/results -v /home/cloudadmin/juha/validation:/opt/akraino/validation --entrypoint "/bin/sh" akraino/validation:blucon-local
/opt/akraino/validation # docker --version
/bin/sh: docker: not found
/opt/akraino/validation # which docker
/usr/bin/docker
/opt/akraino/validation # ls -l /usr/bin/docker
-rwxr-xr-x 1 root root 88960560 Oct 8 00:59 /usr/bin/docker
/opt/akraino/validation # apk add strace
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/1) Installing strace (4.24-r0)
Executing busybox-1.29.3-r10.trigger
OK: 157 MiB in 57 packages
/opt/akraino/validation # strace docker
execve("/usr/bin/docker", ["docker"], 0x7ffede50eab0 /* 12 vars */) = -1 ENOENT (No such file or directory)
writev(2, [{iov_base="strace: exec: No such file or di"..., iov_len=40}, {iov_base=NULL, iov_len=0}], 2strace: exec: No such file or directory
) = 40
getpid() = 14
exit_group(1) = ?
+++ exited with 1 +++
/opt/akraino/validation #
/opt/akraino/validation # apk add file
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/2) Installing libmagic (5.36-r1)
(2/2) Installing file (5.36-r1)
Executing busybox-1.29.3-r10.trigger
OK: 161 MiB in 58 packages
/opt/akraino/validation # file /usr/bin/docker 
/usr/bin/docker: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, Go BuildID=BvxpKLIksLa4rJ-2o4is/xfihYlupZ-rXT6bnzJZn/iVlELuoX3kMBzLCeIYHQ/TAhPdOSUFAroknYT0r3i, BuildID[sha1]=1555a9dd23403d88b057d4467816f02849d59681, not stripped

Maybe this is due to fact that the bind mounted docker binary is dynamically linked. The command works when docker is installed in container

[cloudadmin@controller-1 juha]$ docker run -ti -v /var/run/docker.sock:/var/run/docker.sock -v /home/cloudadmin/juha/results:/opt/akraino/results -v /home/cloudadmin/juha/validation:/opt/akraino/validation --entrypoint "/bin/sh" akraino/validation:blucon-local
/opt/akraino/validation # docker
/bin/sh: docker: not found
/opt/akraino/validation # apk add docker
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/10) Installing libseccomp (2.3.3-r1)
(2/10) Installing runc (1.0.0_rc8-r0)
(3/10) Installing containerd (1.2.7-r0)
(4/10) Installing libmnl (1.0.4-r0)
(5/10) Installing jansson (2.11-r0)
(6/10) Installing libnftnl-libs (1.1.1-r0)
(7/10) Installing iptables (1.6.2-r1)
(8/10) Installing tini-static (0.18.0-r0)
(9/10) Installing device-mapper-libs (2.02.182-r0)
(10/10) Installing docker (18.09.8-r0)
Executing docker-18.09.8-r0.pre-install
Executing busybox-1.29.3-r10.trigger
OK: 410 MiB in 66 packages
/opt/akraino/validation # docker --version
Docker version 18.09.8-ce, build 0dd43dd87fd530113bf44c9bba9ad8b20ce4637f
/opt/akraino/validation # apk add file
(1/2) Installing libmagic (5.36-r1)
(2/2) Installing file (5.36-r1)
Executing busybox-1.29.3-r10.trigger
OK: 415 MiB in 68 packages
/opt/akraino/validation # file /usr/bin/docker
/usr/bin/docker: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, Go BuildID=mLIj9EPTIQSMBpASeb8V/zKyFT8LPh3WB1psMXkVj/8F7voi3AHUkhaPKv62h6/T_NZUL5vGDhKtdwDthjf, stripped

ns156u

cristinapauna

alex.antone



 Comments   
Comment by Alex Antone [ 20/Dec/19 ]

Fixed and merged:
https://gerrit.akraino.org/r/c/validation/+/2168

Comment by Alex Antone [ 19/Dec/19 ]

The problem was not about the docker binary not existing, but instead libpthread, one of the shared libs was not present.

/opt/akraino/validation # ldd /usr/bin/docker
/lib/ld-linux-aarch64.so.1 (0xffff98f20000)
libpthread.so.0 => /lib/ld-linux-aarch64.so.1 (0xffff98f20000)
libdl.so.2 => /lib/ld-linux-aarch64.so.1 (0xffff98f20000)
libc.so.6 => /lib/ld-linux-aarch64.so.1 (0xffff98f20000)

/opt/akraino/validation # find /usr/lib | grep libpthread
/usr/lib/libpthread.a

libpthread.so.0 is available in the libc6-compat package

Comment by Cristina Pauna [ 19/Dec/19 ]

We are aware of the issue, will try to get a fix for it today.

Generated at Sat Feb 10 06:07:16 UTC 2024 using Jira 9.4.5#940005-sha1:e3094934eac4fd8653cf39da58f39364fb9cc7c1.