2016-03-10 3 views
1

У меня есть сценарий оболочки, который запускает программу Python для предварительной обработки некоторых данных, а затем запускает программу R, которая выполняет на ней какую-то длительную задачу. Я учусь использовать Докер и я бегуЗапуск сценария оболочки, который запускает программу python, затем программу R

FROM r-base:latest 
FROM python 
COPY . /usr/local/src/scripts 
WORKDIR /usr/local/src/scripts 
CMD ["./myscript.sh"] 

В моем понимании это делает следующее:

  1. Get R
  2. Получить Python
  3. Скопируйте мой текущий каталог /usr/local/src/scripts
  4. Сменить каталог на /usr/local/src/scripts
  5. Пробег ./myscript.sh

Внутри myscript.sh Я использую синтаксис R CMD ... для запуска моего сценария R. Однако, при запуске этого докер изображение, которое я получаю следующее сообщение об ошибке:

./myscript.sh: line 8: R: command not found 

Это говорит о том, что сценарий, при запуске внутри контейнера, не распознает программу R. Я могу подтвердить, что ./myscript.sh работает локально, но я не могу открыть какой-либо проприетарный код.

ответ

1

Команда FROM устанавливает базовое изображение, на котором строится ваш файл Dockerfile. У вас должен быть только один из них. После этого, если вам нужны дополнительные инструменты, которые не входят в базовый образ, запускать команды, которые используют платформы зависит от менеджеров пакетов, таких как

RUN apt-get update && apt-get install -y \ 
    package-foo \ 
    package-bar 

Это было бы для Debian на основе изображения, таких как Ubuntu.

+0

Большое вам спасибо! У меня есть пара наблюдений: 1. Какова ОС по умолчанию, используемая контейнером Docker? 2. Не было бы много места, чтобы иметь несколько установок Ubuntu, если у меня было несколько изображений? – Carpetfizz

+0

Это зависит от вас, какую ОС использует контейнер. Хорошим базовым образцом по умолчанию для многих случаев использования является Ubuntu: FROM ubuntu –

+0

Для вашего второго вопроса эти изображения занимают удивительно небольшое пространство. Думайте о них как о лоботомизированных изображениях, они делят много ресурсов с хост-системой (ваш компьютер) и строятся с нуля, чтобы быть легкими. В отличие от VM, вы даже не заметите, какое пространство занимает изображение во многих случаях. Не забудьте принять мой ответ, если вы думаете, что это помогло! :) –

Смежные вопросы