Итак, если кому пригодится - выкладываю рабочий способ запустить актуальную на текущий момент (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