学习docker(2)-基于jdk1.8 的docker 镜像

本文详细介绍如何使用Docker在宿主机上创建包含JDK8的CentOS镜像,包括编写Dockerfile、构建镜像及运行容器的过程,并验证Java环境配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.宿主机上,创建dockerfile文件

# CentOS with JDK 8
# centos作为基础镜像
FROM centos

# 维护者
MAINTAINER  zsw

# 创建目录
RUN mkdir  /usr/local/java

# 宿主机上的jdk 压缩包路径   自动解压至容器内的指定安装位置
#例如你想解压至 /usr/local/java/
#  ADD jdk-8u171-linux-x64.tar.gz /usr/local/java8/  实际解压至/usr/local/java/jdk1.8.0_171
#  jdk-8u171-linux-x64.tar.gz 对应的解压目录文件夹是jdk1.8.0_171
ADD /xxx/xxx/jdk-8u171-linux-x64.tar.gz /usr/local/java/


# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

2.构建镜像

2.1 执行命令

# 参数 -f /xxx/.../dockerfile  指定dockerfile文件的位置 
# 参数 -t centos-jdk8  定义一个镜像名称
# 不要忘记最后面的点  .
docker build -f /xxx/.../dockerfile -t centos-jdk8 .

# 如果执行命令  在dockerfile文件统计目录下,可不用指定dokerfile指定位置
docker build -t centos-jdk8 .

2.2 执行过程

[root@localhost mydocker]# docker build -t centos-java8 .
Sending build context to Docker daemon  190.9MB
Step 1/9 : FROM centos
 ---> 0f3e07c0138f
Step 2/9 : MAINTAINER  zsw
 ---> Running in b00ec8a87148
Removing intermediate container b00ec8a87148
 ---> 3439a1639c25
Step 3/9 : RUN mkdir  /usr/local/java
 ---> Running in eb63a19f93c6
Removing intermediate container eb63a19f93c6
 ---> 52b1463a6a25
Step 4/9 : ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
 ---> eeda7b44dcb3
Step 5/9 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
 ---> Running in eb54fbd91445
Removing intermediate container eb54fbd91445
 ---> a0feb140a671
Step 6/9 : ENV JRE_HOME ${JAVA_HOME}/jre
 ---> Running in 25f717738527
Removing intermediate container 25f717738527
 ---> d9d409bb28e0
Step 7/9 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
 ---> Running in c6c9db791fca
Removing intermediate container c6c9db791fca
 ---> 139d8a76aca7
Step 8/9 : ENV PATH ${JAVA_HOME}/bin:$PATH
 ---> Running in f97dab631e5f
Removing intermediate container f97dab631e5f
 ---> 5723b43356c8
Step 9/9 : CMD /bin/bash -c 'java -version'
 ---> Running in d77b947a1bb2
Removing intermediate container d77b947a1bb2
 ---> 098ccd8b0f7d
Successfully built 098ccd8b0f7d
Successfully tagged centos-java8:latest

2.3 查看镜像

[root@localhost mydocker]# docker images
REPOSITORY     TAG    IMAGE ID            CREATED             SIZE
centos-java8  latest  098ccd8b0f7d        11 seconds ago      607MB

3 运行容器

# 参数 -d  后台启动
# 后缀 /bin/sh 开启一个进程,保持容器的运行,否则容器运行一下就停止了
#创建并进入
docker run -it --name="zsw-tester" centos-java8 /bin/sh

#查看java 版本 是否安装成功
[root@67f129665b01 /]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

# 查看环境变量
[root@67f129665b01 /]# env
LANG=en_US.UTF-8
HOSTNAME=67f129665b01
JAVA_HOME=/usr/local/java/jdk1.8.0_171
CLASSPATH=.:/usr/local/java/jdk1.8.0_171/lib:/usr/local/java/jdk1.8.0_171/jre/lib
PWD=/
HOME=/root
TERM=xterm
SHLVL=1
JRE_HOME=/usr/local/java/jdk1.8.0_171/jre
PATH=/usr/local/java/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LESSOPEN=||/usr/bin/lesspipe.sh %s
_=/usr/bin/env

 

### 回答1docker-compose是一个用于定义和运行多容器Docker应用程序的工具。而JDK1.8是Java Development Kit (Java开发工具包)的缩写,是一款用于开发和执行Java应用程序的软件包。 在使用docker-compose部署应用程序时,如果应用程序需要运行在JDK1.8环境下,可以通过编写docker-compose.yml文件来实现。首先,在文件中定义一个服务,指定使用合适的基础镜像,例如openjdk:8。然后,可以在该服务的配置中指定所需的环境变量和卷挂载等配置项。 具体代码示例如下: ``` version: '3' services: myapp: image: openjdk:8 ports: - 8080:8080 volumes: - ./app:/app environment: - JAVA_OPTS=-Xmx512m ``` 在上述示例中,定义了一个名为myapp的服务,使用openjdk:8镜像。将宿主机的8080端口映射到容器的8080端口,将宿主机上的./app目录挂载到容器的/app目录,并设置了JAVA_OPTS环境变量。 通过运行docker-compose up命令,即可启动应用程序并运行在JDK1.8环境中。可以通过访问宿主机的8080端口,来访问应用程序。这样,就成功将应用程序和JDK1.8集成到了Docker容器中,实现了应用程序的便携性和环境隔离性。 ### 回答2jdk(Java Development Kit)是一款用于开发和运行Java应用程序的软件开发工具包。JDK 1.8是Java开发工具包的一个版本,它提供了许多功能和库,以支持Java应用程序的开发和执行。 Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用一个YAML文件来配置应用程序的服务,然后可以使用单个命令在多个Docker容器中运行整个应用程序。 在Docker Compose中使用JDK 1.8时,我们可以通过在Docker Compose配置文件中指定相应的镜像,来使用JDK 1.8作为Java应用程序的运行环境。例如,我们可以在配置文件中指定一个基于JDK 1.8的Java镜像,然后定义应用程序的服务,并在服务中指定镜像、传递需要的环境变量和卷等。 使用Docker Compose和JDK 1.8可以带来一些好处。首先,使用Docker可以将应用程序和其依赖项打包成一个独立的容器,使得应用程序在不同环境中的部署更加方便和可靠。其次,JDK 1.8提供了许多功能和性能优化,可以提高Java应用程序的执行效率和稳定性。 总结来说,使用Docker Compose和JDK 1.8可以将Java应用程序与其运行环境隔离开来,并提供了一种简单和可靠的方式来管理和运行多容器的应用程序。 ### 回答3: Docker-compose 是 Docker 官方提供的一个用于定义和运行多容器 Docker 应用程序的工具。而 JDK 1.8 是 Java Development Kit(Java开发工具包)的一个版本,它提供了 Java 编程语言的开发环境以及运行时的支持。 在使用 Docker-compose 来部署应用程序时,如果需要依赖 JDK 1.8 来运行应用程序,可以在 Docker-compose 文件中指定所需的镜像和相关设置。 首先,需要在 Docker-compose 文件的 services 部分定义应用程序服务的镜像。可以选择一个包含 JDK 1.8 的基础镜像,例如官方提供的 openjdk:8 镜像。在服务的定义中,可以指定 image 属性为 openjdk:8 或其他包含 JDK 1.8镜像。 接下来,可以在容器的启动命令或入口脚本中使用 JDK 1.8 所提供的 Java 运行命令来执行应用程序。例如,可以执行 java 命令来运行 Java 类,或执行 javac 命令来编译 Java 代码。 需要注意的是,JDK 1.8 可能会与部分应用程序存在兼容性问题,特别是在迁移旧的应用程序时。因此,在使用 Docker-compose 部署应用程序之前,需要确保应用程序与 JDK 1.8 的版本兼容,并进行适当的调试和测试。 总之,通过在 Docker-compose 文件中指定合适的镜像和相应的命令,可以在容器中运行使用 JDK 1.8 开发的应用程序。这种方式可以提供一个独立、可移植的环境,方便开发人员和运维人员快速部署和管理应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值