Версия:

Использование Docker-образа

Использование Docker-образа

For trial and test purposes, we recommend using official Tarantool images for Docker. An official image contains a particular Tarantool version (1.6, 1.9, 1.10 or 2.0) and all popular external modules for Tarantool. Everything is already installed and configured in Linux. These images are the easiest way to install and use Tarantool.

Примечание

Если вы никогда раньше не работали с Docker, рекомендуем сперва прочитать эту обучающую статью.

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

Если Docker не установлен на вашей машине, следуйте официальным инструкциям по установке для вашей ОС.

Для использования полнофункционального экземпляра Tarantool’а запустите контейнер с минимальными настройками:

$ docker run \
  --name mytarantool \
  -d -p 3301:3301 \
  -v /data/dir/on/host:/var/lib/tarantool \
  tarantool/tarantool:1

This command runs a new container named „mytarantool“. Docker starts it from an official image named „tarantool/tarantool:1“, with Tarantool version 1.9 and all external modules already installed.

Tarantool будет принимать входящие подключения по адресу localhost:3301. Можно сразу начать его использовать как key-value хранилище.

Tarantool сохраняет данные внутри контейнера. Чтобы ваше тестовые данные остались доступны после остановки контейнера, эта команда также монтирует директорию /data/dir/on/host (здесь необходимо указать абсолютный путь до существующей локальной директории), расположенную на машине, в директорию /var/lib/tarantool (Tarantool традиционно использует эту директорию в контейнере для сохранения данных), расположенную в контейнере. Таким образом все изменения в смонтированной директории, внесенные на стороне контейнера, также отражаются в расположенной на пользовательском диске директории.

Модуль Tarantool’а для работы с базой данных уже настроен и запущен в контейнере. Ручная настройка не требуется, если только вы не используете Tarantool как сервер приложений и не запускаете его вместе с приложением.

Подключение к экземпляру Tarantool’а

Для подключения к запущенному в контейнере экземпляру Tarantool’а, выполните эту команду:

$ docker exec -i -t mytarantool console

Эта команда:

  • Требует от Tarantool’а открыть порт с интерактивной консолью для входящих подключений.
  • Подключается через стандартный Unix-сокет к Tarantool-серверу, запущенному внутри контейнера, из-под пользователя „admin’.

Tarantool показывает приглашение командной строки:

tarantool.sock>

Теперь вы можете вводить запросы в командной строке.

Примечание

На боевых серверах интерактивный режим Tarantool’а предназначен только для системных администраторов. Мы же используем его в большинстве примеров в данном руководстве, потому что интерактивный режим хорошо подходит для обучения.

Создание базы данных

Подключившись к консоли, давайте создадим простую тестовую базу данных.

Сначала создайте первый спейс (с именем „tester“):

tarantool.sock> s = box.schema.space.create('tester')

Форматируйте созданный спейс, указав имена и типы полей:

tarantool.sock> s:format({
                    > {name = 'id', type = 'unsigned'},
                    > {name = 'band_name', type = 'string'},
                    > {name = 'year', type = 'unsigned'}
                    > })

Создайте первый индекс (с именем „primary’):

tarantool.sock> s:create_index('primary', {
                    > type = 'hash',
                    > parts = {'id'}
                    > })

Это первичный индекс по полю „id“ в каждом кортеже.

Вставьте в созданный спейс три кортежа (наш термин для «записей»):

tarantool.sock> s:insert{1, 'Roxette', 1986}
      tarantool.sock> s:insert{2, 'Scorpions', 2015}
      tarantool.sock> s:insert{3, 'Ace of Base', 1993}

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

tarantool.sock> s:select{3}

Теперь вывод в окне терминала выглядит следующим образом:

tarantool.sock> s = box.schema.space.create('tester')
      ---
      ...
      tarantool.sock> s:format({
                    > {name = 'id', type = 'unsigned'},
                    > {name = 'band_name', type = 'string'},
                    > {name = 'year', type = 'unsigned'}
                    > })
      ---
      ...
      tarantool.sock> s:create_index('primary', {
                    > type = 'hash',
                    > parts = {'id'}
                    > })
      ---
      - unique: true
        parts:
        - type: unsigned
          is_nullable: false
          fieldno: 1
        id: 0
        space_id: 512
        name: primary
        type: HASH
      ...
      tarantool.sock> s:insert{1, 'Roxette', 1986}
      ---
      - [1, 'Roxette', 1986]
      ...
      tarantool.sock> s:insert{2, 'Scorpions', 2015}
      ---
      - [2, 'Scorpions', 2015]
      ...
      tarantool.sock> s:insert{3, 'Ace of Base', 1993}
      ---
      - [3, 'Ace of Base', 1993]
      ...
      tarantool.sock> s:select{3}
      ---
      - - [3, 'Ace of Base', 1993]
      ...

Для добавления вторичного индекса по полю „band_name“ используйте эту команду:

tarantool.sock> s:create_index('secondary', {
                    > type = 'hash',
                    > parts = {'band_name'}
                    > })

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

tarantool.sock> s.index.secondary:select{'Scorpions'}
      ---
      - - [2, 'Scorpions', 2015]
      ...

Остановка контейнера

После завершения тестирования для корректной остановки контейнера выполните эту команду:

$ docker stop mytarantool

Это был временный контейнер, поэтому после остановки содержимое его диска/памяти обнулилось. Но так как вы монтировали локальную директорию в контейнер, все данные Tarantool’а сохранились на диске вашей машины. Если вы запустите новый контейнер и смонтируете в него ту же директорию с данными, Tarantool восстановит все данные с диска и продолжит с ними работать.