docker的存储目录迁移

docker的存储目录迁移

1. docker info 查看docker信息

docker info

默认存储目录是/var/lib/docker

在这里插入图片描述

目录结构如下:
在这里插入图片描述

docker所有自身的东西都会存在这些文件夹下面包括镜像文件和容器,所以会占用越来越多的磁盘空间。

2.查看磁盘占用情况:df -h

df -h

在这里插入图片描述

3. 查看docker自身的内存占用:docker system df

docker system df

在这里插入图片描述
4.docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。

5. docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了…所以使用之前一定要想清楚.。我没用过,因为会清理 没有开启的 Docker 镜像。

6. 迁移/var/lib/docker目录。

6.1 停止docker服务

systemctl stop docker

6.2 创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是:

  mkdir -p /home/docker/lib

6.3 迁移/var/lib/docker目录下面的文件到 /home/docker/lib: (rsync是linux文件夹同步的命令,参数要加一个-r,因为文件夹要递归copy,如果在同一台服务器上面,直接cp也是可以的)

 rsync -r -avz /var/lib/docker /home/docker/lib/

6.4 配置 /etc/systemd/system/docker.service.d/devicemapper.conf。查看 devicemapper.conf 是否存在。如果不存在,就新建。

 mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/devicemapper.conf

6.5 然后在 devicemapper.conf 写入:(同步的时候把父文件夹一并同步过来,实际上的目录应在 /home/docker/lib/docker )

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/docker/lib/docker

6.6 重新加载 docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

6.7 为了确认一切顺利,运行

docker info 		

命令检查Docker 的根目录.它将被更改为 /data/docker/lib/docker

在这里插入图片描述

7.迁移/var/lib/docker目录后,Docker无法启动 (error initializing graphdriver: driver not supported)

启动信息
    [root@nn0 ~]# systemctl start docker
    Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
启动详情
    8月 31 01:47:25 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
    -- Subject: Unit docker.service has begun start-up
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit docker.service has begun starting up.
    8月 31 01:47:25 localhost.localdomain dockerd[2390]: time="2018-08-31T01:47:25.197015872+08:00" level=info msg="libcontainerd: new containerd process, pid: 2393"
    8月 31 01:47:26 localhost.localdomain dockerd[2390]: time="2018-08-31T01:47:26.204103195+08:00" level=error msg="[graphdriver] prior storage driver overlay2 failed: driver not supported"
    8月 31 01:47:26 localhost.localdomain dockerd[2390]: Error starting daemon: error initializing graphdriver: driver not supported
    8月 31 01:47:26 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
    8月 31 01:47:26 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
错误原因:error initializing graphdriver: driver not supported
解决办法:在 /etc/docker 目录下创建daemon.json文件,并且加入以下配置
    touch daemon.json
    vi daemon.json
    {
      "storage-driver": "overlay2",
      "storage-opts": [
        "overlay2.override_kernel_check=true"
      ]
    }
再次启动:systemctl start docker

8. docker-runc not installed on system 问题

问题描述
docker运行镜像的时候,报错如下:
(如果报错端口映射的错误,那就先不映射端口直接启动镜像,试一下是不是这个错误,因为如果直接映射端口启动镜像的话,这个错误导致容器启动失败,但是报错是端口映射失败)

    [root@nn0 k8s]# docker run -it registry.helloworld.com/test/atsd:latest bash
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    /usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system.
问题解决:
    [root@nn0 k8s]# cd /usr/libexec/docker/
    [root@nn0 docker]# ln -s docker-runc-current docker-runc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值