设为首页 收藏本站
查看: 1146|回复: 0

[经验分享] dockerfile

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-1 13:14:29 | 显示全部楼层 |阅读模式
1.dockerfile 指令介绍
FROM  <image>:<tag>  
指定基础image,没有<tag>时,说明为该image的最后修改的版本

MAINTAINER  <name>
指定镜像的创建者信息

RUN  <command>  (the command is run in a shell  -  ‘/bin/sh  -c’)
RUN  [“executable”,”param1”, “param2”...]  (exec from)
前者将在shell终端中运行命令,即/bin/sh -c;后者则使用exec执行。
指定使用其他终端可以通过第二种方式实现,例如 RUN [“/bin/bash”,”-c”,”echo hello”]
每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行。

CMD  [“executable”,”param1”,”param2”...]  //使用exec执行
CMD  command  param1  param2     //在/bin/sh中执行,提供需要交互的应用
CMD  [“param1”,”param2”] //提供给ENTRYPOINT的默认参数
注意:
ENTRYPOINT指定的是一个可执行的脚本或者程序的路径,该指定的脚本或者程序将会以param1和param2作为参数执行,所以如果CMD指令使用上面的形式,那么Docker中必须要有配套的ENTRYPOINT
指定启动容器执行的命令,每个dockerfile只能有一条CMD命令,如果指定了多条命令,只有最后一条会被执行。
如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。

ENTRYPOINT  command  param1  param2 (shell中执行)
ENTRYPOINT  [“executable”,”param1”,”param2”]
类似与CMD指令,不同之处是不可以被docker  run提供的参数覆盖。

USER  daemon
设置container容器的用户,默认是root用户

EXPOSE  <point>  <point>  ...
该指令会将容器中的端口映射成宿主机中的某个端口,同时需要运行容器的时候,可以配套的多次使用-p选项。

ENV  <key>  <value>
用于设置环境变量,指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持。

ADD  <src>  <dest>
该命令将复制指定的文件到容器中的指定目录中
其中<src>可以是dockerfile所在目录的一个相对路径;也可以是一个URL,还可以是一个tar文件(自动解压为目录)。例:ADD  test  /test (test存在于dockerfile的文件夹中)

COPY
类似与ADD

VOLUME  [“<mountpoint>”]
指定容器存储的挂载点

WORKDIR  /p1/p2
切换目录,相当cd

ONBUILD  指令  命令
指定的命令在构建镜像时并不执行,而是在他的子镜像中执行

构建指令:FROMMAINTAINER RUN  ENV  ADD  COPY
设置指令:CMD  ENTRYPOINTEXPOSE  VLOLUME  WORKDIR

2.实例:以centos7.2的基础镜像,创建含有httpd、sshd服务的镜像。
具体步骤:
1)宿主机中以ftp的形式搭建本地YUM源(在没有网络的情况下)
wKioL1i0M2jxxtNNAAALKdMAOyQ826.png
wKiom1i0M2niS9LyAAAGRicvzVg776.png
在宿主机中安装vsftpd服务,并启动。

wKioL1i0M2nQf3TtAAAOntyGfio070.png
添加防火前例外

wKiom1i0M2rgSDGlAAAdjEtAddo524.png
将centos7.2的光盘挂载到ftp的默认根目录下

wKiom1i0M2vBVkeWAAAQjGlHL8A336.png
开启路由转发

wKioL1i0M2yR-T3YAAAHz9UAaZc615.png
wKiom1i0M2yAu-b2AAAMPMHAWhk921.png
wKioL1i0M23QJwQZAAAMQoTAFcY434.png

wKiom1i0M26TlQRQAAAS0L06xRw128.png
wKioL1i0M3PBCstSAAAMMa7euWU601.png
创建测试容器,查看网络通信状态,并且测试yum安装。

2)开始编写dockerfile文件
wKiom1i0NEiiSMXaAAARg8y-oBs279.png
创建dockerfile文件的目录
在该目录中新建几个文件,其中,run.sh用来在容器中将要执行的脚本,local.repo是要复制到容器当中作为yum源的配置文件。

wKioL1i0NEjgCC1dAAAGNTXvlXA798.png
wKiom1i0NEixcXxwAAAIHoWCT3A507.png
run.sh的内容,保证httpd和sshd的进程在前台运行。

wKiom1i0NEnRzX4MAAAF1nOiY_c777.png
wKioL1i0NEnCAqANAAAIoowDUEQ521.png
在宿主机中生成密钥对,使宿主机能够通过密钥对认证ssh连接容器。

wKiom1i0NErw-xGZAAAGTmlU--o909.png
wKioL1i0NE6QOZ6mAABnFfx94Qk726.png
dockerfile的内容如上

wKiom1i0NFPSoH84AAAH2OX1Fes955.png
使用dockerfile创建镜像

wKioL1i0NFXih9pfAAAdCa1CtJ4464.png

测试镜像:
wKiom1i0NFuDPk-qAAAg_z-eY_c433.png
这里在宿主机中重新更改了网络设置,添加了新的网桥”br0”并桥接到物理网卡上,使用pipework工具给新建的容器分配了局域网地址。

wKiom1i0NbzxoFIBAAAFVCzFIT8671.png
ssh远程登录成功

wKioL1i0NcKhV0IaAAC0hI3aiqo785.png
在局域网中可以访问到容器



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348870-1-1.html 上篇帖子: docker volume 下篇帖子: docker 私有仓库搭建及测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表