2024年6月

Docker 时,遇到 "No space left on device" 错误

在使用 Docker 时,遇到 "No space left on device" 错误,通常意味着宿主机的磁盘空间已满。以下是一些常见的原因和解决办法:

1. 清理 Docker 容器、镜像和卷

删除未使用的容器

列出所有停止的容器:

docker ps -a -f status=exited

删除所有停止的容器:

docker rm $(docker ps -a -f status=exited -q)

删除未使用的镜像

列出所有悬空(dangling)镜像:

docker images -f dangling=true

删除所有悬空镜像:

docker rmi $(docker images -f dangling=true -q)

删除未使用的卷

列出所有未使用的卷:

docker volume ls -f dangling=true

删除所有未使用的卷:

docker volume rm $(docker volume ls -f dangling=true -q)

自动清理未使用的数据

你可以使用以下命令自动清理未使用的容器、网络、镜像和卷:

docker system prune

如果你还想删除所有未使用的卷,可以使用:

docker system prune --volumes

2. 检查 Docker 的存储驱动和数据目录

检查 Docker 数据目录使用情况

Docker 通常将其数据存储在 /var/lib/docker 目录下。你可以检查该目录的磁盘使用情况:

du -sh /var/lib/docker

检查 Docker 存储驱动

Docker 使用不同的存储驱动来管理镜像和容器。可以通过以下命令查看当前使用的存储驱动:

docker info | grep 'Storage Driver'

根据存储驱动的不同,可能需要不同的清理策略。

3. 清理系统日志和临时文件

系统日志和临时文件可能会占用大量磁盘空间。

清理系统日志

在 Linux 上,可以使用以下命令清理日志:

sudo journalctl --vacuum-time=2d

这将删除超过 2 天的日志。你可以根据需要调整时间。

清理临时文件

使用以下命令清理临时文件:

sudo rm -rf /tmp/*

4. 检查和调整 Docker 的磁盘配额

如果你在使用 OverlayFS 或其他存储驱动,可以通过配置 Docker 来限制其磁盘使用。编辑 Docker 的配置文件(通常是 /etc/docker/daemon.json),添加类似以下的配置:

{
  "storage-opts": [
    "overlay2.size=20G"
  ]
}

然后重启 Docker 服务:

sudo systemctl restart docker

5. 检查并扩展磁盘空间

如果以上方法都无法解决问题,可能需要扩展宿主机的磁盘空间。以下是一些可能的操作:

  • 添加新的磁盘或扩展现有磁盘。
  • 将 Docker 数据目录移动到更大的磁盘或分区。
    1. 停止 Docker 服务:
      sudo systemctl stop docker
      
    2. 将数据目录移动到新的位置:
      sudo mv /var/lib/docker /new/path/docker
      
    3. 创建一个符号链接:
      sudo ln -s /new/path/docker /var/lib/docker
      
    4. 重启 Docker 服务:
      sudo systemctl start docker
      

通过这些步骤,你应该能够解决 "No space left on device" 错误。如果问题依然存在,请检查系统日志和 Docker 日志以获取更多信息。

emai邮件服务相关的 25、110、465、995 端口的作用 以及 SPF、DKIM 和 DMARC 电子邮件认证技术

在电子邮件系统中,不同的端口用于不同的协议和功能,具体如下:

  1. 端口 25

    • 协议:SMTP(Simple Mail Transfer Protocol)
    • 作用:用于发送电子邮件。SMTP 是用于电子邮件传输的主要协议,通过端口 25,邮件客户端可以将电子邮件发送到邮件服务器,邮件服务器之间也可以通过该端口转发电子邮件。
  2. 端口 110

    • 协议:POP3(Post Office Protocol version 3)
    • 作用:用于从邮件服务器上下载电子邮件。POP3 协议允许邮件客户端从服务器上下载邮件,并在本地阅读和管理。通过端口 110,邮件客户端可以连接到邮件服务器并检索存储在服务器上的邮件。
  3. 端口 465

    • 协议:SMTPS(SMTP Secure)或 SMTP over SSL
    • 作用:用于安全发送电子邮件。SMTPS 是 SMTP 协议的加密版本,通过 SSL/TLS 对邮件传输进行加密,从而提高安全性。端口 465 是为确保邮件传输的机密性和完整性而设定的标准端口。
  4. 端口 995

    • 协议:POP3S(POP3 Secure)或 POP3 over SSL
    • 作用:用于安全接收电子邮件。POP3S 是 POP3 协议的加密版本,通过 SSL/TLS 对邮件传输进行加密,确保邮件在下载过程中不会被截取或篡改。端口 995 是用于安全连接到邮件服务器以检索邮件的标准端口。

总结:

  • 端口 25:用于 SMTP 协议,发送电子邮件。
  • 端口 110:用于 POP3 协议,从服务器下载电子邮件。
  • 端口 465:用于加密的 SMTP 协议(SMTPS),安全发送电子邮件。
  • 端口 995:用于加密的 POP3 协议(POP3S),安全接收电子邮件。

这些端口及其对应的协议是电子邮件系统中的基础组成部分,确保电子邮件的发送、接收和安全性。

SPF、DKIM 和 DMARC 是电子邮件认证技术,用于提高电子邮件的安全性,防止电子邮件欺诈和垃圾邮件。这些技术相互配合,以验证邮件发送者的身份和邮件内容的完整性。

SPF(Sender Policy Framework)

作用

  • SPF 用于验证邮件的发送服务器是否被授权代表发送域发送电子邮件。它通过 DNS 记录定义哪些 IP 地址或主机名可以发送来自该域的电子邮件。

工作原理

  1. DNS 记录:域管理员在域的 DNS 记录中添加一个 SPF 记录,列出授权发送邮件的 IP 地址或主机名。
  2. 验证:当邮件服务器接收到来自该域的邮件时,它会检查邮件的发件人 IP 地址是否在 SPF 记录中列出的授权范围内。如果在,则验证通过;否则,验证失败。

示例

一个简单的 SPF 记录:

v=spf1 ip4:192.0.2.0/24 include:example.com -all
  • v=spf1:SPF 版本。
  • ip4:192.0.2.0/24:授权的 IP 地址范围。
  • include:example.com:包含其他域的 SPF 记录。
  • -all:严格模式,不在列表中的 IP 地址将导致验证失败。

DKIM(DomainKeys Identified Mail)

作用

  • DKIM 用于验证电子邮件的内容和发件人的身份。它通过数字签名的方式确保邮件在传输过程中没有被篡改,并验证邮件是否确实来自声明的域。

工作原理

  1. 签名:邮件服务器在发送邮件时使用域的私钥对邮件的某些部分进行签名,并在邮件头中添加一个 DKIM-Signature 字段。
  2. 验证:接收服务器使用发送域的公钥(发布在 DNS 记录中)验证邮件签名,确保邮件内容的完整性和发件人的身份。

示例

一个简单的 DKIM 记录:

default._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=公钥内容"
  • v=DKIM1:DKIM 版本。
  • k=rsa:加密算法。
  • p=公钥内容:用于验证签名的公钥。

DMARC(Domain-based Message Authentication, Reporting & Conformance)

作用

  • DMARC 用于告知接收邮件的服务器如何处理未通过 SPF 或 DKIM 验证的邮件,并提供反馈机制给发送域管理员。

工作原理

  1. 策略发布:域管理员在 DNS 中发布 DMARC 记录,指定如何处理未通过验证的邮件(如拒绝、隔离或无操作),以及接收报告的邮箱。
  2. 验证和执行:接收邮件服务器根据 DMARC 策略对邮件进行处理,并将验证结果和处理报告发送给发送域管理员。

示例

一个简单的 DMARC 记录:

_dmarc.example.com IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"
  • v=DMARC1:DMARC 版本。
  • p=reject:策略(拒绝未通过验证的邮件)。
  • rua=mailto:dmarc-reports@example.com:发送报告的邮箱地址。

综述

  • SPF:验证发送邮件的服务器是否被授权。
  • DKIM:验证邮件内容的完整性和发件人的身份。
  • DMARC:结合 SPF 和 DKIM,制定邮件处理策略,并提供验证结果报告。

通过综合使用 SPF、DKIM 和 DMARC,可以显著提高电子邮件的安全性,减少欺诈和垃圾邮件。

修改运行中的Docker容器修改端口

在docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改。当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则。这时可以通过暴力手段,直接强行修改docker容器的配置文件,从而修改容器端口。

对应Linux操作系统

1、先查询出容器的Id

docker inspect [容器id] | grep Id

2、修改容器配置文件

vim /var/lib/docker/containers/[容器id]/hostconfig.json

3、重启docker

sudo systemctl restart docker

对应Mac操作系统

1、先查询出容器的Id

docker inspect [容器id] | grep Id

2、进入docker使用的Linux虚拟机

 docker run -it --privileged --pid=host [镜像名] nsenter -t 1 -m -u -n -i sh

3、修改容器配置文件

vim /var/lib/docker/containers/[容器id]/hostconfig.json

4、重启docker

sudo systemctl restart docker