无法在docker中找到包libc6-dbg:i386

我试图在基于Ubuntu的docker容器中安装libc6-dbg:i386,因为我需要它用于Valgrind,但我不能。

给定以下Dockerfile:

FROM ubuntu:14.04 MAINTAINER Me  RUN apt-get update RUN apt-get install libc6-dbg RUN apt-get install libc6-dbg:i386 

在Ubuntu 14.04桌面64位主机上运行:

 sudo docker build . 

我明白了:

 Step 0 : FROM ubuntu:14.04 ---> 5506de2b643b Step 1 : MAINTAINER Me  ---> Using cache ---> b1792911b80d Step 2 : RUN apt-get update ---> Using cache ---> 5e3928c88aff Step 3 : RUN apt-get install libc6-dbg ---> Running in ebd51fcb278b Reading package lists... Building dependency tree... Reading state information... The following NEW packages will be installed: libc6-dbg 0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded. Need to get 3452 kB of archives. After this operation, 22.8 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libc6-dbg amd64 2.19-0ubuntu6.3 [3452 kB] debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline debconf: unable to initialize frontend: Readline debconf: (This frontend requires a controlling tty.) debconf: falling back to frontend: Teletype dpkg-preconfigure: unable to re-open stdin: Fetched 3452 kB in 0s (5325 kB/s) Selecting previously unselected package libc6-dbg:amd64. (Reading database ... 11527 files and directories currently installed.) Preparing to unpack .../libc6-dbg_2.19-0ubuntu6.3_amd64.deb ... Unpacking libc6-dbg:amd64 (2.19-0ubuntu6.3) ... Setting up libc6-dbg:amd64 (2.19-0ubuntu6.3) ... ---> fe4bf0f008db Removing intermediate container ebd51fcb278b Step 4 : RUN apt-get install libc6-dbg:i386 ---> Running in 460cab3c4631 Reading package lists... Building dependency tree... Reading state information... E: Unable to locate package libc6-dbg 2014/11/20 15:23:06 The command [/bin/sh -c apt-get install libc6-dbg:i386] returned a non-zero code: 100 

在主机上我可以安装libc6-dbg:i386,为什么我不能在docker容器中安装它?

我自己会回答这个问题。

解决这个问题所需的信息是https://wiki.debian.org/Multiarch/HOWTO 。

在官方docker ubuntu映像中以及在phusion / baseimage中的配置仅支持amd64。 如果你问:这就是它告诉你的:

 # dpkg --print-architecture amd64 # dpkg --print-foreign-architectures  

解决此问题的方法是在apt-get更新之前添加另一个体系结构:

 # dpkg --add-architecture i386 # apt-get update  # apt-get install libc6-dbg:i386 Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: gcc-4.9-base:i386 libc6:i386 libgcc1:i386 Suggested packages: glibc-doc:i386 locales:i386 The following NEW packages will be installed: gcc-4.9-base:i386 libc6:i386 libc6-dbg:i386 libgcc1:i386 0 upgraded, 4 newly installed, 0 to remove and 21 not upgraded. Need to get 7039 kB of archives. After this operation, 26.4 MB of additional disk space will be used. Do you want to continue? [Y/n] 

为了完整性,这是最终的Dockerfile:

 FROM ubuntu:14.04 MAINTAINER Me  RUN dpkg --add-architecture i386 RUN apt-get update RUN apt-get install libc6-dbg RUN apt-get install libc6-dbg:i386 

尝试在Dockerfile中的apt-get update之前添加以下行:

 RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list