REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 1 X 26 seconds ago 279 MB
когда будет запущен образ докера, появится следующее сообщение:
No java installations was detected.
Please go to http://www.java.com/getjava/ and download
Когда Oracle JDK развернут, размер образа докера более чем удвоился!
REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 2 X 26 seconds ago 666 MB
обсуждение
Когда «Google Oracle JDK для докера» не отображается, возвращаются только некоторые ссылки на образ докера, содержащие докер. Когда Oracle JDK развернут в образе докера, размер увеличивается более чем вдвое. Я хочу, чтобы образы докеров были как можно меньше, но Oracle JDK кажется больше, чем само изображение!
Вопрос
Нет ли Oracle JDK для докера?
docker
oracle-jdk
030
источник
источник
Ответы:
Нет. Поскольку вы не можете распространять Oracle JDK или JRE, действующая лицензия не позволяет распространять . При распространении третьей стороной (встроенной в ваше приложение) вся ответственность за то, что оно не работает, лежит на этой стороне. Вот почему вы не найдете Oracle JDK / JRE ни в одном из общедоступных реестров Docker или в каких-либо репозиториях пакетов Linux.
Вы можете создать свой собственный образ и установить Oracle JDK или JRE, используя пакет webupd8team / java для Ubuntu / Debian.
И если вы используете Alpine Linux, этот пост в блоге объясняет, какие зависимости требуются, и ссылки на StackOverflow для инструкций по установке.
Обновление : Oracle теперь имеет официальный образ Docker в Docker Store . https://blogs.oracle.com/developers/official-docker-image-for-oracle-java-and-the-openjdk-roadmap-for-containers
Ссылка на Docker Store Oracle Java Image - https://store.docker.com/images/oracle-serverjre-8
источник
Dockerfile
на GitHub, чтобы получить свой собственный образ Docker с Java. Например, github.com/anapsix/docker-alpine-java/blob/master/8/121b13/jdk/…Поскольку Docker не является операционной системой, нет JDK для Docker.
Насколько я понимаю, ваш вопрос заключается в том, что полный JDK слишком велик для ваших пожеланий, в этом случае вы можете попробовать переключиться только на JRE и включить только необходимые библиотеки.
JDK - это аббревиатура Java Development Kit, JRE - это Java Runtime Engine. Из-за «ленивости» из-за сложности перечисления всех необходимых зависимостей никто не ограничивается только необходимыми библиотеками, но это путь, если вы хотите уменьшить установленный размер до строгого минимума.
Более удобным способом было бы удалить некоторые из установленных вещей, которые занимают много места:
Есть два * src.zip, которые можно удалить, они не будут полезны, и, как вы можете видеть, каталог lib в два раза меньше, и внутри него есть куча вещей, которые вам на самом деле не нужны:
Вы можете без проблем удалить missoncontrol на сервере, я полагаю, вы также можете избавиться от visualvm, вам придется проверить, нужно ли вам что-то в этом каталоге lib, но я не могу сказать, не зная вашего приложения.
Одна вещь, которую вы должны сделать в вашем dockerfile при установке oracle jdk, - это удалить загруженный
.tar.gz
файл, размер которого примерно равен размеру результирующего каталога, так как.jar
файлы уже сжаты, tar.gz просто «упаковывает» их.Вы должны сделать все это в одной
RUN
команде,&&
чтобы избежать добавления слоев, размер которых не будет удален путем удаления файлов из предыдущего слоя.источник
Официальной реализации Oracle JDK от Docker не существует. Docker ранее поддерживал свою собственную библиотеку Java на hub.docker.com, но они отказались от нее в пользу фактической реализации OpenJDK, поскольку она была «специфична для OpenJDK с момента ее первого появления». Их рассуждения:
Поэтому, если вы хотите, чтобы ваш образ Docker был как можно меньше, рассмотрите возможность использования OpenJDK. Есть официальный репозиторий OpenJDK Dockerfile, или вы можете просто использовать
docker pull openjdk
. Основной простой в использовании Dockerfile для OpenJDK 7 выглядит следующим образом (взято с сайта, указанного в предыдущем предложении):источник