首页 > 系统相关 >使用dockerfile来构建一个包含Jdk17的centos7镜像

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

时间:2024-09-25 23:47:52浏览次数:10  
标签:java Jdk17 root centos7 dockerfilejdk17 镜像 docker dockerfile

文章目录

1、dockerfile简介

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

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

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

  • 基础镜像信息(必选)

  • 维护者信息(可选)

  • 镜像操作指令(可选)

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

常用指令:

指令用法作用
FROMFROM image_name:tag指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的latest标签,可以出现多次,如果需要在一个dockerfile中构建多个镜像。
MAINTAINERMAINTAINER user_name描述镜像的创建者,名称和邮箱
RUNRUN “command” “param1” “param2”用来执行一些命令,可以写多条
ENVENV key value设置容器的环境变量,可以写多条。
ADDADD source_dir/file将宿主机的文件复制到容器内,如果是压缩文件,则复制后自动解压
ENTRYPOINTENTRYPOINT “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

[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

在这里插入图片描述

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

[root@localhost dockerfilejdk17]# vim dockerfile
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
[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、执行命令构建镜像:不要忘了后面的那个 .

[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

[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、 查看容器 /usr/local/java 目录

[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]# 

在这里插入图片描述

标签:java,Jdk17,root,centos7,dockerfilejdk17,镜像,docker,dockerfile
From: https://blog.csdn.net/m0_65152767/article/details/142533281

相关文章

  • Dockerfile文件详解
    什么是dockerfile?Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。dockerbuild命令用于从Dockerfile构建映像。可以在dockerbuild命令中使用-f标志指向文件系统中任何位置的Dockerfile。例......
  • centos7 设置静态ip
    在CentOS7上设置静态IP,你需要按照以下步骤操作: 找到你的网络接口名称,使用命令 nmclid。 编辑网络配置文件。配置文件通常位于 /etc/sysconfig/network-scripts/,文件名为 ifcfg-<interface>,例如 ifcfg-ens33。 修改配置文件,设置静态IP相关的参数。 重......
  • centos7系统安装部署zabbix5.0
    一、简介zabbix是一个基于[WEB]界面的提供分布式[系统监视]以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证[服务器系统]的安全运营;并提供灵活的通知机制以让[系统管理员]快速定位/解决存在的各种问题。二、安装配置1.关闭防火墙和selinuxsystemctl......
  • Centos7.9部署kubernetes(一主两从)(版本1.17.4)
    部署kubernetes1、环境准备IP系统配置角色192.168.8.180centos7.92H4Gmaster192.168.8.181centos7.92H4Gnode1192.168.8.178centos7.92H4Gnode22、在所有节点上关闭swap分区masternode#临时关闭swap分区swapoff-asysctl-wvm.s......
  • 运维系列【亲测有效】:centos7时间同步教程
    centos7时间同步教程centos7时间同步教程centos7查看时间centos7时间同步教程第一种方法,命令有点多1.通过命令查看时间不同步2.修改/etc/sysconfig/clock文件如下内容,保存3.重写`/etc/localtime`,执行如下,回车4.重启服务器使时区生效,需要再次登录服务器......
  • Centos7中配置vsftpd对接LDAP(域控)
    背景与需求公司内部使用ftp进行文件共享,之前使用的是公共账号,导致账号密码到处传播,权限难以管控。因此,计划将FTP服务对接LDAP(公司内部的域控),实现用个人域账号登录。具体需求域账号登录未经授权的,可以登录FTP,但无权限访问(共享的)内容实施环境描述操作系统#lsb_release-......
  • Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具
    目录Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具引言一、什么是Dockerfile二、Dockerfile的基本结构三、Dockerfile的常见配置项1、多阶段构建(Multi-stageBuilds)2、缓存优化3、合并RUN命令四、Dockerfile使用须知五、一个完整的Dockerfile实......
  • Centos7.9 安装 Docker
    由于docker被封,直接使用docker官方的教程安装会被墙,所以使用阿里云的源进行安装参考文档:https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance安装Docker运行以下命令,下载docker-ce的yum源。sudowget-O/etc/yum.repos.d/docker-ce.......
  • DockerFile参数
    指令描述ADD添加本地或远程文件和目录。ARG使用构建时变量。CMD指定default命令。COPY复制文件和目录。ENTRYPOINT指定默认可执行文件。ENV设置环境变量。EXPOSE描述您的应用程序正在侦听的端口。FROM从基础映像创建新的构建阶段。HEA......
  • CentOS7使用yum时File contains no section headers. file: file:///etc/yum.repos.d/
    CentOS7使用yum时Filecontainsnosectionheaders.file:file:///etc/yum.repos.d/CentOS-Base.repo,line:1'--2024-09-2221:08:17--http://mirrors.aliyun.com/repo/Centos-7.repo\n'安装好CenOS7后,自带的yum不能直接使用,使用会出现如下问题:原因是没有配置yum源,修改/e......