Статьи

Docker Machine для настройки Docker Host

Запуск Docker-контейнеров обычно включает три компонента:

  • Docker Client — это двоичный файл, который принимает команды от пользователя и обменивается данными с хостом
  • Docker Daemon работает на хост-машине и выполняет тяжелую работу по сборке, запуску и распространению контейнеров Docker.
  • Docker Registry — это платформа SaaS для обмена и управления образами Docker. Docker Hub является публичным центром. Также можно легко настроить частные реестры, например, Artifactory . Подробнее об этом в следующем блоге.

Docker Client обменивается данными с Daemon либо на одном хосте, либо на другом хосте. Он просит Daemon извлечь изображение из хранилища, используя команду pull . Затем Daemon загружает образ из Docker Hub или любого другого настроенного реестра. Несколько изображений можно загрузить из реестра и установить на хосте Daemon.

докер-архитектуры techtip39

В типичной настройке среды разработки 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

  1. Загрузите соответствующий двоичный файл с docs.docker.com/machine/#installation . Двоичный файл для Mac можно скачать как:
    1
    2
    3
    4
    5
    6
    ~> 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
  2. Проверьте установку как:
    1
    2
    ~> docker-machine -v
    docker-machine version 0.1.0

Настройте хост Mac с помощью Docker Machine

  1. Docker Machine можно настроить для использования с несколькими драйверами, такими как Amazon Web Services, Google Compute Engine, Microsoft Azure и Oracle VirtualBox. На ноутбуке разработчика, Virtual Box — удобный вариант. Виртуальная коробка 4.3.20 является минимальным требованием. Поэтому убедитесь, что установлена ​​правильная версия.
  2. Создайте Docker Host с помощью провайдера VirtualBox и назовите компьютер как «mydocker». Прежде чем вызывать эту команду, убедитесь, что ssh-keygen находится в PATH. На Mac это уже находится в / usr / bin / ssh-keygen. В Windows это можно установить как часть Git Bash. Это можно сделать следующим образом:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    ~> 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.

  3. Найти IP-адрес машины как:
    1
    2
    ~> docker-machine ip
    192.168.99.101

    Запишите этот IP-адрес, он будет использоваться для доступа к приложению.

  4. Проверьте состояние работающей машины как:
    1
    2
    3
    ~> docker-machine ls
    NAME       ACTIVE   DRIVER       STATE     URL                         SWARM
    mydocker   *        virtualbox   Running   tcp://192.168.99.101:2376

    * В столбце ACTIVE указывает, что это активный хост.

  5. Проверьте окружение вновь созданной машины как:
    1
    2
    3
    4
    ~> 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. Настройте ваш клиент для общения с этим хостом как:
    1
    $(docker-machine env mydocker)

Запустите приложение Java на хосте

  1. Запустите приложение Java EE 7, описанное в практической лаборатории Java EE 7 на WildFly и Docker, на этом хосте:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    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)
  2. Откройте приложение по адресу 192.168.99.101:8080/movieplex7/ и оно выглядит следующим образом:

    techtip77-докер-машина-вывода

Команды докера

Полный список команд 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… .