Docker Dockerfile

1、概念介绍

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

每条保留字指令都必须为大写字母且后面要跟随至少一个参数

指令按照从上到下,顺序执行

#表示注释

每条指令都会创建一个新的镜像层并对镜像进行提交

DockerFile 执行流程

docker从基础镜像运行一个容器

执行一条指令并对容器作出修改

执行类似docker commit的操作提交一个新的镜像层

docker再基于刚提交的镜像运行一个新容器

执行dockerfile中的下一条指令直到所有指令都执行完成


DockerFile 保留字

保留字

说明

FROM

基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from

MAINTAINER

镜像维护者的姓名和邮箱地址

RUN

容器构建时需要运行的命令

两种格式:shell格式、exec格式

RUN是在 docker build 时运行

EXPOSE

当前容器对外暴露的端口

WORKDIR

指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

USER

指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

ENV

用来在构建镜像过程中设置环境变量

ADD

将宿主机目录下的文件拷贝进镜像且会自动处理uRL和解压tar压缩包

COPY

类似ADD,拷贝文件和目录到镜像中。

将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

VOLUME

容器数据卷,用于数据保存和持久化工作

CMD

启动容器启动后要做的事情。

Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。

ENTRYPOINT

也是用来指定一个容器启动时要运行的命令

类似于cMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序

ENTRYPOINT 命名

2、构建过程
自定义镜像

需求:Centos7镜像具备vim+ifconfig+jdk8

编写Dockerfile

FROM centos:7
MAINTAINER lemon<codelemon@163.com>ENV MYPATH /usr/local
WORKDIR $MYPATH# 安装Vim 编辑器
RUN yum -y install vim
# 安装 ifconfig 命令查看网络IP
RUN yum -y install net-tools
# 安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
# jdk软件包需要和Dockerfile在同一个包中
ADD jdk-8u351-linux-x64.tar.gz /usr/local/java/# 配置Java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_351
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATHCMD echo $MYPATH
CMD echo "success------------------ok"
CMD /bin/bash

构建:docker build -t centosjava8:1.5 .

虚悬镜像

仓库名、标签都是<none>的镜像,俗称dangling image

编写Dockerfile

from ubuntu
CMD echo 'action is success'

构建镜像:docker build .

# 查看虚悬镜像
docker image ls -f dangling=true# 删除所有的虚悬镜像
docker image prune
3、发布代码

使用Maven 的 package 命令 将工程打成jar包

将Jar包 打进镜像里面:编写Dockerfile(Jar需要和Dockerfile在同一目录下)

FROM java:8
MAINTAINER lemon<codelemon@163.com># 指定临时文件目录
VOLUME /tmp
# 更改jar包名称
ADD docker_boot-0.0.1-SNAPSHOT.jar lemon_docker.jar# 运行jar包
RUN bash -c 'touch /lemon_docker.jar'
ENTRYPOINT ["java","-jar","/lemon_docker.jar"]# 暴露6001端口作为服务
EXPOSE 6001

构建镜像:docker build -t lemon_docker:1.6 .

启动容器:docker run -d -p 6001:6001 镜像ID

测试访问:curl 127.0.0.1:6001/order/index

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/452998.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024数学建模美赛F题Reducing Illegal Wildlife Trade原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了数学建模美赛本次F题目非法野生动物贸易完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 F题论文共42页&…

EtherCAT转ModbusTCP网关

一、功能概述 1.1设备简介 本产品是EtherCAT和Modbus TCP网关&#xff0c;使用数据映射方式工作。 本产品在EtherCAT侧作为EtherCAT从站&#xff0c;接TwinCAT、CodeSYS、PLC等&#xff1b;在ModbusTCP侧做为ModbusTCP主站&#xff08;Client&#xff09;或从站&#xff08;…

项目02《游戏-04-开发》Unity3D

基于 项目02《游戏-03-开发》Unity3D &#xff0c; 因前三集资源以及代码冗余问题&#xff0c;本次项目对前三集进行了重做&#xff0c;资源及代码如下&#xff0c; 首先导入场景及人物资源&#xff0c; 为人物添加动画控制器Animator组件&#xff0c; 创建动画控…

【算法与数据结构】583、72、LeetCode两个字符串的删除操作+编辑距离

文章目录 一、583、两个字符串的删除操作二、72、编辑距离三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、583、两个字符串的删除操作 思路分析&#xff1a;本题的思路和115、不同的子序列差不多&#xff0c;只是变成…

C#获取当前CPU,内存使用详情及常用WMI查询语句

1&#xff0c;获取当前CPU使用率&#xff08;需添加System.Management.dll&#xff09;&#xff1a; string queryStr "select * from win32_processor";System.Management.ManagementObjectSearcher searcher new System.Management.ManagementObjectSearcher(qu…

【MATLAB源码-第132期】基于matlab的淘金优化算法(GRO)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 淘金优化算法&#xff08;GoldRush Optimizer&#xff0c;简称GRO&#xff09;是一种启发式优化算法&#xff0c;它受到淘金过程的启发。在淘金过程中&#xff0c;淘金者在河流或矿区中寻找金矿&#xff0c;通过筛选沙砾来寻…

数据库学习笔记2024/2/4

随笔 1. 为什么学? 认识数据,熟悉数据,掌握数据。 进企业必备技能。 2. 怎么学? 1、MySQL数据库就是存储和管理数据的一个大型软件,这个软件有一个专门的语言叫SQL,主要学的是SQL语言,但想要达到企业用人标准,就还得学会熟练使用MySQL这个软件。 2、学习分三阶段: 一. …

mysql:事务的特性ACID、并发事务(脏读、不可重复读、幻读、如何解决、隔离级别)、undo log和redo log的区别、相关面试题和答案

事务是一组操作的集合&#xff0c;它会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务是不可分割的…

Angular BaseView抽离页面公用属性

前言 如果有一系列的页面布局很类似&#xff0c;为了节省时间&#xff0c;我们可以把这些类似的页面所通用的属性和方法抽离成一个BaseView&#xff0c;让其它页面继承该基础页面&#xff0c;同时将一些经常改变的属性和差异的属性写到配置文件里。例如树容器初始时是否展开、…

问题:下列哪些属于历史文化资源的特征( ). #学习方法#学习方法

问题&#xff1a;下列哪些属于历史文化资源的特征( ). A、稀缺性 B、脆弱性 C、可再生性 D、多样性 参考答案如图所示

C语言KR圣经笔记 7.1标准输入和输出 7.2格式化输出-printf

第七章 输入和输出 输入和输出功能并不是 C 语言本身的一部分&#xff0c;故到目前为止&#xff0c;本书都没有对其着重说明。然而&#xff0c;程序与其环境之间交互的方式&#xff0c;比书中之前所展示的更为复杂。本章我们会详描述标准库&#xff0c;即一系列为 C 程序提供输…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内