Поскольку контейнеры Docker совместно используют ядро хост-системы и его настройки, контейнер Docker обычно вообще не может запускать sysctl
.(Вы особенно не можете отключить критичные для безопасности настройки, подобные этой.) Вы можете установить ограниченное количество sysctl для локального контейнера с помощью docker run --sysctl
, но тот, который вы упомянули, не тотиз них.
Кроме того, вы также не можете форсировать подобные изменения в Dockerfile.Образ Docker содержит только файловую систему и некоторые связанные метаданные, а не какие-либо запущенные процессы или настройки хост-системы.Даже если это RUN sysctl
сработает, если вы перезагрузите систему, а затем запустите контейнер из образа, этот параметр будет потерян.
Учитывая то, что вы показали в этом Dockerfile - настраиваемые параметры ядра Linux, нетконкретное запущенное приложение, открытый ssh-демон в качестве процесса контейнера - вы можете подумать, подходит ли виртуальная машина вашим потребностям лучше.Вы можете использовать такой инструмент, как Packer , чтобы воспроизводимо создать образ виртуальной машины почти так же, как Dockerfile создает образ Docker.Поскольку у VM есть изолированное ядро, вы можете запустить там команду sysctl
, и она будет работать, возможно, с помощью обычных методов полной установки Linux, таких как /etc/sysctl.conf
файл.