Docker笔记:关于Dockerfile及构建镜像

Dockerfile 的作用

  • Dockerfile让docker命令变得更简单,是用于构建docker镜像,实现自动化部署

Dockerfile 构建自己的centos镜像

  • 这里有一个应用场景,创建一个自己的centos镜像,这个镜像有我们所需的软件
    • 可以将我们一系列的操作,配置在dockerfile中
    • 通过 docker build 就可以生成我们自己的 centos镜像

1 ) 编写 Dockerfile

FROM centos
RUN yum install -y net-tools
WORKDIR /home/www
CMD /bin/bash

2 )构建centos镜像

  • $ docker build -f Dockerfile -t my_centos:v1.0.0 .
    • 这里 -f Dockerfile 指定Dockfile文件
    • 这里Dockerfile用的文件名就是Dockerfile可以不加,忽略
    • -t 是打镜像标签
    • 注意,最后面的 .

3 )运行新打包的镜像

  • 运行:$ docker run -it my_centos
    • 启动后,自动进入 /home/www目录中,可以使用 pwd 来测试
    • ifconfig 测试可以输出,说明 net-tools 已经正确被安装了
    • 这里 run 的时候,后面没有 /bin/bash 但是运行之后
    • 直接打开了bash环境了,是Dockerfile中的CMD执行了

Docker 打包 Nginx 镜像

  • Dockerfile 构建一个 nginx 镜像
  • 构建好的镜像内会有一个 /usr/share/nginx/html/index.html文件

1 )编写 Dockerfile

  • 新建 Dockerfile_nginx 文件
    FROM nginx
    RUN echo 'hello docker' > /usr/share/nginx/html/index.html
    WORKDIR /usr/share/nginx/html
    
  • 注意,上面没有 CMD, 如果添加命令,就会替换了 nginx 的默认启动命令
  • $ docker build -f Docker_nginx -t my_nginx:v1.0.0 . 这里是打包
  • $ docker run -itd -p 80:80 my_nginx:v1.0.0 运行新镜像
  • $ curl 127.0.0.1 可看到结果
  • $ docker exec -it 容器id /bin/bash
    • $ pwd 可看到 在 工作目录 /usr/share/nginx/html中

关于 Dockerfile中的一些配置信息

FROM           # 基础境像,一切从这里开始构建
MAINTAINER     # 镜像是谁写的,姓名+邮箱
LABEL          # LABEL 指令用来给镜像添加一些元数据
RUN            # 编译镜像时运行的脚本
COPY           # 编译镜像时复制文件到镜像中 不会解压
ADD            # 编译镜像时复制文件到镜像中 tar.gz 文件会自动解压
WORKDIR        # 镜像的工作目录 相当于 cd 的 命令
CMD            # 设置容器启动的命令,会被run时指定的命令替换掉, 比如 docker -it nginx /bin/bash 这里的 /bin/bash
ENTRYPOINT     # 设置容器启动的命令,不会被外部配置替换
EXPOSE         # 设置镜像暴露的端口,告诉外面容器暴露的端口 和 -p 不一样
VOLUME         # 设置容器挂载的卷,告诉外面容器暴露的数据卷 和 -v 不一样,在容器内使用 df 命令可以看到挂载的卷
ENV            # 设置容器的环境变量 和 -e 一样

构建一个复杂版的 centos 镜像

1 )编写 Dockerfile_centos 文件

FROM  centos
MAINTAINER  Wang
ENV MyLocal /home
WORKDIR $MyLocal
EXPOSE 80
VOLUME ["volume1", "volume2"] # 这样写在根目录下会产生这两个目录
RUN yum install -y net-tools
RUN yum install -y vim
ADD test.tar.gz /root
COPY test.tar.gz /home
CMD /bin/bash

2 ) 构建新镜像

  • $ docker build -f Dockerfile_centos -t my_centos:v2.0.0 .

3 )运行镜像

  • $ docker images 找到刚才打包的新镜像
  • $ docker run -it --name my_centos2 my_centos:v2.0.0的镜像id

4 )验证

  • $ pwd 验证了 workdir 是 /home
  • 再验证打包与解压的结果,验证通过
  • /volume1, /volume2 都存在
  • $ printenv 验证环境变量,验证通过
  • 其他验证,通过
  • $ docker inspect 镜像id | grep xxx 这里的 xxx 是你想看的任何相关信息
  • 这样可以看很多细节
  • 可查看 容器中的 /volume1 在物理机上的位置
  • 拿到位置后可验证内外数据同步

Dockerfile 中CMD与ENTRYPOINT

  • CMD 可被追加的命令替换
  • ENTRYPOINT 不可被替换,如果有命令,会被追加
    • 如果 ENTRYPOINT 配置的是 [“ls”, “-a”]
    • $ docker run -it 镜像id -l
      • 后面的 -l会追加,类似 ls -a -l

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

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

相关文章

人大金仓V8R6进阶授权操作

授权用户myuser在模式myschema 单表的所有权限 GRANT ALL ON TABLE "myschema"."mytable" to "myuser"; 授权用户myuser在模式myschema 单表的查询权限 GRANT SELECT ON TABLE "myschema"."mytable" to "myuser";…

jQuery遍历与删除添加节点

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。 🎅**学习目标: 坚持每一次的学习打卡 文章…

手拉手探索JSONCrack数据可视化

JSON Crack数据可视化工具 官网:https://jsoncrack.com/ 项目地址:https://github.com/AykutSarac/jsoncrack.com SON Crack 是一个很方便的 JSON 数据可视化工具。 该项目不是简单的展示 JSON 数据,而是将其转化为类似思维导图的形式,支持放大/缩小、展…

技术资讯:VSCode大更新,这两个功能终于有了

大家好,我是大澈! 本文约1200字,整篇阅读大约需要2分钟。 感谢关注微信公众号:“程序员大澈”,然后免费加入问答群,从此让解决问题的你不再孤单! 1. 资讯速览 就在前阵子,前端人都…

gcc的编译过程

gcc编译过程包括预处理&#xff0c;编译&#xff0c;汇编&#xff0c;链接。 &#xff08;1&#xff09;预处理 预处理就是对文件中带#内容的处理&#xff0c;包括宏定义&#xff0c;条件编译和头文件。 可以通过gcc -E <file> -o xxx.i 来进行预处理 查看.i 文件可发现…

Java LeetCode篇-二叉树经典解法(实现:判断平衡二叉树、找两个节点最近的祖先等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 平衡二叉树 1.1 实现判断平衡二叉树的思路 1.2 代码实现判断平衡二叉树 2.0 二叉树的层序遍历 2.1 实现二叉树层序遍历的思路 2.2 代码实现二叉树层序遍历 3.0 …

【ITK库学习】使用itk库进行图像滤波ImageFilter:模糊降噪

目录 1、itkDiscreteGaussianImageFilter 离散高斯2、itkBinomialBlurImageFilter 二项式模糊3、itkSmoothingRecursiveGaussianImageFilter 图像模糊可以削弱图像频谱的高频部门 1、itkDiscreteGaussianImageFilter 离散高斯 该类通过图像与离散高斯算子&#xff08;内核&…

苹果app应用ipa文件程序开发后如何运行到苹果iOS真机上测试?

在苹果应用程序开发过程中&#xff0c;将app安装于真机进行测试是一个不可或缺的步骤&#xff0c;它可以帮助你检测app在实际设备上的性能表现及存在的潜在问题。这篇文章将详细阐述如何将开发好的苹果app&#xff08;.ipa文件&#xff09;安装到真机上进行测试。 图片来源&…

文心一言 VS 讯飞星火 VS chatgpt (155)-- 算法导论12.3 2题

二、用go语言&#xff0c;假设通过反复向一棵树中插人互不相同的关键字来构造一棵二叉搜索树。证明&#xff1a;在这棵树中查找关键字所检查过的结点数目等于先前插入这个关键字所检查的结点数目加 1。 文心一言&#xff1a; 为了证明这个结论&#xff0c;我们可以使用二叉搜…

VisualSVN Server的安装全过程

目录 背景: 安装过程&#xff1a; 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xff1a; 步骤5&#xff1a; 安装出现的bug&#xff1a; 问题: 解决办法: 总结: 背景: VisualSVN Server 是一款免费的 SVN (Subversion) 服务器软件&#xff0c…

2创建工程及点灯

1:软件安装&#xff1a; 1关注公众号“纸飞资”&#xff0c;键盘输入keil“”,按照文章要求安装编译软件 2芯片安装&#xff1a; 方式一&#xff1a;离线安装。去Keil公司官网的器件支持包下载页面选择对应的公司及器件型号&#xff0c;然后在Device Family Pack文本框中点击…

Python异常、模块和包

Python异常、模块和包 1.了解异常2.异常的捕获方法3.异常的传递4.Python模块5.Python包 1.了解异常 1.1什么是异常 当检测到一个错误是&#xff0c;Python解释器就无法继续执行了&#xff0c;发而出现了一些错误提示&#xff0c;这就是所谓的“异常”&#xff0c;也就是我们常…

二叉树的最大深度(力扣

int maxDepth(struct TreeNode* root) {if(!root) return 0;return fmax(maxDepth(root->left),maxDepth(root->right))1; }

【开源软件】最好的开源软件-2023-第26名 Accelerate

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

PHP的最新版本是多少?有什么新特性?

截至日期&#xff08;2022年1月&#xff09;&#xff0c;PHP的最新稳定版本是PHP 8.0。以下是PHP 8.0的一些主要新特性&#xff1a; JIT 编译器&#xff1a; 引入了即时编译&#xff08;Just-In-Time&#xff0c;JIT&#xff09;引擎&#xff0c;提升了PHP脚本的执行性能。 命…

可以操作Access的ORM工具,MS Access日期的坑

可以操作Access的ORM工具&#xff0c;MS Access日期的坑 MS Access日期可以查询返回&#xff1b; 但作为参数&#xff0c;不能过滤成功&#xff0c;则试了三种日期类型都不可以; MS Access日期作为入参&#xff0c;在驱动官网找相关资料&#xff0c;找不到实例&#xff1b; …

【精选】小白是如何挖漏洞的(技巧篇)

目录&#xff1a; 怎么找漏洞 找到后如何挖漏洞 关于通杀漏洞N day漏洞的挖掘 漏洞如何提交 每小结都有提供对应的案例&#xff0c;简直不要太nice&#xff01; 这个月的SRC活动也快开始了&#xff0c;看到群里的小伙伴在问如何找漏洞&#xff0c;SQL注入的漏洞咋找&#x…

理解并使用React的有状态组件和无状态组件

在React中&#xff0c;有状态组件和无状态组件是两种基本的组件类型&#xff0c;它们在特性和使用场景上有所不同。本文将深入探讨这两种组件类型的理解及使用场景。 一、有状态组件 特点&#xff1a; 类组件&#xff1a;React中的有状态组件通常是使用ES6的类语法来定义的。…

SQL注入基础宝典(原理+详解)[每天更新]

简介: 开局先叠甲:新手上路&#xff0c;内容多有纰漏&#xff0c;仅供学习和参考&#xff0c;欢迎在评论区留言&#xff0c;同步更新。 因为自己是自学&#xff0c;没有很系统的知识体系&#xff0c;大半个月来&#xff0c;刷了一些sql注入的题目&#xff0c;包括封神榜&#x…

慢SQL诊断

最近经常遇到技术开发跑来问我慢SQL优化相关工作&#xff0c;所以干脆出几篇SQL相关优化技术月报&#xff0c;我这里就以公司mysql一致的5.7版本来说明下。 在企业中慢SQL问题进场会遇到&#xff0c;尤其像我们这种ERP行业。 成熟的公司企业都会有晚上的慢SQL监控和预警机制。…