2014-12-16 3 views
0

Я пытаюсь установить java из файла rpm в изображение докеры centos.Как запустить команду COPY и RUN в том же контейнере?

> Step 0 : FROM centos:latest 
---> **34943839435d** 
Step 1 : COPY . jdk-6u45-linux-x64-rpm.bin 
---> **2055e5db6ae9** 
Removing intermediate container 7ae13aaa4424 
Step 2 : RUN chmod +x jdk-6u45-linux-x64-rpm.bin &&  sh jdk-6u45-linux-x64-rpm.bin 
---> Running in **c4d6b63576bc** 
jdk-6u45-linux-x64-rpm.bin: jdk-6u45-linux-x64-rpm.bin: is a directory 
2014/12/16 06:03:34 The command [/bin/sh -c chmod +x jdk-6u45-linux-x64-rpm.bin && sh jdk-6u45-linux-x64-rpm.bin] returned a non-zero code: 126 

Ошибка, которую она дает, по-видимому, связана с различными контейнерами. Как запустить команду на одном контейнере?

Docker файл, как показано ниже

FROM centos:latest 

# Install Java. 
COPY . jdk-6u45-linux-x64-rpm.bin 

RUN chmod +x jdk-6u45-linux-x64-rpm.bin && \ 
     sh jdk-6u45-linux-x64-rpm.bin 

ответ

2

Синтаксис COPY выглядит следующим образом:

COPY <src>... <dest> 

Так COPY . jdk-6u45-linux-x64-rpm.bin значит скопировать текущий каталог jdk-6u45-linux-x64-rpm.bin. Отсюда и ошибка.

Это должно дать вам то, что вы хотите:

COPY jdk-6u45-linux-x64-rpm.bin jdk-6u45-linux-x64-rpm.bin 
+0

моей глупой. спасибо .. :) –

+0

Добро пожаловать. – zero323

0

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

Вот пример очень похожий файл докер, который строит и работает правильно (Кстати, нет необходимости в/бен/ш -c, так как это именно то, что делает команда запуска)

FROM centos:latest 

COPY test.bin /root/ 
RUN /bin/sh -c "chmod +x /root/test.bin" 

Для получения дополнительной информации о команде запуска см https://docs.docker.com/reference/builder/#run

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