前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「docker实战篇」python的docker-docker镜像的创建使用dockerfile(33)

「docker实战篇」python的docker-docker镜像的创建使用dockerfile(33)

作者头像
IT架构圈
发布2019-05-07 17:00:43
1.2K0
发布2019-05-07 17:00:43
举报
文章被收录于专栏:IT架构圈IT架构圈

从上篇docker commit学习可以了解到,镜像的定制其实每一层添加的配置和文件,如果把每一层的修改配置,修改文件,都写入脚本,用这个脚本构建定制镜像,无法重复的问题,镜像构建透明性的问题,体积的问题都会解决。这个脚本就是Dockerfile。

Dockerfile
  • 什么是dockerfile

一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

  • 了解FROM

FROM指定基础镜像,基础镜像是必须指定的。而FROM就是指定基础镜像,因此一个Dockerfile中From是必备的指令,并且必须是第一条指令。在dockerhub上有很多高质量的docker镜像,有可以直接拿来使用的基础镜像:nginx,tomcat,java,python,php,mongodb。搜寻最符合使用的的一个基础镜像。

  • 了解RUN

RUN执行命令是用来执行命令行命令的。由于命令行的强大能力,RUN指令在定制镜像时最常用的指令之一。

shell 格式:RUN<命令>,就像直接在命令行中输入的命令一样
exec 格式:RUN["可执行文件","参数1","参数2"],这更像是函数调用中的格式
  • 不建议的写成下面这种Dockerfile

之前说过Dockerfile每个指令都会创建一个层,下面这种写法就是创建了7层的镜像,这样做就完全是没有意义的,很多运行不需要的东西都被装到这个镜像里面去了,编译环境更新软件包,产生非常臃肿层非常多的镜像,不仅仅增加了构建部署的时间,也很容易出错,也是初学docker容易犯的错误,之前我也犯过。镜像的层数是有限制的,最大层不能超过127层。镜像是多层存储的,在加入一层就是,之前的层不会被修改。

正确的方式。一定要做到每一层是需要的东西,任何无关的东西都要被清理掉。这也是制作镜像容易犯的错误,之前安装的文件没有清理。

实战编写Dockerfile
  • 创建目录,存放Dockerfile
mkdir newNginx
cd newNginx
  • 编写 Dockerfile
From nginx
RUN echo '<h1>welcome to idig8.com study docker</h1>' > /usr/share/nginx/html/index.html
  • 构建Dockerfile
docker build -t nginx:v2 .
docker images
  • 推送docker hub推送

登录docker hub

#先配置dns 8.8.8.8
 vi /etc/resolv.conf

docker login

设置仓库地址,登录hub.docker.com

更改名称

docker tag nginx:v2 zhugeaming/nginx:v2

完成推送

docker push zhugeaming/nginx:v2

查看结果

PS:其实在开发的时候,多任务的时候,只需要一个python3和mitmproxy的镜像环境,已经做好了,到时候直接用docker push zhugeaming/python3-appium,其实想学习docker其他内容可以看我之前写的其他文章。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Dockerfile
  • 实战编写Dockerfile
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档