zoukankan      html  css  js  c++  java
  • 修改Docker本地镜像与容器的存储位置的方法

    使用find命令找到大于指定大小的文件:

    find / -type f -size +10G

    排除某个目录

    find / -path "/media/xww" -type f -size +10G

    修改Docker本地镜像与容器的存储位置的方法

    方法一、软链接

    默认情况下Docker的存放位置为:/var/lib/docker 
    可以通过下面命令查看具体位置:

    sudo docker info | grep "Docker Root Dir"

    解决这个问题,最直接的方法当然是挂载分区到这个目录,但是我的数据盘还有其他东西,这肯定不好管理,所以采用修改镜像和容器的存放路径的方式达到目的。

    这个方法里将通过软连接来实现。

    首先停掉Docker服务:

    systemctl restart docker
    或者
    service docker stop

    然后移动整个/var/lib/docker目录到目的路径:

    mv /var/lib/docker /root/data/docker
    ln -s /root/data/docker /var/lib/docker

    这时候启动Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,你可以在数据盘上看到容量变化。

    方法二、可扩展逻辑卷

    默认情况下docker的存放位置为: 
    /var/lib/docker 
    一般根下分区我们不会给太大。镜像和容器越存越多一般我们有两种解决方法 
    1、挂载大分区到/var/lib/docker: 
    一般选择建立逻辑分区lvm,方便后期扩展集体。

    a.建立新分区,并格式化
             PS: 以下操作建设你已经有现成的卷组,直接可以划逻辑卷。或者你可以自己创建逻辑卷,或者不适用逻辑卷直接使用分区
    lvcreate -L 300G lv_docker vg_home  
    mkfs.ext4 /dev/vg_home/lv__docker  
        b.挂载新分区到临时挂载点
    [plain] view plain copy
    mkdir /mnt/docker  
    mount /dev/vg_home/lv_docker /mnt/docker/  
    
        c.停掉docker后拷贝/var/lib/docker下数据到临时挂载点
    [plain] view plain copy
    service docker stop  
    cp -r /var/lib/docker/* /mtn/docker  
    
        d.修改/var/lib/docker 为//var/lib/docker.bak,并创建/var/lib/docker
    [plain] view plain copy
    mv /var/lib/docker{,.bak}  
    mkdir /var/lib/docker  
    
        e.挂载新分区到/var/lib/docker,并设置开机自动挂载。
    [plain] view plain copy
    mount /dev/vg_home/lv_docker /var/lib/docker  
    vim /etc/fstab  
    ---  
     /dev/vg_home/lv_docker /docker_data   ext4    defaults 0 0  
    ----   
    
         f.检测docker是否可用,数据是否完整
    [plain] view plain copy
    docker images  
    docker ps -a   
    
         g.确认无误后卸载临时挂载点,删除/var/lib/docker.bak
    [plain] view plain copy
    umount /mnt/docker  
    rm -rf /var/lib/docker.bak

    方法三、修改镜像和容器的存放路径

    指定镜像和容器存放路径的参数是–graph=/var/lib/docker,我们只需要修改配置文件指定启动参数即可。

    Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS 中的位置是:/etc/sysconfig/docker。
     

    如果是 CentOS 则添加下面这行:
    
    OPTIONS=--graph="/root/data/docker" --selinux-enabled -H fd://
    如果是 Ubuntu 则添加下面这行(因为 Ubuntu 默认没开启 selinux):
    
    OPTIONS=--graph="/root/data/docker" -H fd://
    # 或者
    DOCKER_OPTS="-g /root/data/docker"

    最后重新启动,Docker 的路径就改成 /root/data/docker 了。 
    如果没有生效,按如下操作

    vim /etc/default/docker  
    添加配置信息
    DOCKER_OPTS="--graph=/home/docker"  
    保存退出
    service docker restart  
    发现配置并没有生效
    解决方案:
     mkdir -p /etc/systemd/system/docker.service.d  
     cat /etc/systemd/system/docker.service.d/Using_Environment_File.conf  
    如果没有该文件则自行创建,添加以下内容
    [Service]  
    EnvironmentFile=-/etc/default/docker  
    ExecStart=  
    ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS  
    载入配置重启服务
    systemctl daemon-reload  
    service docker restart  
    查看配置是否生效
    
    关注公众号 海量干货等你
  • 相关阅读:
    PAT 1097. Deduplication on a Linked List (链表)
    PAT 1096. Consecutive Factors
    PAT 1095. Cars on Campus
    PAT 1094. The Largest Generation (层级遍历)
    PAT 1093. Count PAT's
    PAT 1092. To Buy or Not to Buy
    PAT 1091. Acute Stroke (bfs)
    CSS:word-wrap/overflow/transition
    node-webkit中的requirejs报错问题:path must be a string error in Require.js
    script加载之defer和async
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734299.html
Copyright © 2011-2022 走看看