首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使容器很小,Docker也没有磁盘空间。

即使容器很小,Docker也没有磁盘空间。
EN

Stack Overflow用户
提问于 2015-12-23 06:44:45
回答 2查看 1.6K关注 0票数 3

我已经为Mac安装了Docker,并在里面运行了几个容器。我创造的前两个是卡桑德拉,运行良好。在此之后,我创建了两个Debian容器,通过对接终端连接到bash,目的是安装Oracle。

当我要从tarball中提取java的时候--在执行"tar“命令时,我收到了大量的”不能写:设备上没有空间“的错误消息。

我查过空间了:

代码语言:javascript
复制
$ docker ps -s

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                         NAMES               SIZE

9d8029e21918        debian:latest       "/bin/bash"              54 minutes ago      Up 54 minutes                                                     deb-2               620.5 MB (virtual 744 MB)

49c7a0e37475        debian:latest       "/bin/bash"              55 minutes ago      Up 55 minutes                                                     deb-1               620 MB (virtual 743.5 MB)

66a17af83ca3        cassandra           "/docker-entrypoint.s"   4 hours ago         Up 4 hours          7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp   node-2              40.16 MB (virtual 412.6 MB)

在看到输出后,我注意到我的一个带有cassandra的节点丢失了。在去检查基特列,并发现它是在下行状态,我不能启动它:“不能写节点。设备上没有空间”-错误信息显示为这一尝试。

码头工人对集装箱有什么限制吗?

当我移除所有的卡桑德拉,只留下几个Debian就能从焦油中提取出来。因此,这个问题肯定出现在一些与调整大小有关的Docker设置中。

什么是正确的方式来解决问题的空间限制这里?

最新消息。

$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE cassandra latest 13ea610e5c2b 11 hours ago 374.8 MB debian jessie 23cb15b0fcec 2 weeks ago 125.1 MB debian latest 23cb15b0fcec 2 weeks ago 125.1 MB

df -hi输出

$ df -hi Filesystem Inodes IUsed IFree IUse% Mounted on none 251K 38K 214K 15% / tmpfs 251K 18 251K 1% /dev tmpfs 251K 12 251K 1% /sys/fs/cgroup tmpfs 251K 38K 214K 15% /etc/hosts shm 251K 1 251K 1% /dev/shm

代码语言:javascript
复制
`df -h 
Filesystem Size Used Avail Use% Mounted on 
none 1.8G 1.8G 0 100% 
/ tmpfs 1002M 0 1002M 0% 
/dev tmpfs 1002M 0 1002M 0% 
/sys/fs/cgroup tmpfs 1.8G 1.8G 0 100% 
/etc/hosts shm 64M 0 64M 0% /dev/shm`

感谢帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-27 23:12:32

我已经在码头解决了这个问题。

默认情况下,默认情况下,停靠程序的内存设置为2048M。

我执行的第一步是停止我的对接机器:

代码语言:javascript
复制
$ docker-machine stop default

然后,我转到$HOME/.docker/machine/machines/default/config.json文件,并将“内存”设置更改为更高,即4096。

代码语言:javascript
复制
{
    "ConfigVersion": 3,
    "Driver": {
        "VBoxManager": {},
        "IPAddress": "192.168.99.102",
        "MachineName": "default",
        "SSHUser": "docker",
        "SSHPort": 59177,
        "SSHKeyPath": "/Users/lenok/.docker/machine/machines/default/id_rsa",
        "StorePath": "/Users/lenok/.docker/machine",
        "SwarmMaster": false,
        "SwarmHost": "tcp://0.0.0.0:3376",
        "SwarmDiscovery": "",
        "CPU": 1,
        "Memory": 4096, 
        "DiskSize": 204800,
        "Boot2DockerURL": "",
        "Boot2DockerImportVM": "",
        "HostDNSResolver": false,
        "HostOnlyCIDR": "192.168.99.1/24",
        "HostOnlyNicType": "82540EM",
        "HostOnlyPromiscMode": "deny",
        "NoShare": false,
        "DNSProxy": false
    },
    "DriverName": "virtualbox",
    "HostOptions": {
        "Driver": "",
        "Memory": 0,
        "Disk": 0,
        "EngineOptions": {
            "ArbitraryFlags": [],
            "Dns": null,
            "GraphDir": "",
            "Env": [],
            "Ipv6": false,
            "InsecureRegistry": [],
            "Labels": [],
            "LogLevel": "",
            "StorageDriver": "",
            "SelinuxEnabled": false,
            "TlsVerify": true,
            "RegistryMirror": [],
            "InstallURL": "https://get.docker.com"
        },
        "SwarmOptions": {
            "IsSwarm": false,
            "Address": "",
            "Discovery": "",
            "Master": false,
            "Host": "tcp://0.0.0.0:3376",
            "Image": "swarm:latest",
            "Strategy": "spread",
            "Heartbeat": 0,
            "Overcommit": 0,
            "ArbitraryFlags": [],
"config.json" [noeol] 75L, 2560C
            "Overcommit": 0,
            "ArbitraryFlags": [],
            "Env": null
        },
        "AuthOptions": {
            "CertDir": "/Users/lenok/.docker/machine/certs",
            "CaCertPath": "/Users/lenok/.docker/machine/certs/ca.pem",
            "CaPrivateKeyPath": "/Users/lenok/.docker/machine/certs/ca-key.pem",
            "CaCertRemotePath": "",
            "ServerCertPath": "/Users/lenok/.docker/machine/machines/default/server.pem",
            "ServerKeyPath": "/Users/lenok/.docker/machine/machines/default/server-key.pem",
            "ClientKeyPath": "/Users/lenok/.docker/machine/certs/key.pem",
            "ServerCertRemotePath": "",
            "ServerKeyRemotePath": "",
            "ClientCertPath": "/Users/lenok/.docker/machine/certs/cert.pem",
            "ServerCertSANs": [],
            "StorePath": "/Users/lenok/.docker/machine/machines/default"
        }
    },
    "Name": "default" 
}

最后,又启动了我的对接机:

代码语言:javascript
复制
$ docker-machine start default
票数 2
EN

Stack Overflow用户

发布于 2015-12-23 07:05:00

第18869期指的是对接机内存分配问题.

这可以在飞行中用

代码语言:javascript
复制
vboxmanage controlvm default 4096

由于#L 344-L 352HOME/.docker/machine/machines/default/config.json重新加载设置,最好将新值记录在该文件中(作为在这个答复中提到)。

第2285期中可以看到“设备上没有空间”,其中创建的vmdk映像是在运行时动态分配/增长的(默认),最初创建一个较小的磁盘上脚印,因此即使在创建~20GiB vm时,--virtualbox-disk-size 20000也需要磁盘上空闲空间的~200MiB

还有默认内存很低

确保你没有:

  • 任何可以删除的退出容器: docker -v $(docker -过滤器status=exited -q 2>/dev/null) 2>/dev/null
  • 任何悬空的图像 docker $(码头映像--过滤dangling=true -q 2>/dev/null) 2>/dev/null

(这是重建的结果,使中间图像未使用)

另见"如何删除旧的和未使用的Docker映像

然后确保您没有inode耗尽问题,就像在第10613期中一样。

检查df -hi (使用i查找inode)

通过码头终端连接到bash,目的是安装Oracle JDK8。

相反,尝试在Dockerfile中指定安装,并构建一个安装了JDK的映像。

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

https://stackoverflow.com/questions/34430084

复制
相关文章

相似问题

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