29

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

 5 years ago
source link: https://idig8.com/2019/04/21/dockershizhanpianpythondedocker-dockerjingxiangdechuangjianshiyongdockerfile33/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

miAFNru.png!web

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层。镜像是多层存储的,在加入一层就是,之前的层不会被修改。

ERVNJ3J.png!web

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

A7byY3B.png!web

实战编写Dockerfile

  • 创建目录,存放Dockerfile
mkdir newNginx
cd newNginx

MbuQVrb.png!web

  • 编写 Dockerfile
From nginx
RUN echo '<h1>welcome to idig8.com study docker</h1>' > /usr/share/nginx/html/index.html

yQnMJb2.png!web

  • 构建Dockerfile
docker build -t nginx:v2 .
docker images

AVnI7nZ.png!web

  • 推送docker hub推送

    >登录docker hub

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

docker login

rMBJrqJ.png!web

UBN7ryn.png!web

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

mmARjiN.png!web

更改名称

docker tag nginx:v2 zhugeaming/nginx:v2

uE7BNvr.png!web

完成推送

docker push zhugeaming/nginx:v2

jQFFnm6.png!web

查看结果

QBnauey.png!web

JZBnqyV.png!web

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

百度未收录

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

>>原文链接地址:上一篇:

已是最新文章


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK