Есть три способа справиться с такой проблемой.
Вы можете построить nix
статически; тогда ему не понадобится динамический компоновщик -во время выполнения, и он будет работать практически везде. (Это также прекрасно решает проблемы совместимости библиотек.)
Вы можете собрать nix
несколько раз, по одному разу для каждой целевой libc — реально, на Linux, GNU libc и musl(может быть также и dietlibc ). Это даст вам двоичные файлы, которые вы можете использовать по мере необходимости в зависимости от libc целевой среды. Не знаю насчет Alpine Linux, но это возможно например на Debian; вы должны собрать с помощью компилятора по умолчанию для сборки с GNU libc, установить пакет musl-dev
и собрать с помощью musl-gcc
для целевого musl.
Вы можете указать зависимости любого бинарного файла, который вы собираетесь собрать, и установить его в целевой среде. Например, двоичный файл на основе musl -, построенный на Alpine, будет легче запускать на производной от Debian, если вы установите туда пакет musl
.
Можете ли вы попробовать использовать следующий формат для создания:
docker run -it --mount type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH> --mount type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH> -p host_port:container_port --name myservice <IMAGE>
Редактировать:Команда создания была отредактирована
Вышеизложенное сработало для меня:
docker run -ti --mount type=volume,src=cust_vol2,dst=/cust_vol2 --mount type=volume,src=cust_vol1,dst=/cust_vol1 -p 8024:8024 --name mycontainer centos
$docker inspect mycontainer
"Mounts": [
{
"Type": "volume",
"Source": "cust_vol2",
"Target": "/cust_vol2"
},
{
"Type": "volume",
"Source": "cust_vol1",
"Target": "/cust_vol1"
}
]
и предоставить подробный вывод, если это возможно.