Перейти к содержанию

Docker Compose

Ресурсы и документация

  1. Docker Compose Documentation.
  2. Compose file reference.
  3. awesome-compose.
  4. Linux capabilities.

Compose file

  1. Top-level свойство version лишь информативное. Указывать его не надо.
  2. Указывать top-level свойство name. Когда указано, оно доступно для интерполяции и разрешения в качестве переменной окружения COMPOSE_PROJECT_NAME.
    name: myapp
    
    services:
      foo:
        image: busybox
        command: echo "I'm running ${COMPOSE_PROJECT_NAME}"
    
  3. services/service/build: Compose Build Specification.
  4. Установка IO limits → blkio_config.
  5. Установка CPU limits → cpu_count, etc.
  6. cap_drop используется для удаления определённых возможностей (capabilities) у контейнера, чтобы повысить его безопасность. Linux capabilities позволяют процессам выполнять привилегированные операции без необходимости предоставления им всех привилегий суперпользователя. Это помогает минимизировать права, которые контейнеры имеют на хост-системе, снижая потенциальные риски. Вот некоторые из ключевых capabilities, которые часто рекомендуется отключать:

    1. AUDIT_WRITE: Запрет на запись в системные журналы аудита.
    2. CHOWN: Запрет на изменение владельца файлов.
    3. DAC_OVERRIDE: Запрет на игнорирование файловых разрешений.
    4. FOWNER: Запрет на изменение файловых атрибутов, если вы не являетесь владельцем.
    5. FSETID: Запрет на изменение битов set-user-ID и set-group-ID.
    6. KILL: Запрет на отправку сигналов процессам, которые не принадлежат пользователю.
    7. MKNOD: Запрет на создание специальных файлов с помощью mknod.
    8. NET_BIND_SERVICE: Запрет на привязку к низкоуровневым портам (меньше 1024).
    9. NET_RAW: Запрет на использование raw-сокетов.
    10. SETFCAP: Запрет на установку файловых capabilities.
    11. SETPCAP: Запрет на изменение capabilities.
    12. SYS_CHROOT: Запрет на выполнение chroot.
    13. SETUID и SETGID: Запрет на изменение UID и GID.

    Пример использования в Docker Compose файле:

    services:
      my_service:
        image: my_image
        cap_drop:
          - AUDIT_WRITE
          - CHOWN
          - DAC_OVERRIDE
          - FOWNER
          - FSETID
          - KILL
          - MKNOD
          - NET_BIND_SERVICE
          - NET_RAW
          - SETFCAP
          - SETPCAP
          - SYS_CHROOT
          - SETUID
          - SETGID
    

Что дальше?

  1. Нашли эту статью полезной? Поделитесь ею и помогите распространить знания!
  2. Нашли ошибку или есть идеи 💡 о том, что и как я могу улучшить? Напишите мне в Telegram.
  3. Хотите узнать обо мне больше? Читайте здесь.