1 问题:
docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决办法:
$ systemctl daemon-reload
$ sudo service docker restart
$ sudo service docker status (should see active (running))
$ sudo docker run hello-world
2 问题:
docker pull **** (docker pull相关images)
docker load -i *****(docker load相关images)
错误1 Error processing tar file(exit status 1): write /5493598c38e89479ea83bf5b94f6524c655f82835fd534031cc897af54891f3a/layer.tar: no space left on device
错误2 failed to register layer: ApplyLayer exit status 1 stdout: stderr: write *** no space left on device
解决办法:
错误1.检查 /var/lib/docker 所在目录的空间是否足够,假使因为这个原因,只要将/var/lib/docker 挂载到较大的磁盘下就行,重启服务即可。
首先需要停止docker服务
systemctl stop docker
通过命令df -h 先去看下磁盘大概的情况,找一个大的空间
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 2.8T 956G 1.8T 35% /newdata (这个盘很大,决定把docker目录重新映射到这里)
执行文件夹创建命令
mkdir -p /newdata/docker 注:参数-p 确保目录名称存在,如果目录不存在的就新创建一个
开始迁移 rsync -avzP /var/lib/docker /newdata/docker 先确认是否安装了rsync. 参数解释: -a,归档模式,表示递归传输并保持文件属性。 -v,显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。 -P,显示文件传输的进度信息。(实际上"-P"="–partial --progress",其中的"–progress"才是显示进度信息的)。 -z, 传输时进行压缩提高效率。
rsync -avzP /var/lib/docker /newdata/docker/
指定新的docker目录
sudo vim /lib/systemd/system/docker.service 在ExecStart加入 --graph=/newdata/docker/
重启docker服务即可
错误2.可能是新版的docker base Device Size默认只有10G,而你pull的image在解压的过程中所需的空间超过了这个size
修改方法:
编辑/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd 后,加入如下参数
--storage-opt dm.basesize=50G --storage-opt dm.fs=xfs(我的是xfs,你的或许是ext4)
其他错误类型介绍
dm.basesize 默认为10G,限制容器和镜像的大小
dm.loopdatasize 存储池大小,默认为100G
dm.loopmetadatasize 元数据大小,默认为2G
dm.datadev 存储池设备,默认生成一个/var/lib/docker/devicemapper/devicemapper/data文件
dm.metadatadev 元数据设备,默认生成一个/var/lib/docker/devicemapper/devicemapper/metadata文件
重启docker服务即可!
3 问题3:dockers空间不够,Docker默认空间大小分为两个,一个是池空间大小,另一个是容器空间大小。
池空间大小默认为:100G
容器空间大小默认为是:10G,上面的是修改容器空间大小
所以修改空间大小也分为两个:
首先,修改空间大小,必需使Docker运行在daemon环境下,即先停止正在运行的docker服务 :
service docker stop
然后使用命令使用daemon环境下运行docker:
docker -d
修改池空间大小方法:
sudo service docker stop
sudo dd if=/dev/zero of=/newdata/docker/devicemapper/devicemapper/data bs=1G count=0 seek=1000
sudo dd if=/dev/zero of=/newdata/docker/devicemapper/devicemapper/metadata bs=1G count=0 seek=10
service docker restart
上面的1000为1TB大小,即为数据池空间大小为1TB,而10则为Metadata的空间大小,10GB