Published 17 May 2019

Использование ПО Credits в Docker

Описание

Описание

Целью данной статьи является демонстрация использования Docker и ПО CREDITS. ПО CREDITS состоит из файлов настройки и трех модулей: Wallet Desktop (кошелек пользователя), contract-executor (выполнений смарт-контратков) и модуля узла.

В контейнере Docker-а мы будем использовать Wallet Desktop и contract-executor.

Компоненты

Компоненты

Docker - программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему, а также предоставляет среду по управлению контейнерами.

Portainer - самый популярный веб-интерфейс для работы с Docker-хостами и кластерами Docker Swarm. Запускается развёртыванием Docker-образа, которому в качестве параметра передаётся адрес/сокет Docker-хоста. Позволяет управлять контейнерами, образами (умеет забирать их из Docker Hub), сетями, томами.

Установка компонентов

Установка компонентов

Docker

Установка в Windows. Страница загрузки.

Установка в Linux выполняется с помощью Advanced Packaging Tool (apt). Команды установки:

sudo apt-get update

sudo apt-get install \
   apt-transport-https \
   ca-certificates \
   curl \
   software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

sudo apt-get update

sudo apt-get install docker-ce

Portainer

Установка выполняется одинаково в обоих ОС, за исключением в Linux необходимо добавлять команду sudo:

Windows:

docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Linux:

sudo docker volume create portainer_data
sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Два в одном

Два в одном

Для запуска в контейнере одновременно Wallet Desktop и contract-executor будем использовать простую программу на C++, код, назовем файл runner.cpp:

Команда сборки:

g++ -pthread runner.cpp  -o runner

сборка должна осуществляться на компьютере с ОС Linux.

Создание файла скрипта Dockerfile и образа

Создание файла скрипта Dockerfile и образа

FROM ubuntu:18.04

# update && java 8 install

RUN apt-get update && \

apt-get upgrade -y && \

apt-get install -y software-properties-common && \

add-apt-repository ppa:webupd8team/java -y && \

apt-get update && \

echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \

apt-get install -y oracle-java8-installer && \

apt-get clean

# setup worker dir

WORKDIR /credits

# copy all files from current dir to ./credits

COPY . /credits

# ports

EXPOSE 6000

EXPOSE 9090

# run

CMD ["./runner"]

Каталог, в котором находится файл Dockerfile необходимо положить распакованный архив ПО CREDITS (Release 2.2). В случае сборки образа в ОС Linux файлы: ./client и ./runner должны быть помечена как запускаемые:

chmod +x client

chmod +x runner

Команда сборки образа: docker build -t credits .

Запуск контейнера из созданного образа

Запуск контейнера из созданного образа

Заметка: при запуске из ОС Linux необходимо добавить команду sudo.

Для создания контейнера из собранного образа используем команду:

docker volume create test_db - создание тома, где будет храниться БД

docker run -it -p 6000:6000 -p 9090:9090 --mount source=db,target=/credits/test_db credits:latest bash

запуск с контейнера

Проверка успешности запуска - команда ./runner:

при первичном запуске будет предложено сгенерировать новый ключ.

Рисунке видно, что запущен в контейнере client (узел) и contract-executor.

Теперь на хостовой машине можно запустить только кошелек пользователя Desktop Wallet.

Заметка: контейнер может быть запущен удаленно в любом месте, например, в Azure.

Votes 0, average rating 0

Contents