Сервис Docker явно работает:
$ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2015-12-28 19:20:50 GMT; 3 days ago
Docs: https://docs.docker.com
Main PID: 1015 (docker)
CGroup: /system.slice/docker.service
└─1015 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
$ ps wuf -u root | grep $(which docker)
root 1015 0.0 0.3 477048 12432 ? Ssl 2015 2:26 /usr/bin/docker daemon -H fd:// --exec-opt native.cgroupdriver=cgroupfs
Однако сам Докер отказывается говорить с ним:
$ docker info
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Я использую стандартную конфигурацию Docker , то есть я не изменил ни одного /etc
файла, относящегося к этому сервису.
В чем может быть проблема здесь?
arch-linux
docker
l0b0
источник
источник
sudo systemctl start docker
исправил это, демон действительно не работал ...На этот вопрос уже дан ответ, но вот дополнительная информация.
Независимо от того, находитесь ли вы в Arch или другом дистрибутиве, таком как Fedora или Ubuntu, Docker использует файл сокета для связи. Когда вы запускаете
docker
команды, он использует этот сокет для связи с демоном Docker. Конечно, демон должен работать (и он часто отключен по умолчанию), но если ваш пользователь не может получить доступ к сокету, он также не сможет общаться с демоном.Сначала вы должны установить Docker из репозитория дистрибутива. Некоторые люди скачивают скрипт установки и передают его в оболочку (
curl ... | sh
), но рекомендуется установить его из репозитория, чтобы его можно было легко обновить.Arch:
Fedora:
Как упоминалось выше, демон может быть отключен по умолчанию. Если вы хотите использовать Docker, демон должен быть запущен.
Включите его (чтобы он запускался при загрузке):
Запустите его сейчас (или перезагрузите компьютер):
Теперь по умолчанию (если группа docker отсутствует), сокет Docker принадлежит root:
Вот почему обычный пользователь не может общаться с демоном Docker. Обычный пользователь не имеет достаточных разрешений для доступа к сокету. Он не может связаться с демоном, поэтому он предполагает, что он не работает, и показывает эту ошибку:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Вот почему многие люди просто запускают все команды Docker с правами root
sudo
. Но, как описано в другом ответе, Docker имеет собственный механизм для этого, поэтому использование sudo не является необходимым.В идеале, группа под названием
docker
создается при установке Docker. Однако, если эта группа не существует при запуске демона, файл сокета принадлежит root.В некоторых случаях эта группа имела другое имя, как
dockerroot
в Fedora . Проверьтеgrep docker /etc/group
, есть ли такая группа в вашей системе. Если вы уже используете эту группу (ваш пользователь в ней), вам нужно настроить Docker для ее использования:В
/etc/sysconfig/docker
добавьте-G dockerroot
(примечание: это временное решение, не самое лучшее решение):После перезапуска демона ваш пользователь сможет получить доступ к сокету:
В противном случае официальным способом было бы использовать группу под названием
docker
. Если он существует, Docker автоматически его использует, т. Е. Устанавливает группу сокетов в эту группу. Если он не существует, все, что вам нужно сделать, это создать его и перезапустить демон:Файл сокета будет принадлежать этой группе:
Ваш пользователь должен быть в
docker
группе, чтобы иметь доступ к сокету:Возможно, вам придется выйти и снова войти (или
su - (user)
), запустить,id
чтобы увидеть, если вы находитесь в группе.Затем вы можете использовать Docker без sudo / root:
Наконец, слово предупреждения. Только доверенные пользователи могут иметь право управлять вашим демоном Docker . См. Https://docs.docker.com/engine/security/security/ .
(Но, конечно, то же самое верно для sudo - в
wheel
группе должны быть только доверенные пользователи .)источник
затем выйдите из системы, затем войдите снова
источник
Проведя некоторые исследования по решению этой проблемы в моей системе Linux, я решил написать этот ответ. Вот что я сделал, чтобы исправить проблему.
На Fedora 22
Установка Docker:
После установки Docker:
Пользователь должен быть добавлен в группу Docker.
Должен быть запущен демон Docker
Вы можете настроить запуск демона при загрузке
Вы можете убедиться, что служба Docker запущена
И последняя последняя проверка
источник
pacman
использованиемsystemctl
вместоservice
+chkconfig
).Если вы используете Fedora 23 или Redhat, отредактируйте
/etc/sysconfig/docker
и измените следующееПерезапустите докер.
Убедитесь, что вы добавили эту группу в систему и добавили себя в группу.
источник
Эта команда работает для меня
Я нашел решение на этой странице, если вам нужно больше документации. Почему мы не позволяем некорневым пользователям запускать Docker в CentOS, Fedora или RHEL
источник
Если вы запустили ваш механизм докера с помощью: sudo service docker start
Вы не можете соединиться с обычным пользователем, даже если вы добавили себя в группу «Докер».
Вы можете просто остановить это с помощью: sudo service docker stop
и запустите его как обычный пользователь: запуск службы Docker
источник
docker group
сих пор.sudo service start
работал на меня. Однако, будет наблюдать, если есть что-то новое.У меня тоже была такая же проблема. Проблема была в сокетах, выделенных для docker-daemon и docker-client.
Во-первых, не было установлено разрешение для docker-клиента на docker.sock. Вы можете установить его, используя
sudo usermod -aG docker $USER
Затем проверьте ваш bash-файл, где запущен docker-клиент. Для меня это было установлено на 0.0.0.0:2375, когда docker-daemon работал на сокете unix. (Это было установлено в конфигурационном файле dockerd).
Просто закомментируйте оскорбительную строку, и она будет работать нормально.
Но если вы хотите, чтобы он работал на порте TCP вместо сокета unix, измените файл конфигурации dockerd, установите его на 0.0.0.0.2375 и оставьте строку в bash, как есть, или установите ее на 0.0. 0.0: 2375.
источник
Вот шаги, которые я выполнил, чтобы исправить следующее
Добавьте себя в группу Docker
usermod -aG docker $USER
Исправьте права доступа к докеру socker и команде.
sudo chgrp docker /usr/bin/docker
sudo chgrp docker /var/run/docker.sock
$ ll $(which docker) -rwxr-xr-x 1 root docker 18991768 08.07.2017 22:57 /usr/bin/docker*
$ ll /var/run/docker.sock srw-rw---- 1 root docker 0 23.07.2017 10:21 /var/run/docker.sock
Добавьте переменные в конфигурационную среду для команды docker
export DOCKER_HOST=unix:///var/run/docker.sock
Отдых Докер
sudo systemctl restart docker
источник