Dockerfile构建过程详解

Dockerfile介绍

docker是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

1、编写一个dockerfile文件

2、docker build构建成为一个镜像

3、docker run 运行镜像                                                                                                                     

4、docker push 发布镜像(DockerHub、阿里云镜像仓库)


Dockerfile构建过程

基础知识


1、每个保留关键字(指令)都是必须是大写字母

2、执行从上到下顺序执行

3、# 表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交!

dockerfile是面向开发的,以后要发布项目,做镜像,就需要编写dockerfile文件

Docker 镜像逐渐成为企业交付的标准,必须要掌握!

步骤:开发,部署,运维    缺一不可

DockerFile:构建文件,定义了一切步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品

Docker容器:容器就是镜像运行起来提供服务的


DockerFile的指令

FROM                  #  基础镜像,一切从这里开始构建

MAINTAINER       #  镜像是谁写的,姓名+邮箱

RUN                     #  镜像构建的时候需要运行的命令

ADD                     #  步骤:tomcat镜像,这个tomcat压缩包!添加目录

WORKDIR            #  镜像的工作目录

VOLUME              #   挂载的目录

EXPOST               #   保留端口配置

CMD                  #  指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT          #   指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD               #   当构建一个被继承Dockerfile 这个时候就会运行  ONBUILD  的命令。触发指令

COPY                    #  类似ADD,将文件拷贝到镜像中

ENY                       #  构建的时候设置环境变量!

实战测试

Docker Hub中99%镜像都是从这个基础镜过来的 FROM scratch,然后配置需要的软件和配置来进行的构建

创建一个自己的centos

1、编写dockerfile的文件[root@wq dockerfile]# vim mydockerfile-centos
[root@wq dockerfile]#
[root@wq dockerfile]# cat mydockerfile-centosFROM centos:7
MAINTAINER wq<123456@qq.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash2、通过这个文件构建镜像#命令docker build -f dockerfile文件路径 -t 镜像名:[tag]
#官方命令是Dockerfile,使用这个命名,build的时候就会自动寻找这个文件,就不需要 -f 了#别忘了最后的点,表示当前目录[root@wq dockerfile]# docker build -f mydockerfile-centos -t mycentos:0.1 .3、测试运行[root@wq dockerfile]# docker images |grep centos
mycentos              0.1       6627b0adacef   54 seconds ago   501MB[root@wq dockerfile]# docker run -it mycentos:0.1
[root@775d3babc008 local]# pwd        #设置的工作目录,因此进入容器直接到了这个目录
/usr/local

对比:之前的原生的centos

增加之后的镜像

列出本地镜像变更历史

这样平时拿到一个镜像,就知道它是怎么做的了


CMD 和 ENTRYPOINT 区别

CMD                  #  指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT      #   指定这个容器启动的时候要运行的命令,可以追加命令

测试CMD

#编写dockerfile文件
[root@wq dockerfile]# cat dockerfile-cmd-test
FROM centos:7
CMD ["ls","-a"]#构建镜像
[root@wq dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest .
[+] Building 15.3s (5/5) FINISHED                                                                    docker:default=> [internal] load build definition from dockerfile-cmd-test                                                  0.0s=> => transferring dockerfile: 76B                                                                            0.0s=> [internal] load .dockerignore                                                                              0.0s=> => transferring context: 2B                                                                                0.0s=> [internal] load metadata for docker.io/library/centos:7                                                   15.2s=> CACHED [1/1] FROM docker.io/library/centos:7@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd6184  0.0s=> exporting to image                                                                                         0.0s=> => exporting layers                                                                                        0.0s=> => writing image sha256:c757e3a723ae82c9a6b3b7581f54ee6d140d3cd1f29acb9a4bcfe32ed77f8684                   0.0s=> => naming to docker.io/library/cmdtest                                                                     0.0s[root@wq dockerfile]# docker images |grep cmdtest
cmdtest               latest    c757e3a723ae   2 years ago      204MB#run运行  发现ls -a命令生效
[root@wq dockerfile]# docker run c757e3a723ae
.
..
.dockerenv
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var#想追加一个命令 -l     ls -al
[root@wq dockerfile]# docker run c757e3a723ae -l
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.#cmd的情况下 -l 替换了 CMD ["ls","-a"] 命令,-l 不是命令所以报错!

测试ENTRYPOINT

[root@wq dockerfile]# cat dockerfile-cmd-entrypoint
FROM centos:7
ENTRYPOINT ["ls","-a"][root@wq dockerfile]# docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
[+] Building 15.3s (5/5) FINISHED                                                                    docker:default=> [internal] load build definition from dockerfile-cmd-entrypoint                                            0.0s=> => transferring dockerfile: 89B                                                                            0.0s=> [internal] load .dockerignore                                                                              0.0s=> => transferring context: 2B                                                                                0.0s=> [internal] load metadata for docker.io/library/centos:7                                                   15.2s=> CACHED [1/1] FROM docker.io/library/centos:7@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd6184  0.0s=> exporting to image                                                                                         0.0s=> => exporting layers                                                                                        0.0s=> => writing image sha256:5184c7d459a0111136914d90d94e7121f7fce3c2746b17b74fc2f1e808a37da8                   0.0s=> => naming to docker.io/library/entrypoint-test                                                             0.0s[root@wq dockerfile]# docker images |grep entrypoint-test
entrypoint-test       latest    5184c7d459a0   2 years ago      204MB[root@wq dockerfile]# docker run 5184c7d459a0
.
..
.dockerenv
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[root@wq dockerfile]# docker run 5184c7d459a0 -l
total 64
drwxr-xr-x   1 root root  4096 Mar  3 12:06 .
drwxr-xr-x   1 root root  4096 Mar  3 12:06 ..
-rwxr-xr-x   1 root root     0 Mar  3 12:06 .dockerenv
-rw-r--r--   1 root root 12114 Nov 13  2020 anaconda-post.log
lrwxrwxrwx   1 root root     7 Nov 13  2020 bin -> usr/bin
drwxr-xr-x   5 root root   340 Mar  3 12:06 dev
drwxr-xr-x   1 root root  4096 Mar  3 12:06 etc
drwxr-xr-x   2 root root  4096 Apr 11  2018 home
lrwxrwxrwx   1 root root     7 Nov 13  2020 lib -> usr/lib
lrwxrwxrwx   1 root root     9 Nov 13  2020 lib64 -> usr/lib64
drwxr-xr-x   2 root root  4096 Apr 11  2018 media
drwxr-xr-x   2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x   2 root root  4096 Apr 11  2018 opt
dr-xr-xr-x 155 root root     0 Mar  3 12:06 proc
dr-xr-x---   2 root root  4096 Nov 13  2020 root
drwxr-xr-x  11 root root  4096 Nov 13  2020 run
lrwxrwxrwx   1 root root     8 Nov 13  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x  13 root root     0 Feb 27 06:47 sys
drwxrwxrwt   7 root root  4096 Nov 13  2020 tmp
drwxr-xr-x  13 root root  4096 Nov 13  2020 usr
drwxr-xr-x  18 root root  4096 Nov 13  2020 var

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

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

相关文章

PDF转Excel的未来:人工智能技术如何提升转换效率和准确性

随着信息技术的快速发展&#xff0c;PDF和Excel作为两种重要的文件格式&#xff0c;在日常生活和工作中扮演着至关重要的角色。PDF以其独特的跨平台阅读特性&#xff0c;成为了文件分享和传输的首选格式&#xff1b;而Excel则以其强大的数据处理能力&#xff0c;成为了数据分析…

【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素

作者推荐 视频算法专题 本文涉及的基础知识点 二分查找算法合集 LeetCode378. 有序矩阵中第 K 小的元素 给你一个 n x n 矩阵 matrix &#xff0c;其中每行和每列元素均按升序排序&#xff0c;找到矩阵中第 k 小的元素。 请注意&#xff0c;它是 排序后 的第 k 小元素&…

机器人持续学习基准LIBERO系列10——文件结构

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…

力扣日记3.3-【回溯算法篇】332. 重新安排行程

力扣日记&#xff1a;【回溯算法篇】332. 重新安排行程 日期&#xff1a;2023.3.3 参考&#xff1a;代码随想录、力扣 ps&#xff1a;因为是困难题&#xff0c;望而却步了一星期。。。T^T 332. 重新安排行程 题目描述 难度&#xff1a;困难 给你一份航线列表 tickets &#xf…

关于脉冲负载应用中电阻器,您需要了解的 11 件事?

不幸的是&#xff0c;电阻器在脉冲负载下可能会失效。当脉冲功率耗散到器件的电阻元件时&#xff0c;它会产生热量并增加电阻器的温度。过热会损坏电阻元件&#xff0c;导致电阻变化甚至设备开路。为了避免在设计中出现这种情况&#xff0c;以下是您在选择元件时应了解的有关电…

excel统计分析——拉丁方设计

参考资料&#xff1a;生物统计学 拉丁方设计也是随机区组设计&#xff0c;是对随机区组设计的一种改进。它在行的方向和列的方向都可以看成区组&#xff0c;因此能实现双向误差的控制。在一般的试验设计中&#xff0c;拉丁方常被看作双区组设计&#xff0c;用于提高发现处理效应…

Skipped breakpoint at because it happened inside debugger evaluation亲测可用

问题描述&#xff1a; 在多线程项目中&#xff0c;在idea中打断点时&#xff0c;有时会遇到下面这种情况&#xff1a; idea左下角出现一行红底或者绿底文字提示&#xff1a; Skipped breakpoint at because it happened inside debugger evaluation 然后我们能感受到的就是…

HTML中自定义鼠标右键菜单

今天突然有人跟我提到了HTML中如何自定义鼠标右键菜单&#xff0c;这里大概记录一下吧&#xff0c;方便下次直接复制。免得还去看API文档。 文章目录 HTML中自定义鼠标右键菜单结果如下所示可以稍微改一下鼠标悬浮到右键菜单时的样式结果如下所示 只在某个特定的div才可以显示…

C++自学精简实践教程

一、介绍 1.1 教程特点 一篇文章从入门到就业有图有真相&#xff0c;有测试用例&#xff0c;有作业&#xff1b;提供框架代码&#xff0c;作业只需要代码填空规范开发习惯&#xff0c;培养设计能力 1.2 参考书 唯一参考书《C Primer 第5版》​参考书下载&#xff1a; 蓝奏云…

STL——stack

目录 stack stack都有哪些接口 模拟实现一个stack stack 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即…

数据分析-Pandas数据的画图设置

数据分析-Pandas数据的画图设置 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&#x…

春招!启动了

大家好&#xff0c;我是洋子。今年的春招很多企业已经开始招聘了&#xff0c;像美团今年继续发力&#xff0c;24届春招以及25届暑期转正实习一共招聘4000人。另外&#xff0c;阿里&#xff0c;京东&#xff0c;顺丰等公司也已经开始春招&#xff0c;可以说招聘的号角已经正式吹…

十二、类与声明

类与声明 什么是类&#xff1f; 前情总结 前面22讲的课基本上就做了两件事 学习C#的基本元素学习类的成员 析构函数&#xff1a; 当对象不再被引用的时候&#xff0c;就会被垃圾回收器gc&#xff0c;回收。而收回的过程当中&#xff0c;如果需要做什么事情&#xff0c;就放在…

远程调用--Http Interface

远程调用--Http Interface 前言1、导入依赖2、定义接口3 创建代理&测试4、创建成配置变量 前言 这个功能是spring boot6提供的新功能&#xff0c;spring允许我们通过自定义接口的方式&#xff0c;给任意位置发送http请求&#xff0c;实现远程调用&#xff0c;可以用来简化…

关于硅金属电阻器?

EAK金属硅电阻器类似于陶瓷复合电阻器&#xff0c;在脉冲负载方面具有优势&#xff0c;需要高峰值功率或高电压与低电感&#xff08;如预充电电路&#xff09;的组合。硅金属电阻器具有更高的连续额定温度&#xff0c;为 350C&#xff0c;而陶瓷电阻器为 250C。这种扩展的温度范…

板子合集1.0

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 原文链接&#xff1a;https://blog.csdn.net/JK01WYX/ 文章目录 1.快速幂板子2.gcd得最大公约数3.堆优化的dijkstra板子4.线段树1板子 区间加线段…

中缀表达式转换逆波兰式(后缀表达式)

算法思路来自于王道的数据结构 #include <iostream> #include <stack> #include <map>using namespace std; string eq; stack<char> op; string rst ""; map<char, int> dict;// 获取优先级 int getPrio(char op) {if (op )return …

SWC Runnable

runnable概念 runnable是编写应用程序行为逻辑的 SWC 的一部分。Runnable 类似于 C 中的函数,类似RTOS中的task,程序运行的实体,swc的灵魂。在 AUTOSAR 中,我们在配置期间在 SWC 中创建 Runnable,并且 在 SWC 的相应源文件中生成Runnable 或函数骨架。骨架函数的名称与我…

【硬件工程师面经整理15_低通/高通/带通滤波器】

低通/高通/带通滤波器 1.1 低通滤波器1.2 高通滤波器1.3 带通滤波器 1.1 低通滤波器 【定义】电感阻止高频信号通过而允许低频信号通过&#xff0c;电容的特性却相反。信号能够通过电感的滤波器、或者通过电容连接到地的滤波器对于低频信号的衰减要比高频信号小&#xff0c;称…

第二篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas金融数据分析

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas 在金融数据分析中的常见用途和功能介绍二、金融数据清洗和准备示例代码三、金融数据索引和选择示例代码四、金融数据时间序列分析示例代码五、金融数据可视化示例代码六、金融数…