docker基础

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

问题定位:/etc/docker/daemon.json文件配置有问题
修改:
vim /etc/docker/daemon.json
重启:
systemctl daemon-reload
systemctl restart docker.service

定位docker

/var/lib/docker/*
du -sh /var/lib/docker/* | sort -rm | head
查看该目录下前N个大文件
du -am ./* | sort -nrk 1 | head -n 20

du -h err/
ls -l
ll -h 查看当前文件夹大小

/etc/docker/daemon.json配置文件如下,这里将每个容器可以使用的磁盘空间设置为1G

{
“data-root”: “/data/docker”,
“storage-driver”: “overlay2”,
“storage-opts”: [
“overlay2.override_kernel_check=true”,
“overlay2.size=1G”
]
}

docker容器日志占用磁盘空间过大问题

查询占用磁盘较大的文件-升序

du -d1 -h /var/lib/docker/containers | sort -h
控制容器日志大小
法一:运行时控制
docker

max-size:容器日志最大100M

max-file:最大日志数3个( ex: *-json.log, *-json.log.1, *-json.log.2 )

docker run -it --log-opt max-size=100m --log-opt max-file=3 redis
日志目录/var/lib/docker/containers img.png

观察日志的增长,你会发现当xxx.log日志文件到达设置的最大日志量后,会变成xxx.log.1,xxx.log.2文件…

docker-compose
version: '3'

services:
  test:
    image: xxx
    # 日志
    logging:
      driver: "json-file"   # 默认的文件日志驱动
      options:
        max-size: "100m"    # 单个日志文件大小为100m
        max-file: "3"       # 最多3个日志文件

法二:全局配置
温馨小提示:新容器生效

创建或修改daemon.json文件

cat /etc/docker/daemon.json

新增如下配置

{
    "log-driver": "json-file",
    "log-opts": {
        "max-size":"100m", 
        "max-file":"3"
    }
}

重启docker

systemctl daemon-reload
systemctl restart docker

清理docker容器日志

#!/bin/bash
# sh docker_log.sh
# Bash会把所有未定义的变量视为错误
set -eu
logs=$(find /var/lib/docker/containers/ -name '*-json.log*')
for log in $logs
do
    echo "clean log: $log"
    cat /dev/null > $log
done

查询docker容器日志大小

#!/bin/bash

# docker_log_size.sh
set -eu
logs=$(find /var/lib/docker/containers/ -name '*-json.log*')
for log in $logs
do
    ls -lh $log
done

你可能感兴趣的:(docker,docker,容器,运维)