Работает - не трогай. Я считаю, что эта фраза полностью описывает жизнь. Но, к сожалению, есть нюанс...
Translation to English is here. Также основной канал в telegram.
Я тут топлю за использование Docker, как универсальность решения, контроль процессов и возможность легко обновиться или откатиться. К сожалению, в данном случае использование Docker и стало источником проблемы. Для использования новых функций я решил обновить Home Assistant. Делается это очень просто.
Заходим в наш контейнер и нажимаем Duplicate/Edit. Когда окно перейдет в режим редактирования, то в поле Name можно вписать новое имя, тогда создастся новая копия контейнера, старая при этом тоже будет рабочей для резерва. Либо можно не трогать это поле, тогда контейнер перезапишется, а старый образ все равно останется. Я использую второй вариант.
Далее в поле Image прописывается или конкретный образ или ссылка на последний. Например, вписав sha256:7e7cf091414fe50387a45d6e9475bb73ec7278647e9ccee75162193ff36b2f1b мы получим образ от 2021-06-15. Но мы то обновится собираемся, поэтому пишем homeassistant/home-assistant:latest и после этого останется лишь нажать Deploy the container.
Второй способ намного проще и подходит для тех, у кого приписано homeassistant/home-assistant:latest и контейнер предполагается перезаписать.
Нажимаем Recreate и появившемся окне ткнем на Pull latest image. Контейнер пересоздается, а образ обновляется до последнего доступного.
И вот мы подходим к проблеме. После обновления в логах появляется s6-overlay-suexec: fatal: can only run as pid 1
Ничего не работает, а что делать - непонятно. Погуглив проблему, находим новость. Отлично, всегда приятно что нам делают что-то новое и хорошее, но неприятно, что теперь ничего не работает. Есть 2 быстрых способа решить проблему:
1. Откатиться. Такой способ подходит нам, если мы решили, что обновление нам не нужно. Тогда в поле Image прописывается конкретный образ, как было написано выше. Например у меня последний скаченный был от 2022-03-04 с именем: sha256:d0b0257ee54ac119f3108dcc7ba61770966ae86e24575037a907f9983c8ddee5 и с ним все работало. Если что можно использовать и тот, что был у Вас. Можно поискать что-то посвежее, но до проблемы.
2. Решить проблему частично. Первым делом обновляемся. Получаем нашу ошибку
В той же статейке сказано следующее:
Add init: false to your addon's config.yaml if you don't have this already. In V3, S6 enforces that their init is used correctly.
В докере это делается в конфиге. Заходим в наш контейнер и нажимаем Duplicate/Edit. Когда окно перейдет в режим редактирования, то во вкладке Runtime & Resources нужно отключить галку Init. Вот и все, после этого все заработает.
Не обращаем внимание на другие проблемы в логах - все под контролем ☺. Таким образом мы решили нашу проблему.
Чтобы стало понятнее, что мы делаем, то вот описание при Init(переведено гуглом):
Вы можете использовать флаг --init , чтобы указать, что процесс init должен использоваться в качестве PID 1 в контейнере. Задание процесса инициализации гарантирует, что обычные обязанности системы инициализации, такие как процесс зомби, выполняются внутри созданного контейнера.
Вторая цитата:
Процесс инициализации по умолчанию - это первый исполняемый файл docker-init , найденный в системном пути процесса демона Docker. Этот двоичный файл docker-init , включенный в установку по умолчанию, поддерживается Tini.
Я, к сожалению, не могу объяснить подробнее все детали процесса и работы, мне пока хватает моих знаний для слабого понимания, но не для подробного разъяснения. Но если кто-то может, то жду вас в комментариях. А пока все, такая история...
Подпишитесь, чтобы не пропускать следующий контент.
Нажмите лайк, если интересно, так я пойму какие публикации больше нужны моей публике.
Также публикации можно найти на других площадках: Instagram, telegram (RU, EN, DE), Medium, LiveJournal, YouTube.
Мой блог является некоммерческим, поэтому позитивный комментарий, лайк или репост поможет публикациям выходить чаще ☺.