文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)

2023-10-26 09:06

关注

文章主人公:帅哥BUG😎 

文章路人: 路人 🤨  路人 😛

🤨:什么是dockerfile?

😎:Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使 用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙
😛:知道了知道了,快点说怎么构建自定义镜像吧

😎:不急 我们先认识一下

dockerfile 的基本结构

Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。 一般的,Dockerfile 分为四部分: 基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
部分 命令
基础镜像信息 FROM
维护者信息 MAINTAINER
镜像操作指令 RUNENVCOPYADDEXPOSEWORKDIRONBUILDUSER VOLUME
容器启动时执行指令 CMDENTRYPOINT

重点说一下

镜像操作指令中的COPY和ADD的区别!

COPY:复制 ,假设 COPY  jdk.tar.gz  /usr/local/java 

意思就是我要把jdk.tar.gz复制到java文件夹当中去   

ADD:解压,假设 ADD jdk.tar.gz  /usr/local/java 

意思就是我要把jdk.tar.gz解压到java文件夹当中去 

下图是:指令的介绍

😛:知道了知道了,能不能构建自定义镜像了!

😎:额.. 不急,先介绍两种基础镜像:

如果说我们要去构建一个自定义的镜像 我们要基于某个基础镜像去创建

1.centos

2.alpine 这两种是比较常用的基础镜像

 没有这两个基础镜像的可以执行以下两条命令 拉取/下载一下

docker pull centos

docker pull alpine

区别: 1. 空间大小差异, alpine 默认 5M 左右, centos 等都在 200M 左右。 2. 默认软件包差异, alpine 选用 busybox centos 等则是 bash+coreutils 几件套。 3. alpine 中,国际化组件被优化掉了。 4. 还有一点, alpine 中选用的都是 最简依赖 ,这点和 archlinux 比较像, 举个例子, openssh 包不会自带 pam 插件,于是他也就不支持 ldap 这点我给 alpinelinux 官方提过 issue php 不一样, php 可以做成 php-pdo php-dom 的包,然后动态加载共享库。 openssh 不行, 没带就是没写 😎:自定义jdk镜像就是基于这两种镜像创建的哦,也可以基于其他的基础镜像 😛:

 😎:欧克欧克

开始构建自定义镜像!!!!!

目录

一.构建镜像

准备工作

1.创建一个java文件夹上传jdk的安装包,在java文件夹中创建Dockerfile

2.cd 进入文件夹 

3.创建Docker文件

4.上传jdk压缩包和spring.jar(给来运行服务的)

5.编辑Dockerfile

二.创建自定义镜像

​编辑

三.根据刚构建的自定义镜像创建一个容器(让外部访问容器)


一.构建镜像

准备工作

1.创建一个java文件夹上传jdk的安装包,在java文件夹中创建Dockerfile

mkdir -p /usr/local/java

2.cd 进入文件夹 

cd /usr/local/java

3.创建Docker文件

 touch Dockerfile

4.上传jdk压缩包和spring.jar(给来运行服务的)

我用的连接工具可以直接移进去,你们可以用rz上传,如果rz报错的话,可以去网上搜索下载一下rz的命令

 😎:要压缩包和jar包的在评论区哦

5.编辑Dockerfile

使用vi编辑命令

vi Dockerfile

进入之后按 i 键进入编辑模式,把以下内容复制进去(大家可以看一下#后面的解释)

#1.指定基础镜像,并且必须是第一条指令
FROM centos:latest 
#2.指明该镜像的作者和其电子邮件
MAINTAINER bug "bug@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java
#4.一个复制命令,把jdk安装文件复制到镜像中,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/
COPY spring.jar /usr/local/java
#5.配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
CMD  java -jar spring.jar

 复制进去之后按 esc 键,输入:wq 保存并退出

二.创建自定义镜像

编辑完成 Dockerfile 之后,可以通过 docker build 命令来创建镜像。

docker build -t jdk8:v1.0 . 注1:-t jdk8:v1.0 给新构建的镜像取名为 jdk8, 并设定版本为 v1.0 注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建

 看到画白线的位置 自定义镜像jdk8已经构建好了!!

😛:就没了?不用刚刚构建好的镜像创建个容器?

😎:正有此意!不仅要创建,还要让外部访问容器

三.根据刚构建的自定义镜像创建一个容器(让外部访问容器)

docker run --name BUG -p 9999:8080 jdk8:v1.0

指令解释:

run:创建运行并进入

--name:给容器取名字

-p:表示端口映射 给来外部访问用的 9999是宿主机提供的端口 8080是容器的

在容器里运行8080服务的时候,外部是访问不了的,当外部访问虚拟机的9999端口的时候,虚拟机会把消息转入给容器的8080端口,然后容器的8080端口在放回消息给虚拟机的9999,虚拟机在返回给外部

如下图:

 jdk8:镜像


容器的创建和使用,我有一篇博客,写的非常细大家可以看看(也可以订阅我的专栏哦)

(33条消息) Docker下载镜像(配置阿里云加速器)和容器的基本使用(有指令解释哦~)_我敲BUG的博客-CSDN博客

执行一下java指令

 

因为这个镜像是有jdk安装文件的,我们又在编辑Dockerfile的是配置类环境变量,所以容器可以使用java指令的

执行 java -jar spring.jar 开启8080端口

欧克,外部访问容器成功

😎:本章内容怎么样,是不是非常简单,学会构建定义镜像了吧

😛:额...是的吧

🤨:这个...额

😎:ok啊,都会构建自定义镜像了,怎么能不会上传镜像呢,已经给大家准备好了,点击下方链接进入学习

阿里云上传镜像http://t.csdn.cn/dPOQd


好啦 文章内容到这里就结束了  你学到了吗  

觉得有用的记得关注点赞加收藏哦  我的Docker专栏还有其他关于Dokcer的技术点哦~

我敲BUG的Docker专栏:http://t.csdn.cn/ypXDz

来源地址:https://blog.csdn.net/qq_58804301/article/details/129866254

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯