Как запустить демон docker в файловой системе хоста только для чтения - PullRequest
0 голосов
/ 06 ноября 2019

У меня Raspberry Pi 3 под управлением Ubuntu 16.04.6 LTS в корневом разделе только для чтения. Теперь я пытаюсь запустить Docker-демон. Но после перезагрузки он говорит:

ubuntu@z11:~$ docker info
Client:
 Debug Mode: false

Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info

При попытке перезапустить Docker-демон я получаю:

ubuntu@z11:~$ sudo systemctl daemon-reload
ubuntu@z11:~$ sudo systemctl restart docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

Это вывод systemctl status docker.service:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit-hit) since Thu 2016-02-11 17:28:26 CET; 14s ago
     Docs: https://docs.docker.com
  Process: 1620 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
 Main PID: 1620 (code=exited, status=1/FAILURE)

Feb 11 17:28:24 z11 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Feb 11 17:28:24 z11 systemd[1]: Failed to start Docker Application Container Engine.
Feb 11 17:28:24 z11 systemd[1]: docker.service: Unit entered failed state.
Feb 11 17:28:24 z11 systemd[1]: docker.service: Failed with result 'exit-code'.
Feb 11 17:28:26 z11 systemd[1]: docker.service: Service hold-off time over, scheduling restart.
Feb 11 17:28:26 z11 systemd[1]: Stopped Docker Application Container Engine.
Feb 11 17:28:26 z11 systemd[1]: docker.service: Start request repeated too quickly.
Feb 11 17:28:26 z11 systemd[1]: Failed to start Docker Application Container Engine.
Feb 11 17:28:26 z11 systemd[1]: docker.service: Unit entered failed state.
Feb 11 17:28:26 z11 systemd[1]: docker.service: Failed with result 'start-limit-hit'.

Это мой / etc / fstab с корневым разделом только для чтения и read-write / var / lib / docker:

proc            /proc                   proc    defaults                                     0 0
/dev/mmcblk0p1  /boot                   vfat    ro                                           0 0
/dev/mmcblk0p2  /                       ext4    noatime,ro                                   0 0
/dev/mmcblk0p3  none                    swap    sw                                           0 0
/dev/mmcblk0p4  /var/lib/docker         ext4    noatime,rw                                   0 0
tmpfs           /var/log                tmpfs   defaults,noatime,nosuid,mode=0755,size=50m   0 0
tmpfs           /var/log/apache2        tmpfs   defaults,noatime,size=10m                    0 0
tmpfs           /var/lib/sudo           tmpfs   defaults,noatime,nosuid,mode=0755,size=2m    0 0
tmpfs           /tmp                    tmpfs   defaults,noatime,mode=1777,size=30m          0 0

При изменении корневого раздела с ro на rw,docker работает нормально после перезагрузки системы.

Как мне заставить его работать с сохранением доступа к корневому разделу только для чтения? Есть ли другие файлы или каталоги, в которые нужно записать докеру?

1 Ответ

0 голосов
/ 10 ноября 2019

Очевидно, что / run (он же / var / run) будет использоваться для открытия файла сокета. Docker - системный демон, а команда "docker" просто отправляет входные данные в файл сокета. По сути, вы смонтировали некоторые подкаталоги / var как rw, но не / var / run.

Если вы хотите иметь / var / lib / docker в постоянном хранилище, то может быть лучше переконфигурировать docker.service - возможно, проверьте ваш / etc / sysconfig / docker и сделайте его

DOCKER_OPTS="-g /data/docker"
...