docker 手工创建 jdk1.8 镜像

1 篇文章 0 订阅

docker 手工创建jdk镜像

1 Dockerfile

1.1 Dockerfile 定义

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
3、对于运维人员:在部署时,可以实现应用的无缝移植。

1.2 常用命令
命令作用
FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name声明镜像的创建者
ENV key value设置环境变量 (可以写多条) RUN command
ADD source_dir/file
dest_dir/file
将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file
dest_dir/file
和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录
EXPOSE port1 prot2用来指定端口,使容器内的应用可以通过端口和外界交互
CMD argument在构建容器时使用,会被docker run 后的argument覆盖
ENTRYPOINT
argument
和CMD相似,但是并不会被docker run指定的参数覆盖
VOLUME将本地文件夹或者其他容器的文件挂载到容器中
1.3 使用脚本创建镜像
1.3.1 创建JDK1.8镜像

(1) 创建目录

[root@localhost ~]# mkdir -p /usr/local/dockerjdk8

(2) 将jdk 拷到该目录下

[root@localhost ~]# cp jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8/

(3)创建docker配置文件

**注意:**如果在windows平台中编写该配置文件,在上传到centos 服务系统之前,需要进行转码

#依赖镜像名称和ID
FROM 9f38484d220f
#指定镜像创建者信息
MAINTAINER liubijun
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH



(4)使用docker的构建命令进行构建

[root@localhost ~]# docker build -t='jdk1.8'  ./   //构建镜像
Sending build context to Docker daemon 2.325 GB
Step 1/9 : FROM 9f38484d220f
 ---> 9f38484d220f
Step 2/9 : MAINTAINER liubijun
 ---> Running in 90cb390ea092
 ---> 0f4519265a2c
Removing intermediate container 90cb390ea092
Step 3/9 : WORKDIR /usr
 ---> 0b6315992472
Removing intermediate container 55a413f2e835
Step 4/9 : RUN mkdir /usr/local/java
 ---> Running in c1d0d7331bb0

 ---> 34cd53b6d517
Removing intermediate container c1d0d7331bb0
Step 5/9 : ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
 ---> 40500f1cd935
Removing intermediate container 3fc39a4719e6
Step 6/9 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
 ---> Running in 93dd96865d97
 ---> a662d7ee71d1
Removing intermediate container 93dd96865d97
Step 7/9 : ENV JRE_HOME $JAVA_HOME/jre
 ---> Running in 853ea1bc2911
 ---> 9879c2f94824
Removing intermediate container 853ea1bc2911
Step 8/9 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
 ---> Running in 513dfa6bb4e5
 ---> 622b87b0c066
Removing intermediate container 513dfa6bb4e5
Step 9/9 : ENV PATH $JAVA_HOME/bin:$PATH
 ---> Running in 1cbc7ff7f713
 ---> 88a34dbcd5f0
Removing intermediate container 1cbc7ff7f713
Successfully built 88a34dbcd5f0

[root@localhost ~]# docker images // 查看构建好的镜像
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
jdk1.8                     latest              88a34dbcd5f0        22 seconds ago      589 MB
mynginx_1.0                latest              242f3c6e0f81        4 months ago        109 MB
docker.io/nginx            latest              27a188018e18        4 months ago        109 MB
docker.io/tomcat           latest              5a069ba3df4d        5 months ago        465 MB
docker.io/mongo            latest              b1c8142b3efc        5 months ago        410 MB
docker.io/zookeeper        latest              2a7f6fc5c8a1        5 months ago        150 MB
docker.io/redis            latest              a55fbf438dfd        5 months ago        95 MB
docker.io/mysql            latest              7bb2586065cd        5 months ago        477 MB
docker.io/centos           latest              9f38484d220f        6 months ago        202 MB
docker.io/lwieske/java-8   latest              ac36fa5aed45        7 months ago        163 MB
rabbitmq                   management          df80af9ca0c9        13 months ago       149 MB
elasticsearch              5.6.8               6c0bdf761f3b        18 months ago       570 MB
mobz/elasticsearch-head    5                   b19a5c98e43b        2 years ago   


(5 )创建容器与验证

[root@localhost ~]# docker run -it --name=myjdk8 jdk1.8 /bin/bash
[root@8bec0ca04062 usr]# javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method parameters
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified profile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file

[root@8bec0ca04062 usr]# 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: docker-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容器中,实现了应用程序的便携性和环境隔离性。 ### 回答2: jdk(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、付费专栏及课程。

余额充值