当前位置: 首页 > news >正文

2.4 Docker部署JDK

2.4 Docker部署JDK

jdk17部署(自定义镜像)

1.在官网上下载jdk-17_linux-x64_bin.tar.gz,并安装到/usr/local目录下
cd /usr/local
2.创建Dockerfile
vim Dockerfile
# 基于官方的Ubuntu 20.04镜像作为基础镜像
FROM ubuntu:20.04# 设置环境变量
ENV JDK_VERSION 17
ENV JDK_HOME=/usr/local/docker/jdk-17.0.10
ENV PATH $JDK_HOME/bin:$PATH# 安装JDK17
RUN mkdir /usr/local/docker
RUN cd /usr/local/docker
ADD jdk-17_linux-x64_bin.tar.gz /usr/local/docker# 配置Java环境变量
RUN echo "export JAVA_HOME=$JDK_HOME" >> /etc/profile && \echo "export PATH=$JDK_HOME/bin:$PATH" >> /etc/profile# 验证JDK安装
RUN java -version

image-20240328122529940

3.构建Docker镜像

在Dockerfile所在的目录下执行以下命令构建Docker镜像:

docker build -t myjdk17 .

image-20240328122451164

4.运行Docker容器
docker run -it myjdk17

其中,-it参数表示交互式运行容器,并使容器的标准输入保持打开状态。

5.验证jdk安装
java -version

image-20240328122508011

jdk8部署(使用第三方镜像)

1.下载 oracle 官方 java jdk 镜像,默认下载最新版本,以下选择jdk8
docker pull docker.io/java:8
2.查看 Docker Java JDK 版本
查看本地下载好的镜像
docker images
查看容器列表
docker ps -a
运行 java jdk 容器
docker run -it --name jdk8 -d docker.io/java:8

​ -i:以交互模式运行容器,通常与 -t 同时使用
​ -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
​ --name:自定义容器名
​ -d:表示后台运行
​ docker.io/java:8:指定运行的镜像名称,根据自己实际情况填写,也可以是 image id

再次查看当前运行的容器
docker ps
启动容器
docker start java-jdk8
进入容器并执行命令
docker exec -it java-jdk8 /bin/bash
进入容器后,查看 java jdk 版本
java -version
退出容器
exit
已经创建过的容器,如果创建时未指定 --restart=always,可通过update 命令设置
docker update --restart=always 容器ID(或者容器名)

参考:https://blog.csdn.net/wangmx1993328/article/details/117898871
pdate 命令设置

docker update --restart=always 容器ID(或者容器名)

参考:https://blog.csdn.net/wangmx1993328/article/details/117898871

相关文章:

  • 【三维模型采集设备】轮廓扫描仪介绍
  • TensorFlow Playground神经网络演示工具使用方法详解
  • golang中一个优雅的开发和使用命令行工具的库 cobra
  • CraftCMS ConditionsController.php 代码执行漏洞(CVE-2023-41892)
  • 【算法训练 day44 分割等和子集】
  • Mysql 插入或者更新 踩坑
  • QT系列教程(6) 几种标准对话框
  • ReactNative集成到已有iOS项目
  • 大模型日报2024-05-31
  • C++:vector的模拟实现
  • Maven 中的 classifier 属性用过没?
  • chrome 浏览器历史版本下载
  • 从openstack环境中将服务器镜像导出的简单办法
  • 分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
  • html+CSS部分基础运用9
  • [译]CSS 居中(Center)方法大合集
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Angular 4.x 动态创建组件
  • canvas 五子棋游戏
  • js操作时间(持续更新)
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Vue2.x学习三:事件处理生命周期钩子
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 多线程 start 和 run 方法到底有什么区别?
  • 机器学习学习笔记一
  • 解决iview多表头动态更改列元素发生的错误
  • 前端_面试
  • 小程序 setData 学问多
  • 写代码的正确姿势
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • elasticsearch-head插件安装
  • hi-nginx-1.3.4编译安装
  • MyCAT水平分库
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • # Kafka_深入探秘者(2):kafka 生产者
  • #pragma multi_compile #pragma shader_feature
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (论文阅读40-45)图像描述1
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (实战篇)如何缓存数据
  • (数据结构)顺序表的定义
  • (原)Matlab的svmtrain和svmclassify
  • (转)c++ std::pair 与 std::make
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .gitattributes 文件
  • .NET Core 项目指定SDK版本
  • .net 提取注释生成API文档 帮助文档