Ubuntu 无法在docker容器中安装程序包

Ubuntu 无法在docker容器中安装程序包,ubuntu,docker,containers,dockerfile,Ubuntu,Docker,Containers,Dockerfile,以下是我的系统中存在的一些docker映像: root@labadmin-VirtualBox:/home/labadmin# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 1e0c3dd64ccd 13 days ago 187.9 MB ubuntu latest 45bc58500fa3

以下是我的系统中存在的一些docker映像:

root@labadmin-VirtualBox:/home/labadmin# docker images
REPOSITORY   TAG     IMAGE ID            CREATED               SIZE
ubuntu      14.04   1e0c3dd64ccd        13 days ago         187.9 MB
ubuntu     latest   45bc58500fa3        5 weeks ago         126.9 MB
我想在容器中安装“smartmontools”。但它抛出了一个错误“无法定位软件包smartmontools”,如下所示:

root@labadmin-VirtualBox:/home/labadmin# docker run -it 1e0c3dd64ccd
root@b4954826a227:/# apt-get install smartmontools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package smartmontools
root@b4954826a227:/# exit
exit
但当我在Ubuntu机器上做同样的事情时,它就开始工作了

root@labadmin-VirtualBox:/home/labadmin# apt-get install smartmontools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
***smartmontools is already the newest version.***
0 upgraded, 0 newly installed, 0 to remove and 542 not upgraded.
root@labadmin-VirtualBox:/home/labadmin# 
Ubuntu容器和Ubuntu系统有什么区别?是什么阻止包安装在容器中

我的要求是创建一个容器,其中包含一些实用程序,并将Ubuntu操作系统作为基本映像:

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y smartmontools

当您通过手动运行容器进行测试时,不会更新带有
apt get update
的缓存,因此
无法定位包
错误


但是Dockerfile示例应该可以工作

当您通过手动运行容器进行测试时,您不会更新带有
apt get update
的缓存,因此
无法定位包
错误


但是您的Dockerfile示例应该可以运行

以下过程帮助我解决了此问题:

root@labadmin-VirtualBox:/home/labadmin# docker run busybox ping -c 2 192.203.230.10
PING 192.203.230.10 (192.203.230.10): 56 data bytes
64 bytes from 192.203.230.10: seq=0 ttl=56 time=66.724 ms
64 bytes from 192.203.230.10: seq=1 ttl=56 time=54.786 ms
--- 192.203.230.10 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 45.815/56.947/66.724 ms
当您尝试使用容器ping到google.com时,由于DNS问题,它无法到达

root@labadmin-VirtualBox:/home/labadmin# docker run busybox nslookup google.com
Server:    8.8.8.8
Address 1: 8.8.8.8

nslookup: can't resolve 'google.com'
查找计算机中使用的DNS服务器:

root@labadmin-VirtualBox:/home/labadmin# nm-tool  |grep DNS
    DNS:             172.24.100.50
    DNS:             10.1.100.50
通过添加DNS IP执行相同操作:

root@labadmin-VirtualBox:/home/labadmin# docker run --dns 172.24.100.50 busybox nslookup google.com
Server:    172.24.100.50
Address 1: 172.24.100.50 indc01.radisys.com

Name:      google.com
Address 1: 2607:f8b0:4009:80c::200e ord36s01-in-x0e.1e100.net
Address 2: 172.217.4.110 ord36s04-in-f14.1e100.net
要永久解决此问题,请将以下内容添加到新文件:

root@labadmin-VirtualBox:/home/labadmin# cat /etc/docker/daemon.json
{
    "dns" : ["172.24.100.50", "8.8.8.8"]
}
有关Docker DNS配置的更多信息:

重新启动docker服务:

root@labadmin-VirtualBox:/home/labadmin# sudo service docker restart
docker stop/waiting
docker start/running, process 22291

root@labadmin-VirtualBox:/home/labadmin# docker run busybox nslookup google.com
Server:    172.24.100.50
Address 1: 172.24.100.50 indc01.radisys.com

Name:      google.com
Address 1: 2607:f8b0:4009:801::200e ord30s31-in-x0e.1e100.net
Address 2: 172.217.4.238 ord30s31-in-f14.1e100.net
通过运行容器进行检查:

root@labadmin-VirtualBox:/home/labadmin# docker run -it e02e811dd08f
/ # ping google.com
PING google.com (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: seq=0 ttl=47 time=251.506 ms
64 bytes from 172.217.4.238: seq=1 ttl=47 time=245.621 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 245.621/257.113/272.586 ms
/ #

有关详细信息:

以下过程帮助我解决了此问题:

root@labadmin-VirtualBox:/home/labadmin# docker run busybox ping -c 2 192.203.230.10
PING 192.203.230.10 (192.203.230.10): 56 data bytes
64 bytes from 192.203.230.10: seq=0 ttl=56 time=66.724 ms
64 bytes from 192.203.230.10: seq=1 ttl=56 time=54.786 ms
--- 192.203.230.10 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 45.815/56.947/66.724 ms
当您尝试使用容器ping到google.com时,由于DNS问题,它无法到达

root@labadmin-VirtualBox:/home/labadmin# docker run busybox nslookup google.com
Server:    8.8.8.8
Address 1: 8.8.8.8

nslookup: can't resolve 'google.com'
查找计算机中使用的DNS服务器:

root@labadmin-VirtualBox:/home/labadmin# nm-tool  |grep DNS
    DNS:             172.24.100.50
    DNS:             10.1.100.50
通过添加DNS IP执行相同操作:

root@labadmin-VirtualBox:/home/labadmin# docker run --dns 172.24.100.50 busybox nslookup google.com
Server:    172.24.100.50
Address 1: 172.24.100.50 indc01.radisys.com

Name:      google.com
Address 1: 2607:f8b0:4009:80c::200e ord36s01-in-x0e.1e100.net
Address 2: 172.217.4.110 ord36s04-in-f14.1e100.net
要永久解决此问题,请将以下内容添加到新文件:

root@labadmin-VirtualBox:/home/labadmin# cat /etc/docker/daemon.json
{
    "dns" : ["172.24.100.50", "8.8.8.8"]
}
有关Docker DNS配置的更多信息:

重新启动docker服务:

root@labadmin-VirtualBox:/home/labadmin# sudo service docker restart
docker stop/waiting
docker start/running, process 22291

root@labadmin-VirtualBox:/home/labadmin# docker run busybox nslookup google.com
Server:    172.24.100.50
Address 1: 172.24.100.50 indc01.radisys.com

Name:      google.com
Address 1: 2607:f8b0:4009:801::200e ord30s31-in-x0e.1e100.net
Address 2: 172.217.4.238 ord30s31-in-f14.1e100.net
通过运行容器进行检查:

root@labadmin-VirtualBox:/home/labadmin# docker run -it e02e811dd08f
/ # ping google.com
PING google.com (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: seq=0 ttl=47 time=251.506 ms
64 bytes from 172.217.4.238: seq=1 ttl=47 time=245.621 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 245.621/257.113/272.586 ms
/ #

有关更多信息:

root@labadmin-VirtualBox:~/RAGHU#docker build-tmont:1.1。将生成上下文发送到Docker daemon 209.5 MB步骤1:从ubuntu:14.04--->1e0c3dd64ccd步骤2:运行apt get update&&apt get install-y smartmontools--->在616f62c55440更新/删除读取包列表中运行。。。正在构建依赖关系树。。。正在读取状态信息。。。E:找不到软件包smartmontools命令“/bin/sh-c apt get update&&apt get install-y smartmontools”返回一个非零代码:100尝试使用--no cache和--pull进行构建以确保。这将确保映像是最新的,并使可能包含无效映像的缓存无效dataroot@labadmin-VirtualBox:~/RAGHU#docker build-tmont:1.1。将生成上下文发送到Docker daemon 209.5 MB步骤1:从ubuntu:14.04--->1e0c3dd64ccd步骤2:运行apt get update&&apt get install-y smartmontools--->在616f62c55440更新/删除读取包列表中运行。。。正在构建依赖关系树。。。正在读取状态信息。。。E:找不到软件包smartmontools命令“/bin/sh-c apt get update&&apt get install-y smartmontools”返回一个非零代码:100尝试使用--no cache和--pull进行构建以确保。这将确保映像是最新的,并将使可能包含无效数据的缓存无效。容器中是否有internet可用?是的,正在工作,但看起来像DNS问题。您的发现是什么?更新了下面帖子中的详细过程以解决问题:容器中是否有internet可用?是的,正在工作,但看起来像是DNS问题。你的发现是什么?更新了下面帖子中的详细过程以解决问题:谢谢