Error running file in Container “error when loading shared libraries” DOCKER
So I am building an image from a dockerfile, using the COPY command to copy a local file from host into my container. After the image is build I run an interactive shell, and test my file which I copied and am having an error.
Here is my shell information.
arcolombo@arcolombo:~/Documents/bedgraph_dockerfile$ sudo docker info Containers: 18 Images: 72 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Dirs: 108 Execution Driver: native-0.2 Kernel Version: 3.16.0-33-generic Username: arcolombo Registry: [https://index.docker.io/v1/] WARNING: No swap limit support
Here is my docker file
FROM ubuntu MAINTAINER email@example.com COPY software /bin
Note that under my directory where my Dockerfile is contained, I placed my “software” directory, which has a bedWiggle executable in the Dockerfile’s context, so it does get loaded into my new container of which my image creates.
This shows the successful completion of the image
arcolombo@arcolombo:~/Documents/bed_dockerfile$ sudo docker build -t="arcolombo" . Sending build context to Docker daemon 2.7 MB Sending build context to Docker daemon Step 0 : FROM ubuntu ---> d0955f21bf24 Step 1 : MAINTAINER firstname.lastname@example.org ---> Using cache ---> 5el36a81f34 Step 2 : COPY software /bin ---> Using cache ---> 1llhh2e278683ea Successfully built 1hhfjjeea
Yet I get the error when I enter the container built by the above image and running my executable
./bedWiggle: error while loading shared libraries: libkrb5.so.3: cannot open shared object file: No such file or directory
One Solution collect form web for “Error running file in Container “error when loading shared libraries” DOCKER”
The error tells you exactly what the problem is – you have copied over the executable, but it has dependencies on various libraries (including
libkrb5.so.3) that aren’t in the container.
You have two choices; you can add the dependencies to the container or you can recompile the executable so that it is statically linked.
You can run the
ldd tool on the executable to discover which dependencies it requires. You can then either copy the libraries directly into the container as you did with the executable or (probably better) you can find which package the dependencies are from and install with