Ошибка сборки Docker java api maven: busybox — это нераспознанный образ. Сначала вытащите изображение

Я пытаюсь создать Java API для docker, клонировав его из репозитория git, а затем построение с использованием maven следующим образом:

mvn clean install -DskipTests=false -Ddocker.io.username=username -Ddocker.io.password=password [email protected]

Однако тест сборки завершается неудачно, что приводит к следующему сообщению об ошибке:

Results :

Failed tests: 
  testRunShlex(com.github.dockerjava.client.DockerClientTest): busybox is an unrecognized image. Please pull the image first.
  testAuth(com.github.dockerjava.client.command.AuthCmdTest): com.sun.jersey.api.client.UniformInterfaceException: Client response status: 404
  testAuthInvalid(com.github.dockerjava.client.command.AuthCmdTest): expected:<401> but was:<404>
  testAddAndCopySubstitution(com.github.dockerjava.client.command.BuildImageCmdTest): 
  testDockerBuilderAddFileInSubfolder(com.github.dockerjava.client.command.BuildImageCmdTest): 
  testDockerBuilderAddFolder(com.github.dockerjava.client.command.BuildImageCmdTest): 
  testDockerBuilderAddUrl(com.github.dockerjava.client.command.BuildImageCmdTest): 
  testNetCatDockerfileBuilder(com.github.dockerjava.client.command.BuildImageCmdTest): 
  testNginxDockerfileBuilder(com.github.dockerjava.client.command.BuildImageCmdTest): 
  commit(com.github.dockerjava.client.command.CommitCmdTest): busybox is an unrecognized image. Please pull the image first.
  testDiff(com.github.dockerjava.client.command.ContainerDiffCmdTest): busybox is an unrecognized image. Please pull the image first.
  copyFromContainer(com.github.dockerjava.client.command.CopyFileFromContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  createContainerWithEnv(com.github.dockerjava.client.command.CreateContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  createContainerWithHostname(com.github.dockerjava.client.command.CreateContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  createContainerWithVolume(com.github.dockerjava.client.command.CreateContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  info(com.github.dockerjava.client.command.InfoCmdTest): busybox is an unrecognized image. Please pull the image first.
  testKillContainer(com.github.dockerjava.client.command.KillContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  testListContainers(com.github.dockerjava.client.command.ListContainersCmdTest): Client response status: 404
  listImages(com.github.dockerjava.client.command.ListImagesCmdTest)
  logContainer(com.github.dockerjava.client.command.LogContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  testPullImage(com.github.dockerjava.client.command.PullImageCmdTest): com.sun.jersey.api.client.UniformInterfaceException: Client response status: 404
  testNotExistentImage(com.github.dockerjava.client.command.PushImageCmdTest): 
  testPushLatest(com.github.dockerjava.client.command.PushImageCmdTest): busybox is an unrecognized image. Please pull the image first.
  removeContainer(com.github.dockerjava.client.command.RemoveContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  testRemoveImage(com.github.dockerjava.client.command.RemoveImageCmdTest): busybox is an unrecognized image. Please pull the image first.
  restartContainer(com.github.dockerjava.client.command.RestartContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  searchImages(com.github.dockerjava.client.command.SearchImagesCmdTest): com.sun.jersey.api.client.UniformInterfaceException: Client response status: 404
  startContainer(com.github.dockerjava.client.command.StartContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  startContainerWithLinking(com.github.dockerjava.client.command.StartContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  startContainerWithPortBindings(com.github.dockerjava.client.command.StartContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  startContainerWithVolumes(com.github.dockerjava.client.command.StartContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  testStopContainer(com.github.dockerjava.client.command.StopContainerCmdTest): busybox is an unrecognized image. Please pull the image first.
  testTagImage(com.github.dockerjava.client.command.TagImageCmdTest): 
  version(com.github.dockerjava.client.command.VersionCmdTest): com.sun.jersey.api.client.UniformInterfaceException: Client response status: 404
  testWaitContainer(com.github.dockerjava.client.command.WaitContainerCmdTest): busybox is an unrecognized image. Please pull the image first.

Tests run: 35, Failures: 35, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.

Вставил полный вывод здесь.

Я попытался вытащить образ busybox из концентратора докеров, используя:

sudo docker pull busybox

и это приводит к следующему сообщению:

Pulling repository busybox
fd5373b3d938: Download complete 
d200959a3e91: Download complete 
37fca75d01ff: Download complete 
a9eb17255234: Download complete 
511136ea3c5a: Download complete 
42eed7f1bf2a: Download complete 
120e218dd395: Download complete 
f06b02872d52: Download complete 
c120b7cab0b0: Download complete 
1f5049b3536e: Download complete 

который, как я предполагаю, успешно загружает образ busybox. Однако попытка перестроить Java API приводит к тому же сообщению об ошибке.

Как я могу решить эту проблему и успешно создать Java API?


Характеристики системы:

Хост-машина: Ubuntu 14.04 Trusty Tahr LTS

Вывод sudo docker version:

Client version: 0.9.1
Go version (client): go1.2.1
Git commit (client): 3600720
Server version: 0.9.1
Git commit (server): 3600720
Go version (server): go1.2.1
Last stable version: 1.1.2, please update docker

person jobin    schedule 19.08.2014    source источник


Ответы (1)


Java API настроен для работы с Docker 1.1, попробуйте обновить Docker.

Клиент Java API для Docker

Поддерживает подмножество Docker Client API v1.13, Docker Server версии 1.1.

Форум разработчиков для docker-java

Ознакомьтесь с инструкцией на официальном сайте: https://docs.docker.com/installation/ubuntulinux/#ubuntu-trusty-1404-lts-64-bit

Убедитесь, что у вас есть openjdk для разработки.

sudo apt-get install openjdk-7-jdk

Затем измените переменную среды JAVA_HOME, чтобы она указывала на /usr/lib/jvm/java-7-openjdk-amd64/

Вы используете JRE, которая не предназначена для этой цели и кажется ошибочной.

person Regan    schedule 19.08.2014
comment
Попытка обновления произойдет, как только оно будет завершено. Спасибо! :) - person jobin; 19.08.2014
comment
Обновил по инструкции по указанной вами ссылке, но сообщение об ошибке осталось прежним. Однако вывод sudo docker version теперь: Client version: 1.1.2 Client API version: 1.13 Go version (client): go1.2.1 Git commit (client): d84a070 Server version: 1.1.2 Server API version: 1.13 Go version (server): go1.2.1 Git commit (server): d84a070 - person jobin; 19.08.2014
comment
@ i08in Я клонировал репозиторий git. И построили без проблем. Правильно ли настроена ваша переменная среды JAVA_HOME? Обновлены ли ваши файлы maven и java? - person Regan; 19.08.2014
comment
да, JAVA_HOME установлено значение /usr/lib/jvm/java-7-openjdk-amd64/, а версия maven — Apache Maven 2.2.1 (rdebian-14) Java version: 1.7.0_55 Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux" version: "3.13.0-34-generic" arch: "amd64" Family: "unix", java — java version "1.7.0_55" OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1) OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode), а версия javac — javac 1.7.0_55. - person jobin; 19.08.2014
comment
Я обнаружил, что у меня установлен maven 2, обновил его до 3.0.5, но ошибка все еще остается. Я также заметил, что в начале вывода появляется предупреждение: [WARNING] The POM for org.apache.httpcomponents:httpclient:jar:4.1.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details [WARNING] The POM for com.sun.jersey:jersey-client:jar:1.9 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details. - person jobin; 19.08.2014
comment
Спасибо Риган! Мне пришлось вытащить несколько банок вручную, так как он жаловался на недопустимый POM, а также, как вы сказали, я изменил переменную JAVA_HOME и перезапустил систему (вместо того, чтобы просто войти в систему) и вуаля, она работает! Спасибо! :) - person jobin; 20.08.2014