Nano Hash - криптовалюты, майнинг, программирование

Лучшая практика — анонимный том против монтирования с привязкой

В контейнере,

можно создать анонимный том

с синтаксисом (VOLUME /build) в Dockerfile

or

ниже синтаксис с volumes, имеющим /build запись

cache:
  build: ../../
  dockerfile: docker/dev/Dockerfile
  volumes:
    - /tmp/cache:/cache
    - /build
  entrypoint: "true"

Насколько я понимаю, оба подхода (выше) делают том /build также доступным после того, как контейнер перейдет в состояние Exited.

Том является анонимным, потому что /build указывает на какое-то случайное новое место (в каталоге /var/lib/docker/volumes) на хосте докеров.

Я вижу, что анонимные тома более безопасны, чем именованные тома (например, /tmp/cache:/cache).

Потому что местоположение /tmp/cache уязвимо, потому что больше шансов, что это местоположение используется более чем одним док-контейнером.


1)

Почему анонимное использование тома не рекомендуется?

2)

Is

VOLUME /build in Dockerfile

не то же самое, что

volumes: 
 - /build 

в файле docker-compose.yml? Есть ли сценарий, где нам нужно упомянуть оба?


  • как анонимные, так и привязанные монтирования могут быть повторно использованы другими контейнерами. 19.10.2019

Ответы:


1

На самом деле, использование анонимных томов (/build) рекомендуется по сравнению с использованием привязать монтирования (/tmp/cache:/cache):

Тома имеют несколько преимуществ перед привязкой:

  • Тома легче создавать резервные копии или мигрировать, чем привязывать монтирование.
  • Вы можете управлять томами с помощью команд Docker CLI или Docker API.
  • Тома работают как с контейнерами Linux, так и с Windows.
  • Тома могут быть более безопасно разделены между несколькими контейнерами.
  • Драйверы томов позволяют хранить тома на удаленных хостах или у облачных провайдеров, шифровать содержимое томов или добавлять другие функции.
  • Содержимое новых томов может быть предварительно заполнено контейнером.

Что касается вашего второго вопроса, то да. Вы можете создавать анонимные тома в файле docker-compose или в файле Dockerfile. Не нужно указывать в обоих местах.

19.10.2019
  • Вы называете /tmp/cache:/cache привязанным креплением? Запрос отредактирован.. 19.10.2019
  • Любая идея по второму вопросу в запросе? 19.10.2019
  • вы можете создавать тома с помощью docker-compose, не объявляя их в Dockerfile, поэтому вы можете определить анонимный том только один раз 19.10.2019

  • 2

    У вас отсутствует ключевой третий параметр, именованные тома. Если вы заявите:

    version: '3'
    volumes:
      build: {}
    services:
      cache:
        image: ...
        volumes:
          - build:/build
    

    Docker Compose создаст для вас именованный том; вы можете увидеть это, например, с помощью docker volume ls. Вы можете явно управлять временем жизни именованных томов и устанавливать для них несколько дополнительных опций, которые иногда бывают полезны. В документации Docker есть страница с подробным описанием именованных томов.

    Я бы предположил, что именованные тома строго превосходят анонимные тома, поскольку они могут явно видеть, когда они создаются и уничтожаются, а также могут устанавливать для них дополнительные параметры. Вы также можете смонтировать том с одним и тем же именем в несколько контейнеров. (В этой последовательности вопросов, которые вы задавали, я обычно рекомендую вам использовать именованный том, монтировать его в несколько контейнеров и заменять volumes_from:.)

    Именованные тома по сравнению с привязанными монтированиями имеют преимущества и недостатки в обоих направлениях. Связные монтирования легко создавать резервные копии и управлять ими, а для контента, такого как файлы журналов, которые вам необходимо изучить напрямую, это намного проще; в системах MacOS они очень медленные. Именованные тома могут работать независимо от любого макета каталога хост-системы и хорошо транслируются в кластерные среды, такие как Kubernetes, но их гораздо сложнее исследовать или создавать их резервные копии.

    Вам почти никогда не нужна директива VOLUME. Вы можете смонтировать том или каталог хоста в контейнер независимо от того, объявлен ли он томом. Его технический эффект заключается в монтировании нового анонимного тома в этом месте, если там больше ничего не монтируется; его практический эффект заключается в том, что он предотвращает изменение этого каталога будущими шагами Dockerfile. Если у вас есть строка VOLUME, вы почти всегда можете удалить ее, ничего не затрагивая.

    19.10.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..