docker基础

安装docker

参考安装:

https://docs.docker.com/engine/install/centos/#installation-methods

开机启动

systemctl enable docker.service

systemctl is-enabled docker.service

安装docker compose

https://github.com/docker/compose/releases/tag/v2.17.2

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

chmod +x docker-compose

docker-compose version

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 )

linux 复制代码
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文件...

yml 复制代码
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

新增如下配置

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

重启docker

linux 复制代码
systemctl daemon-reload
systemctl restart docker

清理docker容器日志

shell 复制代码
#!/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容器日志大小

shell 复制代码
#!/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

使用OverlayFS存储驱动程序

OverlayFS是一个现代的联合文件系统。本主题将Linux内核驱动程序称为OverlayFS,将Docker存储驱动程序称之为overlay2。

更改存储驱动程序会使本地系统上的现有容器和映像无法访问。在更改存储驱动程序之前,使用docker save保存您构建的任何映像,或将它们推送到docker Hub或专用注册表,这样您以后就不需要重新创建它们了

sudo systemctl stop docker

cp -au /var/lib/docker /var/lib/docker.bk

vim /etc/docker/daemon.json

如果daemon.json文件包含格式错误的json,则Docker不会启动。

{

"storage-driver": "overlay2"

}

sudo systemctl start docker

验证守护进程是否正在使用overlay2存储驱动程序。使用docker-info命令并查找存储驱动程序和备份文件系统。

Docker现在使用overlay2存储驱动程序,并使用所需的lowerdir、upperdir、merged和workdir构造自动创建了overlay装载。

工作原理:

OverlayFS在单个Linux主机上对两个目录进行分层,并将它们显示为单个目录。这些目录称为层,统一过程称为联合装载。OverlayFS将下层目录称为lowerdir,将上层目录称为upperdir。统一视图通过其自己的名为merged的目录公开。

overlay2驱动程序本机支持多达128个较低的OverlayFS层。此功能为与层相关的Docker命令(如Docker build和Docker commit)提供了更好的性能,并且在备份文件系统上消耗更少的inode。

使用dockerpull-ubuntu下载五层映像后,您可以在/var/lib/doker/overlay2下看到六个目录。

ls -l /var/lib/docker/overlay2

警告:请勿直接操作/var/lib/docker/中的任何文件或目录。这些文件和目录由Docker管理。

相关推荐
DuelCode22 分钟前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
你想考研啊2 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks2 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
饥饿的半导体3 小时前
Linux快速入门
linux·运维
杨浦老苏5 小时前
开源服务运行监控工具Lunalytics
docker·群晖·网站监控
还是奇怪6 小时前
Linux - 安全排查 2
linux·运维·安全
牛奶咖啡136 小时前
Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
运维·服务器·软件安装·linux云计算·scp文件远程传输·vi文件编辑·设置yum的阿里云源
难受啊马飞2.06 小时前
如何判断 AI 将优先自动化哪些任务?
运维·人工智能·ai·语言模型·程序员·大模型·大模型学习
会又不会6 小时前
Jenkins-Email Extension 插件插件
运维·jenkins
电脑能手7 小时前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑