error message when running images of the wrong arch can be considered confusing

Bug #1366509 reported by anatoly techtonik on 2014-09-07
20
This bug affects 4 people
Affects Status Importance Assigned to Milestone
docker.io (Ubuntu)
Wishlist
Unassigned

Bug Description

Installation is ok:

$ sudo apt-get install docker.io
...
The following extra packages will be installed:
   aufs-tools (3.2+20130722-1.1)
   cgroup-lite (1.9)
Suggested packages:
   btrfs-tools (3.12-1)
   rinse (2.0.1-1)
The following NEW packages will be installed:
   aufs-tools (3.2+20130722-1.1)
   cgroup-lite (1.9)
   docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1)
0 upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
...
Setting up docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...
Adding group `docker' (GID 132) ...
Done.
docker.io start/running, process 7291
Setting up cgroup-lite (1.9) ...
cgroup-lite start/running
Processing triggers for libc-bin (2.19-0ubuntu6.3) ...
Processing triggers for ureadahead (0.100.0-16) ...

But then it fails with 'exec format error':

$ sudo docker run ubuntu
[sudo] password for techtonik:
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
826544226fdc: Download complete
511136ea3c5a: Download complete
b3553b91f79f: Download complete
ca63a3899a99: Download complete
ff01d67c9471: Download complete
7428bd008763: Download complete
c7c7108e0ad8: Download complete
2014/09/07 10:07:38 exec format error
$

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: docker.io 1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1
ProcVersionSignature: Ubuntu 3.13.0-35.62-generic 3.13.11.6
Uname: Linux 3.13.0-35-generic i686
NonfreeKernelModules: nvidia
ApportVersion: 2.14.1-0ubuntu3.3
Architecture: i386
CurrentDesktop: Unity
Date: Sun Sep 7 13:14:41 2014
InstallationDate: Installed on 2012-03-12 (908 days ago)
InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Beta i386 (20120301)
SourcePackage: docker.io
UpgradeStatus: Upgraded to trusty on 2014-04-18 (141 days ago)

anatoly techtonik (techtonik) wrote :
anatoly techtonik (techtonik) wrote :

$ sudo docker -D info
Containers: 1
Images: 7
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 9
Execution Driver: native-0.2
Kernel Version: 3.13.0-35-generic
Debug mode (server): false
Debug mode (client): true
Fds: 10
Goroutines: 10
EventsListeners: 0
Init SHA1: 20660385539da47759997a7ba8c2e5b97b371f46
Init Path: /usr/lib/docker.io/dockerinit
WARNING: No swap limit support

Tianon Gravi (tianon) wrote :

You're on a 32bit system (i386) and trying to run a 64bit image (amd64). Systems that aren't 64bit are officially unsupported upstream, so to use one, you'll have to make your own images (including the base images), or find some that someone else has made with the appropriate architecture.

anatoly techtonik (techtonik) wrote :

They are not supported upstream, but available from Ubuntu for this platform. I tried to use https://registry.hub.docker.com/u/i686/ubuntu/ before I removed docker from my system and I believe the error was the same - exec format error.

Robie Basak (racb) wrote :

Since i386 isn't supported upstream, I think it's fair to set Importance: Low in Ubuntu. By all means we welcome people working on it, but I don't see it as a priority for Ubuntu as a project to enable i386, and nor does it represent a major break from expectations for Docker users using Ubuntu.

Changed in docker.io (Ubuntu):
importance: Undecided → Low
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in docker.io (Ubuntu):
status: New → Confirmed

As was noted on the upstream issue, this is working as designed. You
cannot run a 64bit image on a 32bit host. Also, upstream does not
officially support 32bit hosts, so you will need to use something like
debootstrap to create your own.

I agree completely, but upstream isn't planning to change that in the
near future (especially since this particular configuration is not
only unsupported, but the Debian/Ubuntu package includes a 100%
unapproved-by-upstream patch to make it even possible).

_Maybe_ today's Microsoft news will help upstream make the necessary
changes to support different platforms with a better/smoother UX, but
only time will tell. For now, this issue is definitely very firmly in
the not-a-bug category (especially as far as the Ubuntu packaging is
concerned).

The argument could actually be made that the Debian/Ubuntu package
should instead drop the unapproved patch that makes this particular
configuration possible, but that's certainly not going to be a popular
choice with the people currently using and enjoying it with their own
home-grown images.

Triaged as a wishlist bug. I've changed the title be be more accurate about the real bug here.

Likely something that should go upstream, but I think upstream will just say doing that is unsupported and close the bug.

summary: - "exec format error" with "docker run ubuntu" right after installation
+ error message when running images of the wrong can be considered
+ confusing
Changed in docker.io (Ubuntu):
importance: Low → Wishlist
status: Confirmed → Triaged
summary: - error message when running images of the wrong can be considered
+ error message when running images of the wrong arch can be considered
confusing
anatoly techtonik (techtonik) wrote :

Yes. Upstream hardblocked the ability to run 32 bit images, which is a serious limitation IMHO. If LXC allows that then I'd be interested to know the specific challenges that prevent that rather than blocking the stuff completely.

Neal McBurnett (nealmcb) wrote :

I'm a docker newbie trying to follow the recommended installation and verification procedure for running docker on 14.04 trusty, as described at

  https://docs.docker.com/installation/ubuntulinux/

I seem to have figured out the workaround that is being referred to here, so I'll post what I did in hopes that it will help other newbies that aren't sure what to do to run docker on the ubuntu-provided 32-bit (i686) environment.

After installing the docker package, instead of running

  sudo docker run -i -t ubuntu /bin/bash

try this:

  sudo docker pull i686/ubuntu
  sudo docker run -i -t i686/ubuntu /bin/bash

A few times I've gotten this error: "finalize namespace drop capabilities operation not permitted", but I'll leave that issue for another place. Trying the "docker run" command again typically works, and gives me a root bash shell in the new environment.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers