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管理。

相关推荐
骅青3 分钟前
kubernetes调度2
容器·kubernetes
qq 1778036221 小时前
智能新时代,游戏盾守护顺畅体验
运维·服务器·网络·游戏·云计算·ddos·ip
Alone80462 小时前
K8s中HPA自动扩缩容及hml
云原生·容器·kubernetes
神秘的土鸡2 小时前
Linux中使用Docker容器构建Tomcat容器完整教程
linux·运维·服务器·docker·容器·tomcat
玖石书2 小时前
docker 数据管理
docker·容器
TravisBytes3 小时前
linux 系统是如何收发数据包
linux·运维·服务器
HoweWWW3 小时前
k8s-API 访问控制
云原生·容器·kubernetes
2420304 小时前
Docker笔记-容器数据卷
docker
德迅--文琪4 小时前
SCDN是服务器吗?SCDN防御服务器有什么特点?
运维·服务器
ice___Cpu4 小时前
Linux 基本使用和 web 程序部署 ( 8000 字 Linux 入门 )
linux·运维·前端