2016-07-04 5 views
1

Я установил виртуальную машину ubuntu 14.04 и запустил докер (1.11.2). Я пытаюсь создать образ образца (here).Не удается (apt-get) установить пакеты внутри докеров

докер файл:

FROM java:8 

# Install maven 
RUN apt-get update 
RUN apt-get install -y maven 
.... 

Я получаю следующее сообщение об ошибке:

Step 3: RUN apt-get update 
--> Using cache 
--->64345sdd332 
Step 4: RUN apt-get install -y maven 
---> Running in a6c1d5d54b7a 
Reading package lists... 
Reading dependency tree... 
Reading state information... 
E: Unable to locate package maven 
INFO[0029] The command [/bin/sh -c apt-get install -y maven] returned a non-zero code:100 

enter image description here

следующие решения Я пытался, но не успех.

  1. restarted docker here

  2. run as apt-get -qq -y install curl here :same error :(

Как я могу просмотреть подробное сообщение об ошибке? a любой способ исправить проблему?

+0

может быть проблемой прокси? –

+3

У меня есть два комментария: 1) оба 'RUN [update | install]' должны быть в ** одинаковом ** 'RUN' для целей кеширования, 2) вы можете попробовать с помощью команды:' docker build --no-cache = true -t image_name. 'и скажите мне больше, пожалуйста. – Auzias

+0

спасибо за ваш ответ @Auzias, я пробовал ур предложения, но это также не работает для моего контекста. как упоминалось в ур ком, когда я запускаю без кеша, он показывает некоторые проблемы с подключением. (на самом деле проблема с прокси-сервером) даже установил прокси-сервер в coreos, и мне также пришлось установить прокси-сервер в файле докеров. –

ответ

2

вам может понадобиться обновить операционную систему внутри докер перед тем

пытаются запустить apt-get update первый, а затем apt-get install xxx

+0

Спасибо, я сделал так (как упоминалось в файле докеров). –

+0

похоже, что нет пакета «maven» для centos, вы должны установить вручную, используя rpm –

+0

Я использую Ubuntu 14.04, а не centos –

1

Кэшированное результат apt-get update может быть очень несвежим. Редизайн упаковки тянуть в соответствии с лучшими практиками Docker:

FROM java:8 

# Install maven 
RUN apt-get update \ 
&& DEBIAN_FRONTEND=noninteractive \ 
    apt-get install -y maven \ 
&& apt-get clean \ 
&& rm -rf /var/lib/apt/lists/* 
+0

спасибо за предложение ur, но это не решает мою проблему. –

1

На основе подобных вопросов, которые я имел, вы хотите и посмотреть на возможных проблемах сети и возможные проблемы, связанные с изображениями.

  • Проблемы с сетью: вы уже смотрите на прокси-связанные вещи. Удостоверьтесь, что установка iptables, сделанная автоматически докерером, не была запутана unintentionnaly самостоятельно или другим приложением. Как правило, если другой контейнер докеров работает с опцией net = host, это может вызвать проблемы.

  • Проблемы с изображением: дистрибутив, в котором вы работаете в контейнере, не Ubuntu 14.04, а тот, из которого был построен java: 8. Если вы взяли изображение java из официальной библиотеки на докере-хабе, у вас есть иерархия изображений, исходящих из Debian jessie. Возможно, вам захочется посмотреть другой файл Docker в этой иерархии, чтобы узнать, где настройка репо не та, на которую вы смотрите.

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

docker run -ti --rm 64345sdd332 /bin/bash 

Предоставляет оболочку непосредственно перед запуском команды установки maven.

+0

Первое, что верно, я запустил прокси-сервер –

0

Я в настоящее время работаю за прокси. он не смог загрузить некоторую зависимость. для этого вы должны указать конфигурацию прокси-сервера в файле докеров. ref

но, теперь я сталкиваюсь с трудностями для запуска "mvn", "dependency:resolve" из-за прокси-сервера, сам блок maven для загрузки некоторой зависимости и сборки не удалось.

благодарит приятелей за вашу большую поддержку!