Skip to content

Docker на Windows через Docker ToolBox

Roman edited this page Nov 3, 2017 · 2 revisions

Общее понимание

Dokcer - упарвляет контенерами. Это клиент + сервер.

Как устроено на Windows/MacOS

Есть 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 все данные автоматом.

Полезности по Docker

Удалить все образы

docker rmi -f `docker images | awk '{ print $3; }'`

Список всех контенеров

docker ps -a

Список всех образов

docker images

Удалить все контенеры

docker rm `docker ps --no-trunc -aq`

Инструмент для визуального отображения среды Weave Scope

$ wget -O scope https://github.com/weaveworks/scope/releases/download/latest_release/scope
$ chmod +x scope
$ scope launch

Dockeriu

docker run -d -p 9000:9000 --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name=dockerui dockerui/dockerui

Запуск системы мониторинга cAdvisor на CentOS 7:

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/

Clone this wiki locally