使用dockerfile来构建一个包含Jdk17的centos7镜像(构建镜像:centos7-jdk17)

文章目录

  • 1、dockerfile简介
  • 2、入门案例
    • [2.1、创建目录 /opt/dockerfilejdk17](#2.1、创建目录 /opt/dockerfilejdk17)
    • [2.2、上传 jdk-17_linux-x64_bin.tar.gz 到 /opt/dockerfilejdk17](#2.2、上传 jdk-17_linux-x64_bin.tar.gz 到 /opt/dockerfilejdk17)
    • 2.3、在/opt/dockerfilejdk17目录下创建dockerfile文件
    • [2.4、执行命令构建镜像 centos7-jdk17 : 不要忘了后面的那个 .](#2.4、执行命令构建镜像 centos7-jdk17 : 不要忘了后面的那个 .)
    • 2.5、查看镜像是否建立完成
    • [2.6、创建 交互型 容器 atguigu-centos](#2.6、创建 交互型 容器 atguigu-centos)
    • [2.7、 查看 交互型 容器 atguigu-centos /usr/local/java 目录](#2.7、 查看 交互型 容器 atguigu-centos /usr/local/java 目录)

1、dockerfile简介

前面我们所使用的镜像都是别人构建好的,但是别人构建好的镜像不一定能满足我们的需求(**例如:**部署springboot项目需要java环境),使用dockerfile构建自定义镜像就可以解决这个问题。

dockerfile就是一个文本文件,在这个文本文件中可以使用docker所提供的一些指令来配置构建镜像的细节,后期可以使用这个dockerfile文件来构建自己的镜像。

dockerfile文件内容一般分为4部分:

  • 基础镜像信息(必选)

  • 维护者信息(可选)

  • 镜像操作指令(可选)

  • 容器启动时执行的指令(可选)

常用指令:

指令 用法 作用
FROM FROM image_name:tag 指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的latest标签,可以出现多次,如果需要在一个dockerfile中构建多个镜像。
MAINTAINER MAINTAINER user_name 描述镜像的创建者,名称和邮箱
RUN RUN "command" "param1" "param2" 用来执行一些命令,可以写多条
ENV ENV key value 设置容器的环境变量,可以写多条。
ADD ADD source_dir/file 将宿主机的文件复制到容器内,如果是压缩文件,则复制后自动解压
ENTRYPOINT ENTRYPOINT "command" "param1" "param2" 用来指定容器启动时所执行的命令

2、入门案例

需求:使用dockerfile来构建一个包含Jdk17的centos7镜像

分析:

1、基础的镜像的应该选择centos:7

2、把Jdk17添加到centos:7的基础镜像中

3、配置全局环境变量方便在镜像中使用java命令

实现步骤:

1、将Jdk17的压缩包上传到linux服务器中

2、在Jdk17所在的目录下创建一个dockerfile文件

3、使用docker build命令构建镜像

4、使用docker images查看镜像构建情况

5、使用自己所构建的镜像创建容器,测试Jdk17的安装情况

2.1、创建目录 /opt/dockerfilejdk17

sh 复制代码
[root@localhost ~]# mkdir -p /opt/dockerfilejdk17
[root@localhost ~]# cd /opt/dockerfilejdk17/
[root@localhost dockerfilejdk17]# 

2.2、上传 jdk-17_linux-x64_bin.tar.gz 到 /opt/dockerfilejdk17

jdk17https://www.oracle.com/java/technologies/downloads/

2.3、在/opt/dockerfilejdk17目录下创建dockerfile文件

sh 复制代码
[root@localhost dockerfilejdk17]# vim dockerfile
cpp 复制代码
FROM centos:7
MAINTAINER atguigu
RUN mkdir -p /usr/local/java
ADD jdk-17_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.8
ENV PATH=$PATH:$JAVA_HOME/bin
shell 复制代码
[root@localhost dockerfilejdk17]# ll
总用量 178108
-rw-r--r--. 1 root root       182 9月  25 21:29 dockerfile
-rw-r--r--. 1 root root 182376116 8月  10 2023 jdk-17_linux-x64_bin.tar.gz

2.4、执行命令构建镜像 centos7-jdk17 : 不要忘了后面的那个 .

sh 复制代码
[root@localhost dockerfilejdk17]# docker build -t centos7-jdk17 .
[+] Building 29.9s (8/8) FINISHED                                                                                                                                                docker:default
 => [internal] load .dockerignore                                                                                                                                                          0.5s
 => => transferring context: 2B                                                                                                                                                            0.1s
 => [internal] load build definition from dockerfile                                                                                                                                       0.5s
 => => transferring dockerfile: 274B                                                                                                                                                       0.1s
 => [internal] load metadata for docker.io/library/centos:7                                                                                                                                6.1s
 => [1/3] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                                                                          0.1s
 => => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                                                                          0.0s
 => => sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB                                                                                             0.0s
 => => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B                                                                                                 0.0s
 => => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB                                                                                             0.0s
 => [internal] load build context                                                                                                                                                          2.9s
 => => transferring context: 182.41MB                                                                                                                                                      2.9s
 => [2/3] RUN mkdir -p /usr/local/java                                                                                                                                                     1.4s
 => [3/3] ADD jdk-17_linux-x64_bin.tar.gz /usr/local/java/                                                                                                                                17.9s
 => exporting to image                                                                                                                                                                     2.2s
 => => exporting layers                                                                                                                                                                    2.2s
 => => writing image sha256:d4c53036ce375be152ed8efbd45ddf96e36108c5d3bc04fa9248dec7ebbaf374                                                                                               0.0s
 => => naming to docker.io/library/centos7-jdk17  

2.5、查看镜像是否建立完成

2.6、创建 交互型 容器 atguigu-centos

sh 复制代码
[root@localhost dockerfilejdk17]# docker run -it --name atguigu-centos centos7-jdk17 /bin/bash
[root@3d4f93f7b804 /]# java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)

2.7、 查看 交互型 容器 atguigu-centos /usr/local/java 目录

shell 复制代码
[root@localhost dockerfilejdk17]# docker run -it --name atguigu-centos centos7-jdk17 /bin/bash
[root@3d4f93f7b804 /]# java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
[root@3d4f93f7b804 /]# cd /usr/local/java
[root@3d4f93f7b804 java]# ll
total 0
drwxr-xr-x. 9 root root 136 Sep 25 13:30 jdk-17.0.8
[root@3d4f93f7b804 java]# 
相关推荐
猿与禅14 天前
devops-Dockerfile+Jenkinsfile方式部署Java前后端应用
java·运维·jenkins·devops·jenkinsfile·dockerfile
老司机张师傅1 个月前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
Ops菜鸟(Xu JieHao)1 个月前
Dockerfile构建镜像(练习一Apache镜像)(5-1)
服务器·docker·容器·apache·脚本·dockerfile·系统运维
强哥之神2 个月前
如何构建一个支持GPU的Llamafile容器
人工智能·机器学习·语言模型·gpu·dockerfile·1024程序员节·llamafile
强哥之神2 个月前
Dockerfile最佳实践:如何创建高效的容器
人工智能·docker·语言模型·k8s·dockerfile·docker镜像·镜像制作
XMYX-02 个月前
深入浅出Dockerfile编写指南
dockerfile
SilentCodeY3 个月前
docker build前耗时太长,不明所以
运维·docker·容器·镜像·dockerfile
丁总学Java3 个月前
dockerfile部署springboot项目(构建镜像:ebuy-docker:v1.0)
java·spring boot·后端·dockerfile
瞭望清晨4 个月前
Docker容器创建时,无法访问镜像源:Could not connect to archive.ubuntu.com:80
ubuntu·docker·容器·镜像源·dockerfile