, последнее обновление:

Автозапуск нативного Docker’a

Я люблю запускать Docker в самом WSL, чтобы не ловить приколов с пробросом портов или перформансом (а такие иногда случаются, к сожалению), а также приколов с маппингом бинарей в WSL’ные виртуалки (например, у меня не прокидывались все нужные бинари - docker и docker-compose). Для работы с ними приходилось все равно ставить нативный докер и настраивать переменную окружения DOCKER_TCP. А если не видно разницы - зачем платить больше, не правда ли?

WSL не исполняет никакие скрипты запуска демонов (будь то systemd или upstart’овские), поэтому необходимо добавить автозапуск в инициализацию шелла (файл ~/.bashrc).

Nopasswd sudo

Сначала надо добавить строчку в /etc/sudoers, которая разрешит беспарольное использование sudo:

USERNAME ALL=(ALL:ALL) NOPASSWD: ALL

Замените USERNAME на имя вашего пользователя.

Инициализация шелла

Добавьте в ~/.bashrc (или его аналог в вашем любимом шелле) следующее:

if [ ! -f "/var/run/docker.pid" ]; then
    sudo service docker start
else
    echo "Docker is running as $(pgrep dockerd)"
fi

При запуске нового шелла, в случае уже запущеного докера, вы увидите сообщение:

Docker is running as 108

В случае запуска Docker’а, соответственно:

* Starting Docker: docker