Создание Docker образа

Помечено: 

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Автор
    Сообщения
  • #20632
    vladimirx
    Участник

    У меня возник вопрос как собрать docker образ из rapid scada (серверная часть)?
    При сборке возникает ошибка при выполнении команды «sudo apt install apt-transport-https dirmngr gnupg ca-certificates» :

    docker build . -t vladimirx/web_flutter_bin:scada
    [+] Building 3.0s (21/25)
    => [internal] load build definition from Dockerfile 0.0s
    => => transferring dockerfile: 2.10kB 0.0s
    => [internal] load .dockerignore 0.0s
    => => transferring context: 2B 0.0s
    => [internal] load metadata for docker.io/library/debian:latest 1.8s
    => [auth] library/debian:pull token for registry-1.docker.io 0.0s
    => [ 1/20] FROM docker.io/library/debian:latest@sha256:38988bd08d1a5534ae90bea146e199e2b7a8fca334e9a7afe5297a7c919e96ea 0.0s
    => [internal] load build context 0.1s
    => => transferring context: 110.88kB 0.1s
    => CACHED [ 2/20] RUN apt-get update 0.0s
    => CACHED [ 3/20] RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3 0.0s
    => CACHED [ 4/20] RUN apt-get clean 0.0s
    => CACHED [ 5/20] COPY build/ /usr/local/bin/app/build 0.0s
    => CACHED [ 6/20] COPY server/ /usr/local/bin/app/server 0.0s
    => CACHED [ 7/20] COPY rapid_scada/scada/ /opt/scada 0.0s
    => CACHED [ 8/20] COPY rapid_scada/daemons/ etc/init.d/ 0.0s
    => CACHED [ 9/20] COPY rapid_scada/apache/ /usr/local/bin/app/rapid_scada/apache 0.0s
    => CACHED [10/20] WORKDIR /usr/local/bin/app 0.0s
    => CACHED [11/20] RUN [«chmod», «ugo+rwx», «/opt/scada/ScadaWeb/config»] 0.0s
    => CACHED [12/20] RUN [«chmod», «ugo+rwx», «/opt/scada/ScadaWeb/log»] 0.0s
    => CACHED [13/20] RUN [«chmod», «ugo+rwx», «/opt/scada/ScadaWeb/storage»] 0.0s
    => CACHED [14/20] RUN [«chmod», «+x», «/opt/scada/make_executable.sh»] 0.0s
    => CACHED [15/20] RUN [«/opt/scada/make_executable.sh»] 0.0s
    => ERROR [16/20] RUN [«apt», «install», «apt-transport-https», «dirmngr», «gnupg», «ca-certificates»] 1.0s
    ——
    > [16/20] RUN [«apt», «install», «apt-transport-https», «dirmngr», «gnupg», «ca-certificates»]:
    #21 0.252
    #21 0.252 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    #21 0.252
    #21 0.275 Reading package lists…
    #21 0.719 Building dependency tree…
    #21 0.813 Reading state information…
    #21 0.920 ca-certificates is already the newest version (20210119).
    #21 0.920 ca-certificates set to manually installed.
    #21 0.920 The following additional packages will be installed:
    #21 0.920 gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf
    #21 0.921 gpgsm libassuan0 libksba8 libnpth0 pinentry-curses
    #21 0.922 Suggested packages:
    #21 0.922 dbus-user-session libpam-systemd pinentry-gnome3 tor parcimonie xloadimage
    #21 0.922 scdaemon pinentry-doc
    #21 1.000 The following NEW packages will be installed:
    #21 1.000 apt-transport-https dirmngr gnupg gnupg-l10n gnupg-utils gpg gpg-agent
    #21 1.000 gpg-wks-client gpg-wks-server gpgconf gpgsm libassuan0 libksba8 libnpth0
    #21 1.001 pinentry-curses
    #21 1.006 0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
    #21 1.006 Need to get 7821 kB of archives.
    #21 1.006 After this operation, 15.8 MB of additional disk space will be used.
    #21 1.006 Do you want to continue? [Y/n] Abort.
    ——
    executor failed running [apt install apt-transport-https dirmngr gnupg ca-certificates]: exit code: 1

    Как сделать, чтобы команда не задавала вопросы (автоматически отвечала Y)?

    Исходный код файла Dockerfile:

    # Install dependencies
    FROM debian:latest AS build-env
    RUN apt-get update
    RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3 psmisc
    RUN apt-get clean

    # Copy the app files
    COPY build/ /usr/local/bin/app/build
    COPY server/ /usr/local/bin/app/server

    COPY rapid_scada/scada/ /opt/scada
    COPY rapid_scada/daemons/ etc/init.d/
    COPY rapid_scada/apache/ /usr/local/bin/app/rapid_scada/apache

    WORKDIR /usr/local/bin/app

    # Scada

    RUN [«chmod», «ugo+rwx», «/opt/scada/ScadaWeb/config»]
    RUN [«chmod», «ugo+rwx», «/opt/scada/ScadaWeb/log»]
    RUN [«chmod», «ugo+rwx», «/opt/scada/ScadaWeb/storage»]

    RUN [«chmod», «+x», «/opt/scada/make_executable.sh»]
    RUN [«/opt/scada/make_executable.sh»]

    RUN [«apt», «install», «apt-transport-https», «dirmngr», «gnupg», «ca-certificates»]
    RUN [«apt-key», «adv», «—keyserver», «hkp://keyserver.ubuntu.com:80», «—recv-keys», «3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF»]

    RUN [«apt-key», «adv», «—keyserver», «hkp://keyserver.ubuntu.com:80», «—recv-keys», «3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF»]
    RUN [«echo», «\»deb https://download.mono-project.com/repo/debian stable-buster main\» | tee /etc/apt/sources.list.d/mono-official-stable.list»]

    RUN [«apt», «update»]

    RUN apt-get install mono-complete
    RUN service apache2 status
    RUN apt-get install apache2

    RUN apt-get install libapache2-mod-mono mono-apache-server4

    RUN ln -s /opt/scada/ScadaWeb /var/www/html/scada

    COPY rapid_scada/apache/ /etc/apache2/sites-available
    RUN a2ensite scada.conf

    RUN /opt/scada/svc_install.sh

    #20633
    Mikhail
    Модератор

    Тема про образ. Может быть автор темы @manjey73 сможет что-то посоветовать.

    • Этот ответ был изменен 2 года, 7 месяцев назад от Mikhail.
    #20634
    Mikhail
    Модератор

    Хотя указанная выше тема не касается docker, в ней речь идёт об образе диска.
    В общем, кто делал что-то подобное, напишите.

    #20636
    Mikhail
    Модератор

    Как сделать, чтобы команда не задавала вопросы (автоматически отвечала Y)?

    sudo apt-get install -y package-name

    • Этот ответ был изменен 2 года, 7 месяцев назад от Mikhail.
    #20638
    manjey73
    Участник

    @vladimirx Если честно, я слабо представляю, что такое docker 🙂

    Я так понимаю, это образ Linux, который можно запустить под Windows в режиме виртуализации?

    sudo apt install apt-transport-https dirmngr gnupg ca-certificates — это команда получения сертификата для установки MONO

    Вы используете конкретную версию ядра в docker?

    Есть еще момент, MONO при установке с сайта СОБИРАЕТ часть файлов, то есть оно там не просто копируется…. Может стоит создать Docker, а потом загрузиться в него и выполнить всю процедуру сборки и установки Mono и потом уже Scada ?

    • Этот ответ был изменен 2 года, 7 месяцев назад от manjey73.
    #27274
    artyras
    Участник

    Здравствуйте! Я создал образ для Rapidscada_6 https://hub.docker.com/repository/docker/artyras/rapid_scada_6/general
    Так как Рапидскада использует systemd, а Докер с ним не дружит, нужно использовать Podman (https://podman.io/) вместо Докера

    #27275
    artyras
    Участник

    Здравствуйте! Я создал образ для Rapidscada_6 https://hub.docker.com/repository/docker/artyras/rapidscada_6/general
    Так как Рапидскада использует systemd, а Докер с ним не дружит, нужно использовать Podman (https://podman.io/) вместо Докера

    PS пришлось удалить предыдущий репозиторий что бы поисковик докера видел запрос rapidscada

    #27278
    Mikhail
    Модератор

    Добрый день!

    Спасибо, полезно.
    Есть ли какие-то особенности настройки, связанные с доступом Коммуникатора из контейнера к контроллерам по TCP в режиме клиента и сервера?
    Есть ли инструкция по установке и работе?

    #27495
    artyras
    Участник

    Обновил инструкцию на hub.docker.com
    Но на всякий случай продублирую сюда

    Так как Рапидскада использует «systemd» для запуска контейнера нужно использовать Podman (https://podman.io/) вместо Docker. Синтаксис Podman такой же как и Docker, так что ни каких сложностей быть не должно. Но это не точно) Что бы запустить контейнер вводим команду:
    podman run —name rapidscada -p 8082:80 -p 10000:10000 -p 10002:10002 -p 10008:10008 docker.io/library/artyras/rapidscada_6
    podman exec -it rapidscada bash
    где: run — скачать и запустить
    —name задать свое имя для контейнера (по умолчанию будет абракадабра и тогда придется ее вводить для манипуляций контейнером)
    -p пробросить порт «хост:контейнер»
    exec выполнить команду в запущенном контейнере
    -it откроет доступ к tty
    bash запустит терминал

    Данные рекомендации по желанию: По умолчанию Podman нужно вводить полный адрес контейнера который необходимо скачать, пример: podman run quay.io/aminvakil/ubuntu22.04-systemd или в нашем случаи podman run docker.io/library/artyras/rapidscada_6. Чтобы для докера не вводить его полный адрес и была возможность совершить команду: podman login, нужно внести изменения в файл создав его: $HOME/.config/containers/registries.conf с содержанием: unqualified-search-registries = [«docker.io»] . Так же после таких манипуляций команду можно будет вводить так: podman run artyras/rapidscada_6

    #27509
    Mikhail
    Модератор

    Сервер, Коммуникатор и Агент можно собрать как обычные консольные приложения, не использующие systemd. Это упростит создание создание и работу с контейнерами?

    #27537
    artyras
    Участник

    Думаю что да, и скорее все после того как я окончательно разберусь с архитектурой Rapidscada, так оно и будет. Плюс ко всему думаю что в работающей диспетчеризации будет необходимость вынести журналирование и хранение данных в отдельный контейнер.
    К своему стыду хочу признаться, что еще даже из исходников не собирал проект, что уж тут говорить о понимании взаимодействий приложений между собой 🙂
    А сейчас столкнулся с тем, что не могу в новой версии рапидскада запустить Администратор через Wine. В итоговых влажных фантазия должно быть два контейнера с серверной частью и администратором 🙂

    #27546
    Mikhail
    Модератор

    При сборке из исходников в том числе будут собраны Сервер и Коммуникатор в виде консольных приложений. Сборка простая, инструкция в репозитории.

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

    #31241
    Mikhail
    Модератор

    Продолжаем тему про Docker-контейнеры.
    Собрал образ Rapid SCADA 6.2.0 для Linux семейства Debian.
    Чтобы запустить его, установите Docker и выполните команду:

    docker run -d --network=host 2mik/rapidscada:v6.2.0
    

    Как установить Docker, можно почитать здесь. Для просмотра журналов работы и передачи проекта, в Администраторе создайте профиль развёртывания, используйте IP-адрес хост-машины, TCP-порт 10002. Веб-интерфейс доступен на порту 10008.

    Прошу написать тех, кто попробует.

    #32074
    7in
    Участник

    Попробовал установить на Ubuntu 22.04 — всё встало с первого раза.
    Пока вроде проблем никаких нет

    #32079
    Mikhail
    Модератор

    Спасибо, что протестировали.
    Этот контейнер содержит вместе Сервер, Коммуникатор и Вебстанцию. Но идеология контейнеров заключается в том, чтобы каждый сервис работал в своём контейнере, и эти контейнеры взаимодействовали бы между собой. Поэтому образ выше рекомендую использовать в качестве демо, которое можно быстро развернуть.

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