25.09.2021

Начало работы с docker

  • Эта тема пуста.
Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #1445
    Аноним
    Неактивированный

    Docker это среда легковесных контейнеров, работающих на Linux, что выглядит как очень экономная версия пакета Vagrant.

    [attachment=0]Без названия.png[/attachment]

    Пакет Vagrant предназначен для создания и конфигурирования виртуальной среды разработки и является обёрткой, дополняющей некоторое средство виртуализации, например, VirtualBox. Поэтому справедливо сравнивать Docker с Vagrant, но только в той части, которая касается подготовки и настройки контейнерных сред.

    Docker отличается от Vagrant.

    Установка


    В Linux это выполняется онлайновой командой yum/apt. Но, я работаю на Mac. В некоторых руководствах для Mac для установки Docker используется Vagrant.

    Но Docker может работать более прозрачно при помощи boot2docker:

    Code:

    brew install boot2docker
    boot2docker init
    boot2docker up
    export DOCKER_HOST=tcp://localhost:4243


    Теперь вы должны иметь возможность проверить версию:

    Code:

    docker version


    Ваш первый контейнер

    Шаги, которые описываются в каждом руководстве и которые я буду здесь использовать:

    1. Создаем базовый образ из какого-нибудь из главных образов Linux.

    2. Устанавливаем некоторые зависимости и ваше приложение.

    3. Открываем порт приложения.

    4. Сохраняем.

    Для начала я создал простое приложение, которое может быть запущено из командной строки:

    git clone https://github.com/alexec/dropwizard-helloworld.git

    mvm package

    Создаем файл Dockerfile в каталоге проекта:

    FROM centos

    RUN yum -y install java-1.7.0-openjdk-devel.x86_64

    ADD target/dropwizard-helloworld-1.0-SNAPSHOT.jar /

    ADD hello-world.yml /

    CMD [«java», «-jar», «dropwizard-helloworld-1.0-SNAPSHOT.jar», «server», «hello-world.yml»]

    EXPOSE 8080

    Файл Dockerfile — это все в одном рецепте, все шаги будут выполнены следующем образом:

    docker build .

    Когда работа будет завершена, то будет выдан хэш образа, который был построен:

    Successfully built a3e6a912822c

    Важно понимать, что есть большое различие между хешем образа и контейнера. Они выглядят одинаково, и поскольку команды, которые, как вы ожидаете, должны выдавать ID контейнера, иногда выдают ID образа.

    Запускаем:

    Code:

    docker run -i -P a3e6a912822c


    Обратите внимание на параметр -P, с помощью которого осуществляется проброс порта из хостовой ОС в контейнер. Какой это порт? Это не тот порт (8080), который вы бы могли бы ожидать. Docker выбирает для вас случайный порт, и вы можете посмотреть, что это за порт:

    Code:

    $ docker ps


    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    67079fc70d31 a3e6a912822c java -jar dropwizard 9 days ago Up About a minute 0.0.0.0:49155->8080/tcp compassionate_tesla

    Поскольку я запускаю Docker внутри виртуальной машины (поскольку нахожусь на OS-X), мне нужно настроить проброс порта из моего компьютера в VirtualBox, для этого используется boot2docker:

    Code:

    VBoxManage controlvm boot2docker-vm natpf1 «49155,tcp,127.0.0.1,49155,,49155»

    Но это несколько сложнее! И нам каждый раз нужно выяснить, какой используется порт! Давайте сделаем это по-другому.

    Code:

    docker run -i -p 8080:8080 a3e6a912822c

    Параметр -p отображает порт контейнера в порт хост-системы.

    $

    Code:

    docker ps


    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    c975a2628b03 a3e6a912822c java -jar dropwizard 2 weeks ago Up 5 seconds 0.0.0.0:8080->8080/tcp condescending_bardeen

    Теперь он работает на порту 8080. Мы можем легко настроить проброс порта, если мы находимся на OS-X:

    VBoxManage controlvm boot2docker-vm natpf1 «8080,tcp,127.0.0.1,8080,,8080»

    Вы можете проверить это в вашем браузере по ссылке http://localhost:8080/hello-world

    Совет: Действительно полезная команда отладки (похожа на команду vagrant ssh):

    docker run -i -t a3e6a912822c bash

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Для ответа в этой теме необходимо авторизоваться.