Запуск Docker-контейнеров обычно включает три компонента:
- Docker Client — это двоичный файл, который принимает команды от пользователя и обменивается данными с хостом
- Docker Daemon работает на хост-машине и выполняет тяжелую работу по сборке, запуску и распространению контейнеров Docker.
- Docker Registry — это платформа SaaS для обмена и управления образами Docker. Docker Hub является публичным центром. Также можно легко настроить частные реестры, например, Artifactory . Подробнее об этом в следующем блоге.
Docker Client обменивается данными с Daemon либо на одном хосте, либо на другом хосте. Он просит Daemon извлечь изображение из хранилища, используя команду pull . Затем Daemon загружает образ из Docker Hub или любого другого настроенного реестра. Несколько изображений можно загрузить из реестра и установить на хосте Daemon.
В типичной настройке среды разработки Docker Client и Host / Daemon будут располагаться на одном хост-компьютере. Даже если они находятся на разных компьютерах, все равно требуется войти в систему на хосте и настроить Docker Daemon для этой ОС.
Docker Machine переносит вас с нуля в Docker на хосте с помощью одной команды. Этот хост может быть вашим ноутбуком, в облаке или в вашем дата-центре. Он создает серверы, устанавливает на них Docker, а затем настраивает клиент Docker для связи с ними.
Это загружает ВМ boot2docker , устанавливает ssh-ключи, генерирует сертификаты, запускает ВМ. Это в основном берет на себя всю скучную работу, чтобы вы могли сосредоточиться на всех забавных вещах.
Этот технический совет покажет вам, как начать работать с Docker Machine и использовать его для настройки Docker Host на Mac. Он еще не работает в Windows из-за github.com/docker/machine/issues/742 .
Давайте начнем!
Установите Docker Machine
- Загрузите соответствующий двоичный файл с docs.docker.com/machine/#installation . Двоичный файл для Mac можно скачать как:
123456
~> curl -L https:
//github
.com
/docker/machine/releases/download/v0
.1.0
/docker-machine_darwin-amd64
>
/usr/local/bin/docker-machine
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 403 0 403 0 0 725 0 --:--:-- --:--:-- --:--:-- 726
100 15.5M 100 15.5M 0 0 2276k 0 0:00:06 0:00:06 --:--:-- 3362k
~>
chmod
+x
/usr/local/bin/docker-machine
- Проверьте установку как:
12
~> docker-machine -
v
docker-machine version 0.1.0
Настройте хост Mac с помощью Docker Machine
- Docker Machine можно настроить для использования с несколькими драйверами, такими как Amazon Web Services, Google Compute Engine, Microsoft Azure и Oracle VirtualBox. На ноутбуке разработчика, Virtual Box — удобный вариант. Виртуальная коробка 4.3.20 является минимальным требованием. Поэтому убедитесь, что установлена правильная версия.
- Создайте Docker Host с помощью провайдера VirtualBox и назовите компьютер как «mydocker». Прежде чем вызывать эту команду, убедитесь, что ssh-keygen находится в PATH. На Mac это уже находится в / usr / bin / ssh-keygen. В Windows это можно установить как часть Git Bash. Это можно сделать следующим образом:
01020304050607080910
~> docker-machine create --driver virtualbox mydocker
INFO[0000] Creating CA:
/Users/arungupta/
.docker
/machine/certs/ca
.pem
INFO[0000] Creating client certificate:
/Users/arungupta/
.docker
/machine/certs/cert
.pem
INFO[0002] Downloading boot2docker.iso to
/Users/arungupta/
.docker
/machine/cache/boot2docker
.iso...
INFO[0006] Creating SSH key...
INFO[0007] Creating VirtualBox VM...
INFO[0018] Starting VirtualBox VM...
INFO[0018] Waiting
for
VM to start...
INFO[0051]
"mydocker"
has been created and is now the active machine.
INFO[0051] To point your Docker client at it, run this
in
your shell: $(docker-machine
env
mydocker)
Это загрузит boot2docker с установленным демоном Docker и создаст и запустит виртуальную машину VirtualBox с работающим Docker.
- Найти IP-адрес машины как:
12
~> docker-machine ip
192.168.99.101
Запишите этот IP-адрес, он будет использоваться для доступа к приложению.
- Проверьте состояние работающей машины как:
123
~> docker-machine
ls
NAME ACTIVE DRIVER STATE URL SWARM
mydocker * virtualbox Running tcp:
//192
.168.99.101:2376
*
В столбцеACTIVE
указывает, что это активный хост. - Проверьте окружение вновь созданной машины как:
1234
~> docker-machine
env
mydocker
export
DOCKER_TLS_VERIFY=
yes
export
DOCKER_CERT_PATH=
/Users/arungupta/
.docker
/machine/machines/mydocker
export
DOCKER_HOST=tcp:
//192
.168.99.101:2376
Настройка Docker клиента для связи
- Настройте ваш клиент для общения с этим хостом как:
1
$(docker-machine
env
mydocker)
Запустите приложение Java на хосте
- Запустите приложение Java EE 7, описанное в практической лаборатории Java EE 7 на WildFly и Docker, на этом хосте:
01020304050607080910111213141516
docker run -it -p 8080:8080 arungupta
/javaee7-hol
Unable to
find
image
'arungupta/javaee7-hol'
locally
Pulling repository arungupta
/javaee7-hol
a068decaf892: Download complete
511136ea3c5a: Download complete
5b12ef8fd570: Download complete
ae0c2d0bdc10: Download complete
. . .
03:13:20,449 INFO [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-12) Adding provider class org.javaee7.movieplex7.json.MovieReader from Application class org.javaee7.movieplex7.rest.ApplicationConfig
03:13:20,554 INFO [org.wildfly.extension.undertow] (MSC service thread 1-12) JBAS017534: Registered web context:
/movieplex7
03:13:20,596 INFO [org.jboss.as.server] (ServerService Thread Pool -- 31) JBAS018559: Deployed
"movieplex7-1.0-SNAPSHOT.war"
(runtime-name :
"movieplex7-1.0-SNAPSHOT.war"
)
03:13:20,674 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http:
//127
.0.0.1:9990
/management
03:13:20,675 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http:
//127
.0.0.1:9990
03:13:20,675 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final
"Tweek"
started
in
10513ms - Started 400 of 452 services (104 services are lazy, passive or on-demand)
- Откройте приложение по адресу 192.168.99.101:8080/movieplex7/ и оно выглядит следующим образом:
Команды докера
Полный список команд Docker Machine можно увидеть как:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
~> docker-machine NAME: docker-machine - Create and manage machines running Docker. USAGE: docker-machine [global options] command [command options] [arguments...] VERSION: 0.1 . 0 AUTHOR: Docker Machine Contributors - <https: //github.com/docker/machine> COMMANDS: active Get or set the active machine create Create a machine config Print the connection config for machine inspect Inspect information about a machine ip Get the IP address of a machine kill Kill a machine ls List machines restart Restart a machine rm Remove a machine env Display the commands to set up the environment for the Docker client ssh Log into or run a command on a machine with SSH start Start a machine stop Stop a machine upgrade Upgrade a machine to the latest version of Docker url Get the URL of a machine help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --debug, -D Enable debug mode --storage-path "/Users/arungupta/.docker/machine" Configures storage path [$MACHINE_STORAGE_PATH] --tls-ca-cert "/Users/arungupta/.docker/machine/certs/ca.pem" CA to verify remotes against [$MACHINE_TLS_CA_CERT] --tls-ca-key "/Users/arungupta/.docker/machine/certs/ca-key.pem" Private key to generate certificates [$MACHINE_TLS_CA_KEY] --tls-client-cert "/Users/arungupta/.docker/machine/certs/cert.pem" Client cert to use for TLS [$MACHINE_TLS_CLIENT_CERT] --tls-client-key "/Users/arungupta/.docker/machine/certs/key.pem" Private key used in client TLS auth [$MACHINE_TLS_CLIENT_KEY] --help, -h show help --version, -v print the version |
Узнайте больше о Docker Machine, Swarm и Compose в этом видео:
Зачем вам использовать что-то кроме Docker Machine для настройки хоста Docker? Как вы настраиваете Docker Host в противном случае?
Несколько полезных ссылок:
Наслаждайтесь!
Ссылка: | Docker Machine для настройки Docker Host от нашего партнера JCG Аруна Гупты в блоге Miles to go 2.0… . |