docker基础

安装docker

参考安装:
https://docs.docker.com/engine/install/centos/#installation-methods
手动安装参考: https://www.cnblogs.com/hengdin/articles/16547532.html

开机启动

sudo systemctl start docker
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

docker配置远程连接端口

配置远程连接端口

vi /lib/systemd/system/docker.service

在这里插入图片描述

systemctl daemon-reload && systemctl restart docker
firewall-cmd --zone=public --add-port=2375/tcp --permanent

http://node2:2375/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 )

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磁盘空间

1.1 对数据盘重新分区

参考:linux文件系统磁盘分配
docker info
docker system df
docker system prune

1.2关闭docker

systemctl stop docker.service
systemctl stop docker.socket

1.3 具体操作

rsync -avzh /var/lib/docker /mnt/docker/data
cd /var/lib
rm -rf docker
ln -s /mnt/docker/data/docker docker

ll /var/lib

vim /etc/docker/daemon.json
{
   "log-driver":"json-file"
}

1.4 重启docker服务

systemctl daemon-reload
systemctl start docker.service
systemctl restart docker.service
systemctl enable docker.service
systemctl is-enabled docker.service
``
 
# 清理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容器日志大小

#!/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

解决 “/bin/bash^M: bad interpreter: No such file or directory”

cat -A filename 从显示结果可以判断:

  • dos 格式的文件行尾为 ^M$,
  • unix 格式的文件行尾为 $;
    vim filename 打开文件
    执行 : set ff
  • 文件为 dos 格式在显示为 fileformat=dos
  • unxi 则显示为 fileformat=unix

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值