Следующий пост слишком длинный, пожалуйста, наберитесь терпения при прохождении
Привет, я новичок в докере и ддс.
Я создаюпростой код с использованием rti-dds и docker. Код предоставит мне два файла exe, один для публикации данных, а другой для подписки данных.
Я хочу использовать «С нуля» в моем Dockerfile, так как мне не нужны ни bash, ни какие-либо ОС.
Теперь, если я использую FROM scratch, нужно ли мне, чтобы мои exes статически собирались с флагом g ++ -static или это можно было делать динамически, то есть без статического флага.
Какой из них предпочтительнее илиесть ли к нему правило?
Docker Verion
Клиент: Docker Engine - Сообщество
Версия: 19.03.2
Версия API:1.40
Go версия: go1.12.8
Git commit: 6a30dfc
Построен: чт 29 августа 05:29:11 2019
OS / Arch: linux / amd64
Экспериментальный: false
Dockerfile при сборке exe-файлов с флагом -static
FROM scratch
COPY rti_license.dat /
COPY USER_QOS_PROFILES.xml /
COPY /objs/x64Linux3gcc4.8.2/DynamicTest_publisher /
COPY /objs/x64Linux3gcc4.8.2/DynamicTest_subscriber /
CMD ["/DynamicTest_publisher"]
Образ докера успешно собирается и запускается без ошибок
НО
Dockerfile при динамическом построении исполняемых файлов (без статического флага)
вычисление всех зависимостей, которые должны быть скопированы, а также проверка зависимостей с использованием
ldd на exe
FROM scratch
COPY rti_license.dat /
COPY USER_QOS_PROFILES.xml /
COPY /lib/x86_64-linux-gnu/libdl.so.2 /
COPY /lib/x86_64-linux-gnu/libnsl.so.1 /
COPY /lib/x86_64-linux-gnu/libpthread.so.0 /
COPY /lib/x86_64-linux-gnu/librt.so.1 /
COPY /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /
COPY /lib/x86_64-linux-gnu/libc.so.6 /
COPY /lib/x86_64-linux-gnu/libgcc_s.so.1 /
COPY /objs/x64Linux3gcc4.8.2/DynamicTest_publisher /
COPY /objs/x64Linux3gcc4.8.2/DynamicTest_subscriber /
COPY /lib64/ld-linux-x86-64.so.2 /
CMD ["/DynamicTest_publisher"]
Создание образа докера
docker build --tag dynamictest .
Но когда я пытаюсь запустить это, я получаю следующую ошибку
docker run --rm -it dynamictest
Ошибка
standard_init_linux. go: 211: пользовательский процесс exec вызвал «нет такого файла или каталога
Итак, я что-то здесь упускаю или это« ОТ нуля работает только со статическими сборками »