学习优先级:★★★★★

易用性:★★★☆☆

在 docker-compose.yml 文件中显式设置安全相关配置非常重要,这有助于避免安全漏洞并为容器的运行提供明确的指导。

以下是一个示例,展示了如何在 docker-compose.yml 文件中设置安全相关配置,以确保容器在安全的条件下运行。

示例代码

version: '3.8'

services:
  web:
    image: nginx
    ports:
      - "80:80"
    restart: always  # 容器自动重启
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
    networks:
      - frontend
    security_opt:
      - no-new-privileges:true  # 禁止在容器内获得新权限
    read_only: true  # 将容器文件系统设置为只读
    cap_drop:
      - ALL  # 删除所有不必要的权限

networks:
  frontend:
    driver: bridge

执行结果

运行此配置后,容器将在名为 "frontend" 的网络中启动。Web 服务器可在端口 80 上访问。安全措施如 "no-new-privileges" 和 "read_only" 已启用。

  • security_opt: no-new-privileges:true 防止容器内的进程获得新权限,即使容器被入侵。
  • read_only: true 确保容器的文件系统为只读,这是一项额外的安全措施。
  • cap_drop: ALL 删除容器的所有不必要的权限,以减少潜在的攻击面。

补充说明

Docker 提供了多种安全功能,可以显著限制容器环境。通过使用 read_only 或删除不必要的权限等选项,可以大幅减少攻击面。这些功能基于 Linux 内核的机制,例如隔离进程和资源的能力。