Задать вопрос
Mikname
@Mikname

Как пробросить Rutoken в Docker контейнер?

Всем привет,
В компании скопилось большое количество токенов для системы ЕГАИС, размещать на отдельных компьютерах уже неудобно как и постоянно переключаться. Решил попробовать изолировать с помощью Docker этот сервис.

Второй день пытаюсь пробросить rutoken в Docker контейнер чтобы поднять UTM для ЕГАИС.
Как usb устройство вижу как rutoken нет, ставил библиотеки и драйвера использовал и контейнер для eToken, пытался пробросить и в -priveleged и device. бесполезно слот пустой.
Кто нибудь такое делал?
  • Вопрос задан
  • 3029 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
Mikname
@Mikname Автор вопроса
Под Centos не пробросился под 18 убунтой всё заработало.
Спасибо за внимание!

docker run -it -p 8080:8080 -d --rm --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
deepblack
@deepblack
Как насчет гипервизора ESXi?
Там правда свои нюансы есть.

https://dev.rutoken.ru/display/KB/RU1033
Ответ написан
@Angryadmin
Итак, если кому пригодится - выкладываю рабочий способ запустить актуальную на текущий момент (11.02.25) версию УТМ в Докере

Dockerfile
# Базовый образ с поддержкой systemd
FROM ubuntu:20.04

# Установка часового пояса
RUN ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime && \
    echo "Europe/Moscow" > /etc/timezone

# Обновление системы и установка необходимых пакетов
RUN dpkg --add-architecture i386 \
    && apt-get update && apt-get install -y \
    libc6:i386 \
    libncurses5:i386 \
    libstdc++6:i386 \
    libpcsclite1:i386 \
    curl \
    pcsc-tools \
    usbutils \
    supervisor \
    acl \
    wget \
    unzip \
    libusb-1.0-0 \
    libpcsclite1 \
    pcscd \
    opensc \
    python3 \
    python3-pip \
    software-properties-common \
    && apt-get clean

# Установка переменных окружения (исправленный формат)
ENV INIT_SYSTEMD=yes
ENV DEBUG=true

RUN mkdir -p /var/log/supervisor /var/run/supervisor

# Копирование DEB-пакета в контейнер
COPY /Docker/UTM/dist/u-trans-4.2.0-2632-i386.deb /tmp/u-trans.deb

# Установка DEB-пакета
RUN dpkg -i /tmp/u-trans.deb || (apt-get install -f -y && dpkg -i /tmp/u-trans.deb) \
    && rm /tmp/u-trans.deb \
    || true

# Копирование конфигурации supervisor
COPY supervisord.conf /etc/supervisor/supervisord.conf

# Копирование конфигурации программы UTM
COPY transport.conf /etc/supervisor/conf.d/transport.conf

# Копирование конфигурации pcscd
COPY pcscd.conf /etc/supervisor/conf.d/pcscd.conf

# Настройка автозапуска служб
RUN systemctl enable pcscd

# Экспорт порта 8080 для веб-интерфейса
EXPOSE 8080

# Запуск Supervisorctl при старте контейнера
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

Файлы
supervisord.conf
; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf


transport.conf
[program:utm]
command=/opt/utm/transport/bin/transport.sh
#process_name=%(process_num)s
autostart=true
autorestart=true
stderr_logfile=/var/log/utm-trans.err.log
stdout_logfile=/var/log/utm-trans.out.log
redirect_stderr=true
numprocs=1


pcscd.conf
[program:pcscd]
command=/usr/sbin/pcscd --foreground --auto-exit
autostart=true
autorestart=true
stderr_logfile=/var/log/pcscd.err.log
stdout_logfile=/var/log/pcscd.out.log


Собираем образ командой
docker build --no-cache -t utm .

Запускаем контейнер командой
docker run -d   --name utm-container   -p 8080:8080   --device=/dev/bus/usb/003/003   utm

где - /dev/bus/usb/003/003 необходимо поменять на свои значения посмотрев их при помощи lsusb
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 до 120 000 ₽
Сбер Москва
от 450 000 до 550 000 ₽
ИТРУМ Ростов-на-Дону
от 75 000 ₽