Docker 入门到精通

1、DockerFile 介绍

dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。

具体步骤:

1、编写一个 dockerfile 文件

2、docker build 构造一个镜像

3、docker run 运行镜像

4、docker push 发布镜像

DockerFile 构建过程

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

2、从上往下顺序执行

3、# 表示注释

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

DockerFile 指令

FROM       #基础镜像
MAINTAINER    #镜像是谁写的
RUN        #镜像构建时需要运行的命令
ADD        #添加基础镜像之外的其他内容
WORKDIR      #镜像工作目录
VOLUME      #设置容器卷挂载目录
EXPOSE      #暴露端口 -p一样
CMD        #指定容器启动时运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT    #指定容器启动时运行的命令,可以追加命令
ONBUILD      #当构建一个呗继承dockerfile时触发 ONBUILD
COPY      #类似ADD,将文件拷贝到镜像中
ENV        #构建时设置环境变量

实战测试

docker 镜像有 99% 都是从 scratch 这个基础镜像构建的。

[root@localhost dockerfile]# vi dockerfile-centos
FROM centos
MAINTAINER luojie<123@qq.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "-----end-------"
CMD /bin/bash
[root@localhost dockerfile]# docker build -f dockerfile-centos -t lj_df_centos .
[root@localhost dockerfile]# docker images
REPOSITORY      TAG        IMAGE ID            CREATED             SIZE
lj_df_centos    latest     179579582bbb        14 minutes ago      291MB#新生成的centos镜像工作目录在/usr/local 多了vim和ifconfig命令

docker history 镜像 id 查看镜像构建历史

CMD 和 ENTRYPOINT 区别

CMD        #指定容器启动时运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT    #指定容器启动时运行的命令,可以追加命令
[root@localhost dockerfile]# vi dockerfile-cmd
FROM centos
CMD ["ls","-a"]
[root@localhost dockerfile]# docker build -f dockerfile-cmd -t cmd-test .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM centos---> 300e315adb2f
Step 2/2 : CMD ["ls","-a"]
...
[root@localhost dockerfile]# docker run ea34d5842115
.
..
.dockerenv
bin
dev
etc
home
[root@localhost dockerfile]# docker run ea34d5842115 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled
#输入-l命令提示无法识别,原因是-l不是一个独立命令,会替换["ls","-a"],所以报错。
[root@localhost dockerfile]# docker run ea34d5842115 pwd
/
#输入pwd可以正常运行。CMD是覆盖命令。
[root@localhost dockerfile]# vi dockerfile-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"]
[root@localhost dockerfile]# docker build -f dockerfile-entrypoint -t entrypoint-test .
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM centos---> 300e315adb2f
Step 2/2 : ENTRYPOINT ["ls","-a"]
[root@localhost dockerfile]# docker run 4404aae5e7a5
.
..
.dockerenv
bin
dev
etc
[root@localhost dockerfile]# docker run 4404aae5e7a5 -l
total 0
drwxr-xr-x.   1 root root   6 Jan 18 16:16 .
drwxr-xr-x.   1 root root   6 Jan 18 16:16 ..
-rwxr-xr-x.   1 root root   0 Jan 18 16:16 .dockerenv
lrwxrwxrwx.   1 root root   7 Nov  3 15:22 bin -> usr/bin
#输入-l可以识别,相当于ls -al,ENTRYPOINT是追加命令。

实战:DockerFile 制作 centos+jdk+tomcat 镜像

FROM centos
MAINTAINER luojieCOPY readme.txt /usr/local/readme.txtADD apache-tomcat-9.0.43.tar.gz /usr/local
ADD jdk-8u131-linux-x64.tar.gz /usr/localRUN yum -y install vimENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_131
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.43
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.43/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.43/logs/catalina.out

启动 centos+jdk+tomcat

#生成镜像 docker build -t lj_tomcat .#运行容器 docker run -d -p 8080:8080 -v /test/abc:/usr/local/apache-tomcat-9.0.43/webapps/abc 9463c7c88bea

在 abc 目录下新增 a.html,浏览器访问:http://ip:8080/abc/a.html即可看到效果。

小结

最后: 大家可以去我博客首页看下侧边栏! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。


好文推荐

2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!

什么样的人适合从事软件测试工作?

软件测试和软件开发哪个发展更好

那个准点下班的人,比我先升职了…

拿来吧你! | 从入门到精通docker ,都在这里了相关推荐

  1. java从入门到精通_想要开始学java?你要的java从入门到精通布列如下!

    java从入门到精通,让我来告诉你! 毫无疑问,java是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握java看似是一件十分困难的事.其实,只要掌握了科学的学习方法 ...

  2. 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通

    UE5 Niagara学习教程  课程获取:虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通-云桥网 你会学到什么 我将通过创建各种各样的实时效果来教你虚幻引擎中强大的粒子系统. 我们将从简单的基 ...

  3. Revit:从入门到精通学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) |大小:8.07 GB |时长:12h 16m Re ...

  4. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  5. meteor从入门到精通_我已经大规模运行Meteor一年了。 这就是我所学到的。

    meteor从入门到精通 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 我已经大规模运行Meteor一年了. 这就是我所学到的. (I've been runni ...

  6. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  7. ASP网络编程从入门到精通 下载

    <ASP网络编程从入门到精通> 清华大学出版社 特点: 面向ASP零基础读者,循序渐进 全面分析ASP技术细节 用代码描述个个知识点,操作性强 通过典型模块设计,体会ASP的奥妙 通过网上 ...

  8. 【组队学习】【28期】数据采集从入门到精通

    数据采集从入门到精通 论坛版块: http://datawhale.club/c/team-learning/38-category/38 开源内容: https://github.com/dataw ...

  9. MAT入门到精通(二)

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 阅读本文大概需要6分钟. 上一篇文章MAT入门到精通(一)介绍了MAT的使用场景和基本概念,这篇文 ...

最新文章

  1. mysql中groupby会用到索引吗_mysql order by 与索引的使用
  2. Hyperledger Fabric 核心模块(5)peerer共识
  3. C语言将向量中的所有0移至末尾(附完整源码)
  4. Python|队列Queue
  5. 忘记MySQL密码怎么办?一招教你搞定!
  6. source code怎么用_code-builder代码生成器
  7. 排球计分程序重构(四)
  8. MTK:NICODE与ASCII码使用
  9. 读书笔记 - 《皇上走了》
  10. 【读书笔记——开关电源】《精通开关电源设计》(1)
  11. 声艺fx16调音台怎么样_声艺FX16II 声艺(Soundcraft) FX16ii 调音台
  12. DIADEM_metric不能运行及解决办法
  13. ios真机调试出现“不受信任的开发者”解决方法
  14. 2021 ICCV TIMI-Net 抠图网络论文笔记
  15. 第10章 主成分分析(PCA)
  16. php uploadify上传文件
  17. POI导出excel并设置单元格样式和单元格内容中文自适应
  18. 年薪 30W 和 60W,数据分析师的两道坎
  19. AI周报丨中国信息通信研究院发布《AI框架发展白皮书》;华为开源首个NLP中文数据集-悟空;AAAI2022年度论文公布。
  20. 水桶服务器eula文件,craftbukkit

热门文章

  1. python装饰器函数执行后日志_python 某一函数上面有多个装饰器
  2. 山西台达plc可编程控制器_(PLC)可编程控制器的编程语言你了解吗?不妨看看...
  3. arduino动态刷新显示_2019 台北电脑展:华硕显示器产品精锐尽出
  4. 【毕设】jsp+基于JB的人事管理系统(源代码+论文)
  5. gittrack_Git 分支跟踪详解(remote branch tracking)
  6. 更新性能服务器图片介绍,图文并茂 讲述企业版Linux性能发展史
  7. mysql主从配置自增id_MySQL自增列主从不一致的测试(r12笔记第37天)
  8. kindeditor java上传_富文本编辑器kindeditor上传图片的配置方法
  9. Qt安装Windows调试器
  10. mysql 库存预警_仓库管理中如何实现库存预警