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

这篇具有很好参考价值的文章主要介绍了使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章主人公:帅哥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文件夹当中去 

下图是:指令的介绍

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

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

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

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

1.centos

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

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

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

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镜像就是基于这两种镜像创建的哦,也可以基于其他的基础镜像
😛:

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

 😎:欧克欧克

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

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

目录

一.构建镜像

准备工作

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

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

3.创建Docker文件

 touch Dockerfile

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

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

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

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

 😎:要压缩包和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构建jdk镜像,运维,服务器,容器,docker,云原生

二.创建自定义镜像

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

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

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

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

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

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

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

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

指令解释:

run:创建运行并进入

--name:给容器取名字

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

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

如下图:

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

 jdk8:镜像

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生


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

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

执行一下java指令

 dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

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

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

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

欧克,外部访问容器成功

dockerfile构建jdk镜像,运维,服务器,容器,docker,云原生

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

😛:额...是的吧

🤨:这个...额

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

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


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

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

我敲BUG的Docker专栏:http://t.csdn.cn/ypXDz文章来源地址https://www.toymoban.com/news/detail-708338.html

到了这里,关于使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】Docker镜像的创建 Dockerfile 多阶段构建原理和使用场景

    创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 (1)首先启动一个镜像,在容器里做修改  docker run -it --name web centos:7 /bin/bash     #启动容器  ​  yum install -y epel-release  #安装epel源  yum install -y nginx         #安装ng

    2024年02月12日
    浏览(54)
  • 如何在 Linux 命令行下玩转 Docker——如何使用 Dockerfile 来构建和运行容器镜像

    作者:禅与计算机程序设计艺术 Docker 是一款开源的容器化技术,它利用 Linux 内核的容器特性,将应用部署到独立的进程环境中。基于容器技术可以极大地提高开发者和运维人员的效率,降低部署、测试和生产环节中的成本,有效地实现云计算资源的弹性伸缩。 本文主要介绍

    2024年02月07日
    浏览(59)
  • Docker在windows下使用教程,通过Dockerfile创建镜像/容器,以YOLO系列为例

     通过可视化界面将极大的降低学习难度。  1.1、Docker Desktop下载  下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 应当是这个界面,选择下载即可 1.2、下载完成后需打开window自带的虚拟机       将Hyper-V勾选即打开,勾选后需重启。  1.3、下载WSL,由于是在

    2024年02月05日
    浏览(65)
  • 【Docker】初识 Docker,Docker 基本命令的使用,Dockerfile 自定义镜像的创建

    在部署大型项目时,常常面临多组件、复杂的依赖关系和不同环境之间的差异,这些因素可能导致以下问题: 复杂的依赖关系: 由于项目组件众多,各个组件之间的依赖关系变得复杂,容易出现版本不匹配或兼容性问题。 兼容性问题: 项目在不同的环境中可能会遇到兼容性

    2024年02月05日
    浏览(60)
  • Docker进阶:容器数据卷与Dockerfile构建镜像(发布)

    💖The Begin💖点点关注,收藏不迷路💖 1、完成数据持久化和共享数据,docker容器中的数据,同步到本地。 2、重要数据back_up 特点: 实时生效、数据卷可在容器之间共享和重用数据、数据卷中的更改不会包含在镜像更新中、数据卷的生命周期会一直延续到没有容器使用它为止

    2024年02月09日
    浏览(55)
  • 【Docker】如何编写Dockerfile,深入理解 Dockerfile:构建精简且高效的容器镜像

    Docker 是一种轻量级的容器化技术,使得应用程序和它们的依赖可以被打包到一个容器中,方便在不同环境中运行。Dockerfile 是用于定义 Docker 镜像的文本文件,其中包含了一系列的指令,这些指令描述了镜像中应该包含哪些内容和如何配置。 在开始编写 Dockerfile 之前,确保你

    2024年01月24日
    浏览(54)
  • Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

    💖The Begin💖点点关注,收藏不迷路💖 1、完成数据持久化和共享数据,docker容器中的数据,同步到本地。 2、重要数据back_up 特点: 实时生效、数据卷可在容器之间共享和重用数据、数据卷中的更改不会包含在镜像更新中、数据卷的生命周期会一直延续到没有容器使用它为止

    2024年02月10日
    浏览(55)
  • Docker容器:docker镜像的创建及dockerfile

    创建镜像有三种方法:基于现有镜像创建、基于本地模板创建及基于dockerfile创建 1.1 启动镜像 1.2 生成新镜像 2.1 OPENVZ 下载模板 2.2 导入容器生成镜像 3.1 dockerfile结构及分层 (1)dockerfile结构大致分为4个部分 基础镜像信息 维护者信息 镜像操作指令 容器启动时执行指令 Dockerfil

    2024年02月11日
    浏览(57)
  • Dockerfile 创建镜像,构建LNMP+wordpress架构

    目录 一、Dockerfile 构建镜像 1.Dockerfile 构建 nginx镜像 1.1创建 nginx Dockerfile 目录 1.2编写 Dockerfile 文件 1.3构建nginx镜像 2.Dockerfile 构建 mysql 镜像 2.1创建 mysql Dockerfile 目录 2.2修改mysql配置文件 2.3编写 Dockerfile 文件 2.4构建mysql镜像 3.Dockerfile 构建 php 镜像 3.1创建 php Dockerfile 目录 3

    2024年02月15日
    浏览(82)
  • Docker容器:docker数据管理、镜像的创建及dockerfile案例

    因为数据写入后如果停止了容器,再开启数据就会消失,使用数据管理的数据卷挂载,实现了数据的持久化,重启数据还会存在;还有一种方式,容器之间共享文件即相当于有个备份,也会解决停止容器后数据消失的问题。 管理 Docker 容器中数据主要有两种方式:数据卷(

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包