Автозапуск нативного 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