Невозможно запустить службу Docker в Ubuntu 16.04

Я пытался использовать Docker (1.10) в Ubuntu 16.04, но установка не удалась, потому что служба Docker не запускается. Я уже пытался установить докер с помощью пакетов docker.io, docker-engine и curl -sSL https://get.docker.com/ | sh, но это не сработало.

Моя Информация о хосте:

Linux Xenial 4.5.3-040503-generic #201605041831 SMP Wed May 4 22:33:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Вот systemctl status docker.service:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since sáb 2016-05-14 15:17:31 CEST; 12min ago
     Docs: https://docs.docker.com
  Process: 22479 ExecStart=/usr/bin/docker daemon -H fd:// (code=exited, status=1/FAILURE)
 Main PID: 22479 (code=exited, status=1/FAILURE)

may 14 15:17:30 Xenial docker[22479]: time="2016-05-14T15:17:30.103601523+02:00" level=info msg="New containerd process, pid: 22485\n"
may 14 15:17:31 Xenial docker[22479]: time="2016-05-14T15:17:31.149064723+02:00" level=error msg="devmapper: Unable to delete device: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool"
may 14 15:17:31 Xenial docker[22479]: time="2016-05-14T15:17:31.149127439+02:00" level=warning msg="devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to dm.thinpooldev section."
may 14 15:17:31 Xenial docker[22479]: time="2016-05-14T15:17:31.153010028+02:00" level=error msg="[graphdriver] prior storage driver \"devicemapper\" failed: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool"
may 14 15:17:31 Xenial docker[22479]: time="2016-05-14T15:17:31.153130839+02:00" level=fatal msg="Error starting daemon: error initializing graphdriver: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool"
may 14 15:17:31 Xenial systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
may 14 15:17:31 Xenial docker[22479]: time="2016-05-14T15:17:31+02:00" level=info msg="stopping containerd after receiving terminated"
may 14 15:17:31 Xenial systemd[1]: Failed to start Docker Application Container Engine.
may 14 15:17:31 Xenial systemd[1]: docker.service: Unit entered failed state.
may 14 15:17:31 Xenial systemd[1]: docker.service: Failed with result 'exit-code'.

Вот sudo docker daemon -D

DEBU[0000] docker group found. gid: 999                 
DEBU[0000] Listener created for HTTP on unix (/var/run/docker.sock) 
INFO[0000] previous instance of containerd still alive (23050) 
DEBU[0000] containerd connection state change: CONNECTING 
DEBU[0000] Using default logging driver json-file       
DEBU[0000] Golang's threads limit set to 55980          
DEBU[0000] received past containerd event: &types.Event{Type:"live", Id:"", Status:0x0, Pid:"", Timestamp:0x57372cae} 
DEBU[0000] containerd connection state change: READY    
DEBU[0000] devicemapper: driver version is 4.34.0       
DEBU[0000] devmapper: Generated prefix: docker-8:6-2101297 
DEBU[0000] devmapper: Checking for existence of the pool docker-8:6-2101297-pool 
DEBU[0000] devmapper: poolDataMajMin=7:0 poolMetaMajMin=7:1

DEBU[0000] devmapper: Major:Minor for device: /dev/loop0 is:7:0 
DEBU[0000] devmapper: Major:Minor for device: /dev/loop1 is:7:1 
DEBU[0000] devmapper: loadDeviceFilesOnStart()          
DEBU[0000] devmapper: Skipping file /var/lib/docker/devicemapper/metadata/transaction-metadata 
DEBU[0000] devmapper: loadDeviceFilesOnStart() END      
DEBU[0000] devmapper: constructDeviceIDMap()            
DEBU[0000] devmapper: constructDeviceIDMap() END        
DEBU[0000] devmapper: Rolling back open transaction: TransactionID=1 hash= device_id=1 
ERRO[0000] devmapper: Unable to delete device: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool 
WARN[0000] devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to dm.thinpooldev section. 
DEBU[0000] devmapper: Initializing base device-mapper thin volume 
DEBU[0000] devicemapper: CreateDevice(poolName=/dev/mapper/docker-8:6-2101297-pool, deviceID=1) 
DEBU[0000] devmapper: Error creating device: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool 
DEBU[0000] devmapper: Error device setupBaseImage: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool 
ERRO[0000] [graphdriver] prior storage driver "devicemapper" failed: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool 
DEBU[0000] Cleaning up old mountid : start.             
FATA[0000] Error starting daemon: error initializing graphdriver: devicemapper: Can't set task name /dev/mapper/docker-8:6-2101297-pool

Вот ./check-config.sh. выход:

warning: /proc/config.gz does not exist, searching other paths for kernel config ...
info: reading kernel config from /boot/config-4.5.3-040503-generic ...

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
- apparmor: enabled and tools installed
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_DEVPTS_MULTIPLE_INSTANCES: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: enabled
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: enabled
- CONFIG_KEYS: enabled
- CONFIG_MACVLAN: enabled (as module)
- CONFIG_VETH: enabled (as module)
- CONFIG_BRIDGE: enabled (as module)
- CONFIG_BRIDGE_NETFILTER: enabled (as module)
- CONFIG_NF_NAT_IPV4: enabled (as module)
- CONFIG_IP_NF_FILTER: enabled (as module)
- CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module)
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module)
- CONFIG_NF_NAT: enabled (as module)
- CONFIG_NF_NAT_NEEDED: enabled
- CONFIG_POSIX_MQUEUE: enabled

Optional Features:
- CONFIG_USER_NS: enabled
- CONFIG_SECCOMP: enabled
- CONFIG_CGROUP_PIDS: enabled
- CONFIG_MEMCG_KMEM: missing
- CONFIG_MEMCG_SWAP: enabled
- CONFIG_MEMCG_SWAP_ENABLED: missing
    (note that cgroup swap accounting is not enabled in your kernel config, you can enable it by setting boot option "swapaccount=1")
- CONFIG_BLK_CGROUP: enabled
- CONFIG_BLK_DEV_THROTTLING: enabled
- CONFIG_IOSCHED_CFQ: enabled
- CONFIG_CFQ_GROUP_IOSCHED: enabled
- CONFIG_CGROUP_PERF: enabled
- CONFIG_CGROUP_HUGETLB: enabled
- CONFIG_NET_CLS_CGROUP: enabled (as module)
- CONFIG_CGROUP_NET_PRIO: enabled
- CONFIG_CFS_BANDWIDTH: enabled
- CONFIG_FAIR_GROUP_SCHED: enabled
- CONFIG_RT_GROUP_SCHED: missing
- CONFIG_EXT3_FS: missing
- CONFIG_EXT3_FS_XATTR: missing
- CONFIG_EXT3_FS_POSIX_ACL: missing
- CONFIG_EXT3_FS_SECURITY: missing
    (enable these ext3 configs if you are using ext3 as backing filesystem)
- CONFIG_EXT4_FS: enabled
- CONFIG_EXT4_FS_POSIX_ACL: enabled
- CONFIG_EXT4_FS_SECURITY: enabled
- Network Drivers:
  - "overlay":
    - CONFIG_VXLAN: enabled (as module)
- Storage Drivers:
  - "aufs":
    - CONFIG_AUFS_FS: missing
  - "btrfs":
    - CONFIG_BTRFS_FS: enabled (as module)
  - "devicemapper":
    - CONFIG_BLK_DEV_DM: enabled
    - CONFIG_DM_THIN_PROVISIONING: enabled (as module)
  - "overlay":
    - CONFIG_OVERLAY_FS: enabled (as module)
  - "zfs":
    - /dev/zfs: missing
    - zfs command: missing
    - zpool command: missing

Если бы кто-нибудь мог мне помочь, я был бы очень благодарен


person Salva Corts    schedule 14.05.2016    source источник
comment
Вы перезапустили систему?   -  person Yogesh Jilhawar    schedule 14.05.2016
comment
Да, я уже решил проблему, как я объясняю ниже.   -  person Salva Corts    schedule 14.05.2016


Ответы (11)


Обновить

Похоже, что в более новых версиях docker и Ubuntu файл модуля для docker просто замаскирован (указывает на / dev / null).
Вы можете проверить это, выполнив следующие команды в терминале:

sudo file /lib/systemd/system/docker.service
sudo file /lib/systemd/system/docker.socket

Вы должны увидеть, что файл модуля ссылается на / dev / null.
В этом случае все, что вам нужно сделать, это следовать предложению S34N и запустить:

sudo systemctl unmask docker.service
sudo systemctl unmask docker.socket
sudo systemctl start docker.service
sudo systemctl status docker

Я также сохраню исходный пост, который отвечает на журнал ошибок, в котором говорится, что драйвер хранилища следует заменить:

Исходное сообщение

У меня была такая же проблема, и я попытался исправить ее с помощью предложения Сальвы Корта, но при печати /etc/default/docker говорится:

# ЭТОТ ФАЙЛ НЕ ПРИМЕНЯЕТСЯ К СИСТЕМЕ

Итак, вот постоянное исправление , которое работает для systemd (Ubuntu 15.04 и выше):

  1. создайте новый файл /etc/systemd/system/docker.service.d/overlay.conf со следующим содержанием:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// -s overlay
    
  2. очистить изменения, выполнив:

    sudo systemctl daemon-reload
    
  3. убедитесь, что конфигурация загружена:

    systemctl show --property=ExecStart docker
    
  4. перезапустить докер:

    sudo systemctl restart docker
    
person dvir    schedule 05.06.2016
comment
Также работает для nvidia-docker, если вы измените все docker на nvidia-docker - person Laurenz; 09.08.2016
comment
Мне пришлось добавить всю командную строку из соответствующей строки в /etc/systemd/system/docker.service, чтобы это работало. Шаг 1, как указано, просто перезаписал все аргументы командной строки, потеряв много аргументов в моем случае. - person rep; 23.08.2016
comment
Этот ответ (не связанный ответ), похоже, больше не работает, по крайней мере, на Ubuntu 16.04, Docker версии 17.12.1-ce. Ошибка, мешающая запуску службы, которая содержит сообщения ExecStart = / usr / bin / docker daemon -H fd: // -s overlay (code = exited, status = 125) и неизвестный сокращенный флаг: 's' in - s Таким образом, очевидно, что флаг -s больше не поддерживается. - person Tony; 28.02.2018
comment
он работает даже, если вы просто отредактируете / создадите файл в /etc/docker/daemon.json и добавите строки {storage-driver: overlay2}, затем sudo systemctl restart docker.service - person Naitik Shah; 10.04.2018
comment
Проблема здесь не в том, что новые версии маскируют docker.service при установке; проблема в том, что старые версии маскируют его при удалении. Таким образом, это будет относиться к вам только в том случае, если вы установили старую версию, удалили ее, а затем установили более новую версию. Я только что отправил LP № 1844894 с подробностями. - person Anders Kaseorg; 22.09.2019
comment
Эти команды systemctl были именно тем, что мне было нужно сегодня утром после обновления до 20.04. - person MattBoothDev; 23.04.2020

Следующие команды демаскировки сработали для меня (Ubuntu 18). Надеюсь, это поможет кому-то там ... :-)

sudo systemctl unmask docker.service
sudo systemctl unmask docker.socket
sudo systemctl start docker.service
person S34N    schedule 25.09.2018
comment
Это исправило это для меня после указания неправильного пользователя в /etc/docker/daemon.json для userns-remap - person Steven Huang; 10.03.2021

У меня была такая же проблема после обновления докера с 17.05-го до 17.06-го через докер-машину

  1. Обновите /etc/systemd/system/docker.service.d/10-machine.conf

    заменять

    `docker daemon` => `dockerd`
    

    пример из

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker deamon -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver aufs --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic
    Environment=
    

    to

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver aufs --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic
    Environment=
    
  2. очистить изменения, выполнив:

    sudo systemctl daemon-reload
    
  3. перезапустить докер:

    sudo systemctl restart docker
    
person Roman Rhrn Nesterov    schedule 30.06.2017
comment
Это решение сработало для меня при попытке запустить docker-machine против недавно подготовленной капли digitalocean. - person cwash; 14.08.2017

Ну наконец то я исправил

Все, что вам нужно сделать, это загрузить другой драйвер хранилища в моем случае я буду использовать overlay:

  1. Отключить службу Docker: sudo systemctl stop docker.service
  2. Запустить Docker Daemon (overlay драйвер): sudo docker daemon -s overlay
  3. Запустить демонстрационный контейнер: sudo docker run hello-world

Чтобы сделать эти изменения постоянными, вы должны отредактировать файл /etc/default/docker и добавить параметр:

DOCKER_OPTS="-s overlay"

При следующей загрузке службы Docker она запустит docker daemon -s overlay

person Salva Corts    schedule 14.05.2016
comment
К сожалению, редактирование / etc / default / docker НЕ работает в Ubuntu. Он по-прежнему застревает, как и исходная проблема. Однако оверлей sudo docker daemon -s всегда работает. Я буду следовать этой команде каждый раз. Спасибо. - person Boss Man; 23.10.2016
comment
Я не смог запустить докер с шага 2. Команда подсказала, что -s не является флагом, а демон не является командой докера. Я использую Docker версии 18.09.0 - person Adolfo Correa; 09.12.2018

Я смог заставить его работать после обновления ядра, следуя указаниям в этом блоге.

https://mymemorysucks.wordpress.com/2016/03/31/docker-graphdriver-and-aufs-failed-driver-not-supported-error-after-ubuntu-upgrade/

sudo apt-get update
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

sudo modprobe aufs

sudo service docker restart
person dragon788    schedule 28.02.2017

После просмотра некоторых других ответов выяснилось, что проблема заключалась в том, что служба не работала с параметрами -s overlay.

Я также случайно заметил, что докер пытался запустить с ${DOCKER_OPTS} в конце вызова.

Я смог export DOCKER_OPTS="-s overlay" (по умолчанию DOCKER_OPTS был пуст) и запустить докер.

person Seaux    schedule 21.06.2017

У меня была аналогичная проблема при новой установке Docker (версия 19.03.3-rc1) в Ubuntu 18.04.3 LTS. По умолчанию файл /etc/docker/daemon.json не существует при новой установке. Следуя руководству, я изменил драйвер хранилища на devicemapper, создав новый файл daemon.json. Это сработало, но затем я удалил файл daemon.json, думая, что он вернется к умолчанию, но это не сработало, и служба не запустилась.

Создание файла /etc/docker/daemon.json снова с драйвером хранилища по умолчанию исправило это для меня.

{
    "storage-driver": "overlay2"
}
person Sharjeel Aziz    schedule 13.10.2019
comment
У меня аналогичная проблема с версией докера 19.03.12, моя причина, по которой мне не удалось запустить службу докеров, - это пустой файл /etc/docker/daemon.json, сделанный мной по другой теме. Удаление этого файла устранило мою проблему. - person Jackie Yeh; 09.07.2020

Что касается меня, я получил эту ошибку.

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

Наконец я обнаружил, что это /etc/docker/daemon.json ошибка, потому что я добавляю registry-mirrors

{
    "runtimes": {

        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }    

    # I forget to add a comma , here !!!!!!!
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

После того как добавил, то systemctl restart docker, решил.

person Jayhello    schedule 26.01.2018

В моем случае я получал следующую ошибку от journalctl -xe command

unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character 'â' looking for beginning of object key string

Просто очистите /etc/docker/daemon.json с помощью

{
}
person Erdinç Çorbacı    schedule 26.12.2018

У меня возникла эта проблема сегодня после обновления ядра ubuntu, и я попробовал многочисленные решения, указанные выше. Однако единственное, что сработало (Ubuntu 16.04.6 LTS), - это удалить (или переименовать) папку: / var / lib / docker

Имейте в виду, что это удалит все ваши образы докеров, контейнеры, тома и т. Д. Поэтому осознайте последствия, прежде чем применять или делать резервную копию!

Здесь есть более подробная информация: https://github.com/docker/for-linux/issues/162

person Lol    schedule 01.05.2019

sudo dockerd --debug поможет исправить реальную проблему. Я исправил ту же ошибку, используя это в ubuntu 20 LTS.

person Jatinder Singh Brar    schedule 18.04.2021