首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在码头集装箱中安装软件包

无法在码头集装箱中安装软件包
EN

Stack Overflow用户
提问于 2016-10-28 10:04:00
回答 2查看 1.2K关注 0票数 1

下面是我的系统中存在的一些停靠者映像:

代码语言:javascript
复制
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

我想在容器中安装“智能工具”。但是它抛出了一个错误,“无法找到包智能工具”如下所示:

代码语言:javascript
复制
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机器上做同样的事情时,它就开始工作了。

代码语言:javascript
复制
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作为基本映像创建一些实用程序的容器:

代码语言:javascript
复制
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y smartmontools
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-29 11:06:42

以下程序帮助我解决了这一问题:

代码语言:javascript
复制
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

当您试图使用容器到google.com时,由于DNS问题,它无法到达。

代码语言:javascript
复制
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服务器:

代码语言:javascript
复制
root@labadmin-VirtualBox:/home/labadmin# nm-tool  |grep DNS
    DNS:             172.24.100.50
    DNS:             10.1.100.50

通过添加DNS IP执行相同的操作:

代码语言:javascript
复制
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

若要永久解决此问题,请将以下内容添加到新文件中:

代码语言:javascript
复制
root@labadmin-VirtualBox:/home/labadmin# cat /etc/docker/daemon.json
{
    "dns" : ["172.24.100.50", "8.8.8.8"]
}

关于Docker配置的更多信息:https://docs.docker.com/engine/userguide/networking/configure-dns/

重新启动码头服务:

代码语言:javascript
复制
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

通过运行容器检查它:

代码语言:javascript
复制
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
/ #

有关更多信息:https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/

票数 0
EN

Stack Overflow用户

发布于 2016-10-28 10:14:14

当您通过手动运行容器进行测试时,不会使用apt-get update更新缓存,从而导致Unable to locate package错误

但是您的Dockerfile示例应该有效

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40302745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档