DockerFile的使用

【云原生 | Docker 高级篇】05、DockerFile 详解 DockerFile 详解!!! 阅读详情

DockerFile

dockerfile是用来构建docker镜像的文件! 命令参数脚本
构建步骤:
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub 、阿里云镜像仓库 )

1、基础知识

1、每个保留关键字(指令) 都必须是大写字母
2、执行从上到下顺序执行
3、# 表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交!
在这里插入图片描述
dockerfile是面向开发的,发布项目,做镜像,就需要编写dockerfile文件!

步骤:开发、部署、运维
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:DockerFile构建生成的镜像,最终发布和运行的产品!
Docker容器:容器就是镜像运行起来提供服务器

2、DockerFile的指令

FROM				# 基础镜像,一切从这里开始构建
MAINTAINER			# 镜像是谁写的,姓名+邮箱
RUN					# 镜像构建的时候需要运行的命令 
ADD					# 添加内容: 比如加一个tomcat压缩包
WORKDIR				# 镜像的工作目录
VOLUME				# 镜像挂载的目录
EXPOSE				# 保留暴露的端口
CMD					# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可以被代替
ENTRYPOINT			# 指定这个容器启动的时候需要运行的命令,可以追加命令
ONBUILD				# 当构建一个被继承DockerFile 的时候就会运行 ONBUILD 的指令。触发指令
COPY				# 类似ADD ,将我们的文件拷贝到镜像中
ENV					# 构建的时候设置环境变量

在这里插入图片描述

3、编写一个centos

1、编写Dockerfile文件  centos 21年之后停止维护  不要拉最新的镜像
[root@wkf dockerfile]# cat mydockerfile-centos 
FROM centos:7.9.2009
MAINTAINER wukefeng<自己的邮箱>

ENV  MYPATH  /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE  80
 
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

2、通过命令构建镜像   最后有个 .
docker build -f dockerfile文件名  -t  镜像名:[tag] .
[root@wkf dockerfile]# docker build -f mydockerfile-centos  -t  mycentos:0.1 .

成功显示如下
Successfully built f29d77d79136
Successfully tagged mycentos:0.1

查看本地进行的变更历史

在这里插入图片描述

4、编写一个tomcat镜像

4.1 准备镜像文件 tomcat压缩包,jdk的压缩包

在这里插入图片描述

4.2 编写dockerfile文件, 官方命名 Dockerfile ,build会自动寻找这个文件,就不需要 - f 指定了!

在这里插入图片描述


FROM centos:7.9.2009
MAINTAINER wukefeng<自己的邮箱@qq.com>
# 复制文件
COPY readme.txt  /usr/local/readme.txt
# 添加文件
ADD jdk-8u333-linux-x64.tar.gz  /usr/local/       
#ADD指令 会自动解压压缩包到/usr/local目录下 
ADD apache-tomcat-8.5.81.tar.gz  /usr/local/
# centos镜像中没有 vim、ip addr、ifconfig 
RUN yum -y install vim
#安装ip addr
RUN yum -y install iproute
#安装ifconfig
RUN yum -y install net-tools
# ENV 指令设置环境变量
ENV MYPATH /usr/local
# 工作目录
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_333
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.81
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.81
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASH/bin

EXPOSE  8080
# 容器启动后  运行tomcat 打印日志
CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/logs/catalina.out

4.3 构建镜像,因为取名的时候是Dockerfile 官方 所以不需要 -f 指定文件

docker build -t  mytomcat .

4.4 启动镜像

4.4.1指定路径挂载
docker run -d -p 9090:8080 --name wkftomcat -v /home/wukefeng/build/tomcat/test:/usr/local/apache-tomcat-8.5.81/webapps/test -v /home/wukefeng/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-8.5.81/logs mytomcat

使用docker inspect 容器id 查看容器的信息,
其中Mounts是挂载信息 这里用了指定路径挂载
在这里插入图片描述

4.4.2具名挂载
docker run -d -p 9090:8080 --name wkftomcat -v wkftomcat-webapps-test:/usr/local/apache-tomcat-8.5.81/webapps/test -v wkftomcat-logs:/usr/local/apache-tomcat-8.5.81/logs mytomcat

使用 docker volume ls 指令查看当前容器卷
在这里插入图片描述

使用 docker volume inspect 卷名 查看当前卷
在这里插入图片描述

4.5 访问测试

curl localhost:9090

4.6 发布项目

由于做了卷挂载,我们可以直接在本地宿主机编写项目就可以发布了

web.xml 文件 路径:WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    
    
</web-app>

index.jsp 文件 直接放在根目录

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello  docker-tomcat  jsp</title>
</head>
<body>
Hello docker tomcat  jsp <br/>
<%
System.out.println("------someone entry------");
%>
</body>
</html>
~             

访问 ip:9090/test

在这里插入图片描述

查看日志 具名挂载路径
cat /var/lib/docker/volumes/wkftomcat-logs/_data/catalina.out

在这里插入图片描述

5、将编写好的tomcat 镜像上传到阿里云

5.1 登录阿里云

5.2 找到容器镜像服务

5.3 创建命名空间

在这里插入图片描述

5.4 创建容器镜像

在这里插入图片描述

5.5 浏览阿里云信息

在这里插入图片描述
6、上传成功查看(配置了阿里云镜像加速,不知道为什么速度还是很慢)
在这里插入图片描述

6、将编写好的tomcat镜像上传到百度云

6.1 登录百度云

6.2 找到容器镜像服务

6.3 创建命名空间

在这里插入图片描述

6.4 容器镜像服务基本操作

按照下面链接操作
https://cloud.baidu.com/doc/CCR/s/nkgk8y45r

# 登录  这个username命令去  容器镜像服务控制台左侧导航栏中(访问凭证)点击查看。 
docker login --username=1dc08169ce9e47fd9f73106accc82673 registry.baidubce.com
# 重命名
docker tag [ImageId] registry.baidubce.com/[namespace]/[ImageName]:[镜像版本号]

[root@wkf980120 build]# docker tag b5dcf949541e registry.baidubce.com/wukefeng-baiduyun/mytomcat:1.0

# 推送
docker push registry.baidubce.com/wukefeng-baiduyun/mytomcat:1.0
Dockerfile中执行命令的几种方式 Dockerfile 是用于构建 Docker 镜像的文本文件,提供了一系列构建指令和配置,用于自动化和标准化 Docker 镜像的构建流程。一个 Dockerfile 可以通过依次执行每行命令来创建一个新的 Docker 镜像。因此,执行命令与 Dockerfile 的编写和构建密不可分。RUN 命令: RUN 命令是最常用的一种方式,它允许在构建 Docker 镜像期间执行任意命令。例如:CMD 命令: CMD 命令用于指定容器启动时要执行的默认命令。 阅读详情

相关推荐

一文读懂Docker之Dockerfile基本使用

本文介绍了Dockerfile常用指令及实战应用。主要内容包括:1)基本指令如FROM、RUN、CMD等;2)Shell与Exec格式区别;3)CMD指令特点及演示;4)实战将Python应用打包成镜像。重点讲解了指令格式、容器启动命令设置,并通过Flask应用实例演示了从Dockerfile构建到容器运行的全流程。文中还提供了错误排查方法,如通过临时镜像进入容器调试。

野熊佩骑的博客 1089

Dockerfile的使用

Dockerfile是一个用来构建镜像的文本文件,包含了一条条构建镜像所需的指令和说明。

zhulianseu的专栏 6507

手把手教你用Qt5打造二次元游戏启动器(附鸣潮同款UI源码)

本文详细介绍了如何使用Qt5框架从零开始构建一个功能完整、UI风格贴近《鸣潮》的二次元游戏启动器。教程涵盖无边框窗口、动态背景、自定义控件绘制、多线程资源加载以及下载管理等核心模块的实现,并提供了可运行的源码参考,帮助C++开发者和Qt爱好者深入掌握现代桌面应用开发技术。

weixin_29291863的博客 264

Dockerfile使用步骤

Dockerfile使用方法

tokenHAHA的博客 2020

学习STM32的无人机控制

设计并实现无人机控制系统,使用STM32单片机进行控制。无人机控制系统主要包括飞行控制、姿态控制、定位导航等功能。以下是一个基于STM32的无人机控制系统的代码案例。以上是一个基于STM32的无人机控制系统的代码案例,包括飞行控制、姿态控制和定位导航等功能。请根据实际情况进行修改和完善。

qq_67153941的博客 837

手把手教你用SIMCOM A7670C_FASL模组实现双路MQTT连接阿里云(附完整源码)

本文详细介绍了如何使用SIMCOM A7670C_FASL 4G模组实现双路MQTT连接阿里云,包括硬件配置、开发环境搭建、双路MQTT架构设计及实现细节。通过完整的源码示例和实战指南,帮助开发者快速掌握物联网设备开发中的多路MQTT连接技术,提升工业级应用的开发效率。

weixin_33696822的博客 226

dockerfile arg_Dockerfile使用

接应上篇,续讲前文。今天咱来聊一下Dockerfile的使用 。虽然可以通过docker commit命令来手动创建镜像,但是通过Dockerfile文件,可以帮助我们自动创建镜像,并且能够自定义创建过程。本质上,Dockerfile就是一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像,简化了从头到尾的构建流程并极大地简化了部署工作。使用Dockerfile的优点...

weixin_39927508的博客 1130

从原理图到PCB:手把手教你绘制DRV8301驱动板(附完整代码与避坑指南)

本文详细介绍了如何从原理图设计到PCB布局,手把手教你绘制DRV8301驱动板,特别适用于FOC(磁场定向控制)系统开发。内容涵盖元器件选型、电源树架构设计、栅极驱动电路、PCB布局技巧、焊接调试及代码配置,并附有完整代码与常见问题避坑指南,帮助工程师快速掌握DRV8301驱动板的设计与优化。

weixin_33716941的博客 394

dockerfile的使用,使用dockerfile部署springboot项目

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。官网:https://docs.docker.com/engine/reference/builder/

秃了也弱了 4611

需求跟踪详解

需求跟踪是指在软件项目开发过程中,建立并维护需求与项目各阶段工作产物(如设计文档、代码模块、测试用例等)之间对应关系的过程。它不仅记录需求从提出到实现的完整路径,还能反映需求变更时对各阶段工作的影响范围,是连接用户期望与实际软件开发产出的桥梁。

跟佟格湾一起学习计算机知识吧~ 1422

APM32取代STM32的经验分享

我仔细检查了代码中与硬件相关的部分,例如外设寄存器的访问和中断处理程序的设置,并进行了相应的修改。在本文中,我将分享我将APM32引入项目中取代STM32的经验,并提供相应的源代码。我查看了APM32的官方网站、开发者论坛和相关社交媒体,了解了开发者社区的活跃度和可用的资源。总结起来,将APM32替换STM32的过程需要经过几个关键步骤:了解APM32的规格和功能、评估软件生态系统、迁移代码和调试,以及性能和功耗优化。在开始替换之前,我对APM32进行了详细的研究和评估,以确保它能够满足项目的需求。

UplKubernetes的博客 2004

Dockerfile使用

官网地址。

onePlus5T的博客 4020

倍福---EL2262模块飞拍配置

控制器安装了twincat3,用EL2262实现相机飞拍功能。本文档只介绍如何通过EL2262实现飞拍的触发,并不涉及视觉方面的处理 参考文章: https://author.baidu.com/home?from=bjh_article&app_id=1669190598708386 https://mp.weixin.qq.com/s/r4Iq8kOP-o4_M8vCce5M9g 1、 飞拍的应用 在大多数场合,只能当被检测工件和相机都处于静止状态下才能进行拍照,拍照完成后,再移动工件或相机,进

weixin_41883890的博客 3738

Ubuntu上,使用Dockerfile

docker官方文档对初学者极不友好,本文试图形成一篇学习者友好的入门指引。 本文基于Ubuntu,docker在windows下有很多不同的用法,本文不涉及。 本文只讲Dockerfile的使用,docker的安装和手工使用见https://blog.youkuaiyun.com/xiefeisd/article/details/88412334 1 hello world 1.1 创建镜像 $ ...

xiefeisd的博客 4619

RK3568平台开发系列讲解(音频篇)配置声卡

📢本篇文章介绍如何配置声卡。

内核笔记 2448

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Dockerfile

Dockerfile指令

Sudo_Wang的学习记录 3187

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Dockerfile(Dockerfile的详细使用、通过Dockerfile构建apache镜像)

文章目录1 Dockerfile介绍2 基本结构2.1 Dockerfile分为四部分3 Dockerfile 基础知识4 Dockerfile常用指令4.1 FROM4.2 LABEL MAINTAINER4.3 RUN4.4 CMD4.5 EXPOSE4.6 ENV4.7 COPY4.8 ADD4.9 ENTRYPOINT4.10 VOLUME4.11 USER4.12 WORKDIR4.13 ONBUILD5 构建镜像注意事项6 使用Dockerfile构建apache镜像 1 Dockerfile介

m0_56305656的博客 3878

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

dockerfile

dockerfile

Drw_Dcm的博客 2124

DockerFile

DockerFile是什么 DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 构建三步骤:编写DockerFile文件、docker build、docker run DockerFile、Docker镜像与Docker容器关系: 从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段, DockerFi...

ALLENsakaru的博客 1886

使用Dockerfile创建docker镜像及Dockerfile命令详解

Dokerfile 是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节。 1、先来编写一个最简单的Dockerfile文件 FROM nginx RUN echo '&lt;h1&gt;welcome to nginx by dockerfile build&lt;/h1&gt;' /usr/share/nginx/html/index.html 该Dockerfile 非常简单...

淡淡的倔强的博客 8168

Dockerfile 使用介绍

我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dockerfile 是镜像和容器的关键,Dockerfile 可以非常容易的定义镜像内容,同时在我们后期的微服务实践中,Dockerfile 也是重点关注的内容,今天我们就来一起学习它。首先通过一张图来了解 Docker 镜像、容器和 Dockerfile 三者之间的关系。通过上图可以看出使用 Dockerfile 定义镜像,运行镜像启动容器。

Mr. David 专栏 1939

DockerFile简单使用

这里是dockerfile的小结,还有整个的一个基础docker的总结在这里:https://blog.youkuaiyun.com/hello_list/article/details/124221409,如果看到这篇一定要链接看看,有惊喜哦! 构建镜像的脚本文件; 我们发现我们从dockerhub仓库拉取的镜像都是最基础的,在使用中很不方便,我们需要一些功能,但是并没有,比如我们开启好几个centos想要ping一下网络,也是没有,这样就很不方便,那这里我们就可以自己构建镜像,添加具

hello_list的博客 8788
上一篇: docker的commit和容器数据卷
下一篇: Docker网络及SpringBoot应用打包
花落 失忆
博客等级 码龄6年 33粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值