Как я включаю докеру как услуга, не переустанавливая докера?

Я использую Ubuntu 16.04. Я хотел бы настроить Докера для выполнения как услуга. Мне уже установили докера...

davea@blockshare_srvr:~$ which docker
/snap/bin/docker
davea@blockshare_srvr:~$ /snap/bin/docker -v
Docker version 18.06.1-ce, build e68fc7a

но когда я пытаюсь проверить его состояние, я добираюсь ниже ошибки

davea@blockshare_srvr:~$ sudo systemctl status docker
Unit docker.service could not be found.

Как я могу включить сервис, не переустанавливая докера?

4
задан 7 August 2019 в 21:49

2 ответа

Обновление 12 августа 2019

Для Вашего systemd цели, можно хотеть просто установить регулярный docker и не используют его через snap. От:

Мы делаем это по нескольким причинам:

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

Из-за вышеупомянутого мы не планируем перенести всю systemd спецификацию единицы (как Вы сказали, который будет неблагоразумен), и мы выставляем подмножество функциональности. Действительно обратите внимание, что подмножество функциональности расширяется и переоценивается на основе обратной связи от поля (например, последний раз таймеры и поток, который Вы упомянули 7). Значительно, мы хотим выставить необходимую функциональность разработчикам способом, который согласовывается с принципами разработки и работой snapd везде в экосистеме перекрестного распределения.


Systemd устанавливают с "Постоянным" докером

Настройте докера для запуска на начальной загрузке, говорит:

Настройте Докера для запуска на начальной загрузке

Актуальнейшие дистрибутивы Linux (RHEL, CentOS, Fedora, Ubuntu 16.04 и выше) используют systemd для управления, какие сервисы запускаются когда начальные загрузки системы. Ubuntu 14.10 и ниже выскочки использования.

systemd

$ sudo systemctl enable docker

Для отключения этого поведения использование отключает вместо этого.

$ sudo systemctl disable docker

Также Докер Управления с systemd говорит:

Управляйте Докером с systemd

Много дистрибутивов Linux используют systemd для запуска демона Докера. Этот документ показывает несколько примеров того, как настроить настройки Докера.

Запустите демона Докера

Запустите вручную

После того как Докер установлен, необходимо запустить демона Докера. Большинство дистрибутивов Linux использует systemctl для запуска сервисов. Если у Вас нет systemctl, используйте сервисную команду.

  • systemctl:

    $ sudo systemctl запускают докера

  • сервис:

    $ sudo сервисный докер запускаются


Вручную создайте systemd файлы единицы

При установке двоичного файла без пакета можно хотеть интегрировать Докера с systemd. Для этого установите два файла единицы (сервис и сокет) от репозитория GitHub до /etc/systemd/system.

docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd://
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

docker.socket

[Unit]
Description=Docker Socket for the API
PartOf=docker.service

[Socket]
# If /var/run is not implemented as a symlink to /run, you may need to
# specify ListenStream=/var/run/docker.sock instead.
ListenStream=/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
1
ответ дан 1 December 2019 в 10:31

Корректный способ управлять docker то, что Вы установили использование snap был бы snap services docker, как предложено в следующей статье:

https://www.allprogrammingtutorials.com/tutorials/installing-docker-on-ubuntu-centos-using-snap.php

Дополнительный путь мог бы добавлять snap. перед именем единицы, такой как sudo systemctl restart snap.docker.service, как предложено здесь:

Как системные службы работают в снимках

0
ответ дан 1 December 2019 в 10:31

Другие вопросы по тегам:

Похожие вопросы: