Я работаю над проектом оплачиваемой стажировки в моей школе, который требует, чтобы я установил докер на экземпляре WSL ubuntu. Однако после того, как я буду следовать инструкциям от эта страница установить докер, а затем запустить
sudo docker run hello-world
Я получаю сообщение об ошибке:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
Я нашел еще несколько вопросов от людей, у которых была такая же проблема, и они рекомендовали либо запустить systemctl start docker
, что не работает из-за того, что systemd
не является системой инициализации в WSL или работает dockerd
(демон докеров). Я пробовал это, ошибся:
time="2021-08-13T14:42:48.183317500-04:00" level=info msg="Starting up"
time="2021-08-13T14:42:48.219667900-04:00" level=info msg="libcontainerd: started new containerd process" pid=10598
time="2021-08-13T14:42:48.219758500-04:00" level=info msg="parsed scheme: "unix"" module=grpc
time="2021-08-13T14:42:48.219782400-04:00" level=info msg="scheme "unix" not registered, fallback to default scheme" module=grpc
time="2021-08-13T14:42:48.219819200-04:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc
time="2021-08-13T14:42:48.219854500-04:00" level=info msg="ClientConn switching balancer to "pick_first"" module=grpc
time="2021-08-13T14:42:48.254159100-04:00" level=info msg="starting containerd" revision=e25210fe30a0a703442421b0f60afac609f950a3 version=1.4.9
time="2021-08-13T14:42:48.271842300-04:00" level=info msg="loading plugin "io.containerd.content.v1.content"..." type=io.containerd.content.v1
time="2021-08-13T14:42:48.271938000-04:00" level=info msg="loading plugin "io.containerd.snapshotter.v1.aufs"..." type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.282592100-04:00" level=info msg="skip loading plugin "io.containerd.snapshotter.v1.aufs"..." error="aufs is not supported (modprobe aufs failed: exit status 1 "modprobe: FATAL: Module aufs not found in directory /lib/modules/4.4.0-19041-Microsoft\n"): skip plugin" type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.282655000-04:00" level=info msg="loading plugin "io.containerd.snapshotter.v1.btrfs"..." type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.282826400-04:00" level=info msg="skip loading plugin "io.containerd.snapshotter.v1.btrfs"..." error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs (wslfs) must be a btrfs filesystem to be used with the btrfs snapshotter: skip plugin" type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.282846500-04:00" level=info msg="loading plugin "io.containerd.snapshotter.v1.devmapper"..." type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.282873900-04:00" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.devmapper" error="devmapper not configured"
time="2021-08-13T14:42:48.282891500-04:00" level=info msg="loading plugin "io.containerd.snapshotter.v1.native"..." type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.283006900-04:00" level=info msg="loading plugin "io.containerd.snapshotter.v1.overlayfs"..." type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.283468100-04:00" level=info msg="loading plugin "io.containerd.snapshotter.v1.zfs"..." type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.283622300-04:00" level=info msg="skip loading plugin "io.containerd.snapshotter.v1.zfs"..." error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter: skip plugin" type=io.containerd.snapshotter.v1
time="2021-08-13T14:42:48.283650700-04:00" level=info msg="loading plugin "io.containerd.metadata.v1.bolt"..." type=io.containerd.metadata.v1
time="2021-08-13T14:42:48.283687900-04:00" level=warning msg="could not use snapshotter devmapper in metadata plugin" error="devmapper not configured"
time="2021-08-13T14:42:48.283719100-04:00" level=info msg="metadata content store policy set" policy=shared
time="2021-08-13T14:42:48.284129000-04:00" level=info msg="loading plugin "io.containerd.differ.v1.walking"..." type=io.containerd.differ.v1
time="2021-08-13T14:42:48.284158200-04:00" level=info msg="loading plugin "io.containerd.gc.v1.scheduler"..." type=io.containerd.gc.v1
time="2021-08-13T14:42:48.284196800-04:00" level=info msg="loading plugin "io.containerd.service.v1.introspection-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284238500-04:00" level=info msg="loading plugin "io.containerd.service.v1.containers-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284256900-04:00" level=info msg="loading plugin "io.containerd.service.v1.content-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284311100-04:00" level=info msg="loading plugin "io.containerd.service.v1.diff-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284336000-04:00" level=info msg="loading plugin "io.containerd.service.v1.images-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284383600-04:00" level=info msg="loading plugin "io.containerd.service.v1.leases-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284411900-04:00" level=info msg="loading plugin "io.containerd.service.v1.namespaces-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284430700-04:00" level=info msg="loading plugin "io.containerd.service.v1.snapshots-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.284448100-04:00" level=info msg="loading plugin "io.containerd.runtime.v1.linux"..." type=io.containerd.runtime.v1
time="2021-08-13T14:42:48.284738900-04:00" level=info msg="loading plugin "io.containerd.runtime.v2.task"..." type=io.containerd.runtime.v2
time="2021-08-13T14:42:48.284970100-04:00" level=info msg="loading plugin "io.containerd.monitor.v1.cgroups"..." type=io.containerd.monitor.v1
time="2021-08-13T14:42:48.285348400-04:00" level=info msg="loading plugin "io.containerd.service.v1.tasks-service"..." type=io.containerd.service.v1
time="2021-08-13T14:42:48.285376700-04:00" level=info msg="loading plugin "io.containerd.internal.v1.restart"..." type=io.containerd.internal.v1
time="2021-08-13T14:42:48.285462400-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.containers"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285492300-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.content"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285526300-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.diff"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285547200-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.events"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285567300-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.healthcheck"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285587700-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.images"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285608600-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.leases"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285627700-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.namespaces"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285647900-04:00" level=info msg="loading plugin "io.containerd.internal.v1.opt"..." type=io.containerd.internal.v1
time="2021-08-13T14:42:48.285727800-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.snapshots"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285757700-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.tasks"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285778300-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.version"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.285796900-04:00" level=info msg="loading plugin "io.containerd.grpc.v1.introspection"..." type=io.containerd.grpc.v1
time="2021-08-13T14:42:48.288091300-04:00" level=info msg=serving... address=/var/run/docker/containerd/containerd-debug.sock
time="2021-08-13T14:42:48.290093400-04:00" level=info msg=serving... address=/var/run/docker/containerd/containerd.sock.ttrpc
time="2021-08-13T14:42:48.290649900-04:00" level=info msg=serving... address=/var/run/docker/containerd/containerd.sock
time="2021-08-13T14:42:48.290688200-04:00" level=info msg="containerd successfully booted in 0.048662s"
time="2021-08-13T14:42:48.304911700-04:00" level=info msg="parsed scheme: "unix"" module=grpc
time="2021-08-13T14:42:48.304940700-04:00" level=info msg="scheme "unix" not registered, fallback to default scheme" module=grpc
time="2021-08-13T14:42:48.304998900-04:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc
time="2021-08-13T14:42:48.305013000-04:00" level=info msg="ClientConn switching balancer to "pick_first"" module=grpc
time="2021-08-13T14:42:48.305870600-04:00" level=info msg="parsed scheme: "unix"" module=grpc
time="2021-08-13T14:42:48.305910200-04:00" level=info msg="scheme "unix" not registered, fallback to default scheme" module=grpc
time="2021-08-13T14:42:48.305928800-04:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc
time="2021-08-13T14:42:48.305957000-04:00" level=info msg="ClientConn switching balancer to "pick_first"" module=grpc
time="2021-08-13T14:42:48.313617500-04:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
time="2021-08-13T14:42:48.316205300-04:00" level=warning msg="Your kernel does not support cgroup memory limit"
time="2021-08-13T14:42:48.316237300-04:00" level=warning msg="Unable to find cpu cgroup in mounts"
time="2021-08-13T14:42:48.316245800-04:00" level=warning msg="Unable to find blkio cgroup in mounts"
time="2021-08-13T14:42:48.316253900-04:00" level=warning msg="Unable to find cpuset cgroup in mounts"
time="2021-08-13T14:42:48.316261600-04:00" level=warning msg="Unable to find pids cgroup in mounts"
time="2021-08-13T14:42:48.316390300-04:00" level=info msg="Loading containers: start."
time="2021-08-13T14:42:48.325245700-04:00" level=warning msg="Running iptables --wait -t nat -L -n failed with message: `iptables v1.8.4 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)nPerhaps iptables or your kernel needs to be upgraded.`, error: exit status 3"
time="2021-08-13T14:42:48.501619100-04:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby
time="2021-08-13T14:42:48.502669400-04:00" level=info msg="stopping healthcheck following graceful shutdown" module=libcontainerd
time="2021-08-13T14:42:48.502675100-04:00" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=plugins.moby
time="2021-08-13T14:42:49.504913000-04:00" level=warning msg="grpc: addrConn.createTransport failed to connect to {unix:///var/run/docker/containerd/containerd.sock <nil> 0 <nil>}. Err :connection error: desc = "transport: Error while dialing dial unix:///var/run/docker/containerd/containerd.sock: timeout". Reconnecting..." module=grpc
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.4 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
(exit status 3)
Я пробовал обновить iptables и свое ядро (запустив sudo apt-get dist-upgrade
) и изменений не было. Как я могу исправить эту проблему?
2 ответа
Вы выполнили инструкции по установке Docker в Ubuntu, который является настоящим дистрибутивом Linux. Это не подходит для WSL, потому что необходимо установить Docker. в Windows.
Описание Microsoft находится в статье
Начните работу с удаленными контейнерами Docker на WSL 2.
В статье перечислены предпосылки:
- Windows 10 не ниже версии 2004
- Включил WSL, установил дистрибутив Linux и обновился до WSL 2.
- Пакет обновления ядра Linux.
Как только это будет сделано:
- Установить Docker Desktop в Windows
- Включите интеграцию WSL с механизмом Docker, установленным в Windows.
Подробности можно найти в статье, выше — лишь краткое изложение шагов.
Документация Docker для установки в Windows находится в
Серверная часть Docker Desktop WSL 2
и может быть полезно для завершения статьи Microsoft.
В основном это копирование / вставка из аналогичной проблемы, на которую я недавно ответил в Stack Overflow:
Вы устанавливаете Docker Engine непосредственно на Ubuntu WSL, и это нормально, но я хочу быть уверен, что вы понимаете, что у вас есть другой вариант. «Рекомендуемый» метод (как указал @harrymc) — установить Docker Desktop для Windows.
Docker Desktop предоставляет несколько дополнительных функций по сравнению с базовым Docker Engine:
- Его можно использовать в нескольких экземплярах WSL2.
- Может запускаться из PowerShell и CMD.
- Он предоставляет панель инструментов с графическим интерфейсом для контейнеров и томов.
- Он обрабатывает автоматические обновления (хотя некоторые могут не посчитать это преимуществом)
- Это удобный метод, который автоматически обрабатывает все остальные вещи, указанные ниже.
Обе версии используют один и тот же движок, но Desktop также предоставляет эти дополнительные удобные функции. Если они вам не нужны или не хотите, а вы действительно делать хотите просто установить Docker Engine, тогда решение вашей текущей проблемы должно заключаться в простом запуске:
sudo service docker start
Затем попробуйте образец еще раз. Это дополнительный шаг, необходимый в WSL, который не рассматривается в документации Docker.
(Бонусный совет) рекомендую бегать hello-world
через:
sudo docker run --rm hello-world
ИМХО, нет причин оставлять этот конкретный контейнер без дела после его выхода. Я бы хотел, чтобы Docker обновил эти документы.
Кроме того, предполагая, что на этом этапе все работает, я рекомендую избавиться от этого изображения с помощью:
sudo docker rmi hello-world
Объяснение:
В «обычном» Ubuntu часть процесса установки выполняется docker-ce
package предназначен для запуска демона Docker. Однако этот шаг не выполняется из-за различий в способах работы WSL (отсутствие уровней запуска, systemd, поддержки сценариев запуска и т. Д.).
Итак, когда вы дойдете до этого (в настоящее время) шага 3, чтобы убедиться, что демон работает через docker run ...
, это не.
Вы также столкнетесь с аналогичной проблемой, когда перейдете к разделу «Действия после установки для Linux: настроить Docker для запуска при загрузке» *
Это не сработает на WSL, поскольку здесь нет концепции «загрузки» (и, опять же, нет Systemd). Поэтому вам понадобится альтернативный метод, чтобы убедиться, что движок работает в WSL. Конечно, это может быть просто инструкция sudo service docker start
когда вам это нужно. Или вы можете, если хотите, добавить что-то вроде следующего в свой ~/.bashrc
:
wsl.exe -u root -e sh -c "service docker status || service docker start"
Есть и другие методы, но это лишь один пример.
Просто предупреждаем, что Docker Engine может быть установлен непосредственно в экземпляр WSL. Подробности см. В моем ответе.
— NotTheDr01ds
14 часов назад