apt-get update бесконтактный докер
Установка Rootful Docker на мой Raspberry Pi обновляет источники, и можно настроить
unattended-upgrades
для автоматического обновления Docker, просмотрев
sudo apt-cache policy
.
Однако Docker без рута этого не делает. Так есть ли способ обновить Docker без рута?
Другими словами:
С Rootful Docker,
sudo apt-get update && sudo apt-get -y upgrade
на хосте можно обновить установку Docker. Я хотел бы иметь возможность делать что-то подобное с Docker без рута. Является ли это возможным ?
Чтобы уточнить: я пытаюсь обновить не контейнеры, а сам Docker.
Заранее благодарим за любую помощь, которую вы можете оказать :)
2 ответа
Насколько я знаю, для Debian нет специального пакета без root, поэтому вы не можете сделать это с помощью диспетчера пакетов. Некоторые бинарные файлы без root немного отличаются, в них отсутствуют биты SETUID и некоторые другие возможности файлов.
Однако вы можете попробовать запустить сценарий установки без root еще раз, если это обновит ваши двоичные файлы.
curl -fsSL https://get.docker.com/rootless | sh
Они также доступны здесь как дополнительные компоненты без root-прав , но для этого требуется ручное извлечение:
Я также не нашел официального способа обновить установку без root-доступа.
Итак, вот как я обновляю docker-rootless. это немного экспериментально, но для меня это работает. возможно, потребуется еще несколько тестов, чтобы сделать его более надежным и готовым к использованию в скрипте или crontab:
# UPDATE DOCKER-ROOTLESS (as non-root):
# stop your docker daemon ... (takes long time for me and doesn't finish problerly)
systemctl --user stop docker.service
# maybe you have to kill it because it hangs up and doesn't finish proberly
CTRL+C
# check that docker.service isn't running (important !!!)
systemctl --user status docker.service
# Active: inactive (dead)
# OR:
# Active: failed (Result: exit-code)
# download docker-rootless installation script
wget https://get.docker.com/rootless -O rootless.sh
# set environment variables (used by rootless.sh script)
SKIP_IPTABLES=1
FORCE_ROOTLESS_INSTALL=1
# remove "Already installed verification" check from script
sed -i s#\-x\ \"\$BIN/\$DAEMON\"#\!\ \-x\ \"\$BIN/\$DAEMON\"#g rootless.sh
# make rootles.sh executable
chmod +x rootless.sh
# run rootless.sh
./rootless.sh
# kill installation script, because it starts docker.service and keeps running
CTRL+C
# DONE (docker should now be updated)
docker --version
# Docker version 20.10.5, build 363e9a8
# UPDATE DOCKER-COMPOSE (with sudo or root):
# get and save latest docker-compose version
DOCKER_COMPOSE_VERSION=$(curl -L "https://docs.docker.com/compose/install/" | grep -o -P '(?<=https://github.com/docker/compose/releases/download/).*(?=/docker-compose)' | head -n1)
# download docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# make it executable
sudo chmod +x /usr/local/bin/docker-compose
# link it to /usr/bin
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# DONE (docker-compose should now be updated)
docker-compose --version
# docker-compose version 1.29.0, build 07737305
# maybe you should reboot your host once!
sudo reboot