создать образ докера, который может использовать LLVM для компиляции проектов ROS - PullRequest
0 голосов
/ 27 декабря 2018

Я намерен создать образ Docker, который мог бы использовать LLVM для компиляции кода проекта ROS.Согласно официальному документу Докера https://docs.docker.com/config/containers/multi-service_container/, лучше избегать нескольких услуг в одном контейнере.LLVM и ROS получили свой Docker Image, как объединить эти два в один и отправить его вместе?

1 Ответ

0 голосов
/ 30 декабря 2018

У вас есть несколько доступных стратегий:

Объединение Dockerfile s

Если у вас есть доступ к обоим Dockerfile с, попробуйте объединитьсодержание в нем в один Dockerfile.Вам придется выбрать одну FROM инструкцию, но другие инструкции можно комбинировать по вашему выбору.

Замените FROM на одну

Если у вас есть доступ к только один Dockerfile, затем попробуйте изменить его инструкцию FROM для наследования от другого изображения.Например, изображение ros:kinetic-ros-core-xenial наследуется от ubuntu:xenial;попробуйте изменить его для наследования, скажем, от reaverproject/llvm.

ADD обоих тарболов

Если у вас есть доступ к ни Dockerfile, то выпридется немного перепроектировать.Начните с создания контейнера «noop» для каждого изображения и export создания из него архива файловой системы.То есть, делайте ...

$ docker container run --name noop-foobar foobar sh -c 'exit 0'
$ docker container export --output foobar.tar noop-foobar
$ docker container rm noop-foobar

... заменяя "foobar" по необходимости.

После того, как вы экспортировали оба архива файловой системы, создайте "базовый образ" с помощью ADD ingих в scratch изображение:

FROM scratch
ADD llvm.tar
ADD ros.tar
...

Весьма вероятно, что вам придется вручную разрешать конфликты между архивами файловой системы, чтобы базовое изображение работало должным образом.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...