-
Notifications
You must be signed in to change notification settings - Fork 24
Docker на Windows через Docker ToolBox
Dokcer - упарвляет контенерами. Это клиент + сервер.
Есть Docker Toolbox, в котором есть docker-machine.exe
- это штука которая поднимает VirtualBox, запускает в ней минимальную linux с предустановленным docker в ней. В общем Docker-сервер на винде запускается в VirtualBox а не локально как в linux. docker-machine предназначена для управления виртуалками.
# Создаёт и запустить новую виртуалку с именем `dev`
docker-machine create --driver virtualbox dev
# Посмотреть список машин
docker-machine ls
Если попробовать вызвать docker.exe info
то он выдаст чтото такое:
An error occurred trying to connect: Get http://127.0.0.1:2375/v1.22/info: dial tcp 127.0.0.1:2375: connectex: No connection could be made because the target machine actively refused it.
Это потому что он пытается подключится к локальному docker-серверу которого нет (т.к. он в вритуалке).
Можно вызвать docker клиент так:
docker -H tcp://192.168.99.101:2376 --tlsverify --tlscacert=%USERPROFILE%\.docker\machine\machines\dev\ca.pem --tlscert=%USERPROFILE%\.docker\machine\machines\dev\cert.pem --tlskey=%USERPROFILE%\.docker\machine\machines\dev\key.pem info
Но так очень длинно и выставить для него нужные параметры по умолчанию и заставить его подключаться к виртуалке необходимо выставить специальные переменные окружения. Какие именно поможет комманда:
# Вывести список установки переменных для dev
docker-machine.exe env dev
Выдаст примерно следующее:
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.101:2376
SET DOCKER_CERT_PATH=C:\Users\rsa\.docker\machine\machines\dev
SET DOCKER_MACHINE_NAME=dev
REM Run this command to configure your shell:
REM FOR /f "tokens=*" %i IN ('"docker-machine.exe" env default') DO %i
Но проблема в том, что коммандами SET переменные выставляет только для текущего терминала. Ещё больше проблема в том, что хочется это засунуть в bat-файл, вызвать его и чтобы всё установилось (из под Far). Но так не получается. Короче решение такое, либо в ручную вызвать каждый SET, либо установить плагин к Far FarCall который позволяет написать call:do.bat и переменные установятся и останутся.
Подробанне в документации
PhpStorm при работе с docker умеет сам узнавать у docker-machine все данные автоматом.
- named volumes — правильная работа с томами
- Образы и контейнеры Docker в картинках (Хабр)
- Неплохое видео про основы Docker
- Почитать Сборка docker контейнеров с помощью docker контейнеров(Хабр)
- 350+ полезных ресурсов, книг и инструментов для работы с Docker
- Один из вариантов workflow docker
docker rmi -f `docker images | awk '{ print $3; }'`
docker ps -a
docker images
docker rm `docker ps --no-trunc -aq`
$ wget -O scope https://github.com/weaveworks/scope/releases/download/latest_release/scope
$ chmod +x scope
$ scope launch
docker run -d -p 9000:9000 --privileged \
-v /var/run/docker.sock:/var/run/docker.sock \
--name=dockerui dockerui/dockerui
docker run \
--privileged=true \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/sys/fs/cgroup/:/cgroup:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
Хороший FAQ по docker: https://xakep.ru/2015/06/04/docker-faq/