Docker-Dockerfile语法以及一些命令/关键字的区别浅析
2017-11-15 16:46
423 查看
一. Dockerfile 语法
如下为 安装 Kong 的Dockerfile:FROM ubuntu ADD jdk-8u51-linux-x64.tar.gz /opt/ ADD dsc-cassandra-2.1.11-bin.tar.gz /opt/ ADD kong-0.5.4.trusty_all.deb /opt/ ENV JAVA_HOME=/opt/jdk1.8.0_51 ENV PATH=$JAVA_HOME/bin:$PATH RUN apt-get update && apt-get install -y \ dnsmasq-base \ dnsmasq \ openssl \ curl RUN dpkg -i /opt/kong-0.5.4.trusty_all.deb EXPOSE 8000 ADD entrypoint.sh /bin/entrypoint.sh CMD ["/bin/entrypoint.sh"]
FROM ubuntu:FROM 必须在第一行,声明是基于什么镜像构建的。
ADD : 可以复制文件,也可以复制文件夹。注意: src 目录必须要和 Dockerfile 文件同级或者在下级,不能是 ../xx/xx 这种。
ENV =,或者 ENV :用于设置环境变量。
RUN :可以用于执行命令。
EXPOSE:暴露该容器的指定的端口给别的容器访问(不是暴露给宿主机访问)
CMD:一个Dockerfile 只能有一个 CMD。用于指定容器启动时执行的命令。
二. Dockerfile 一些关键字的区别
-p 和 expose-p 80:8080 外部80 端口转向 向外暴露是 8080 端口的 Docker 容器。如果只写 -p 80 ,那么当作是 -p 80:80。也就是说,容器之间可以访问该 暴露8080端口的容器,其他用户也可以访问
exposes 80:表示 容器之间可以访问该 暴露80端口的容器,但是其他用户不可以可以访问。这样其实就是做到了 封闭。
RUN,CMD,ENTRYPOINT
3个都可以执行命令。执行的时机不同,RUN 先于 CMD 和 ENTRYPOINT。CMD 和 ENTRYPOINT 区别在于 docker run 时 参数的传递方式不同。CMD 指定的命令可以被docker run 传递的命令覆盖。而ENTRYPOINT 会把 容器后面的所有内容都当成参数传递给指定的命令,但是不会覆盖。
ADD COPY
ADD 可以是 URL ,比 COPY 要强大点。COPY 能做的,ADD 都可以做。
相关文章推荐
- Docker:Dockerfile语法 以及 一些关键字的区别
- mysql与sqlserver的一些语法、数据类型、关键字区别
- cd /home 和cd home的区别以及一些常用的linux的命令
- Centos安装docker以及docker的一些常用命令
- Docker Windows下安装的一些注意以及常用命令和参数
- git checkout和git reset的一些区别以及配置git简写命令
- docker常用命令以及dockerfile使用
- Dockerfile中ENTRYPOINT 和 CMD的区别以及RUN的作用
- 换行符在Linux和Windows下的区别以及将Linux和windows下的文件的互转的Linux命令:unix2dos, dos2unix
- 菜鸟学习linux笔记与练习-----一些基本命令以及初级网络配置
- 浅析C#中new、override、virtual关键字的区别
- docker 应用-2(Dockerfile 编写以及镜像保存提交)
- jQuery和js一些标签属性的获取和修改方法以及区别
- Mybatis学习之路之Oracle建/改/删表以及一些常用命令<一>
- docker的一些基本命令
- ExpandableListView的一些基本语法以及用法,程序员须知的基本标准
- linux常用的命令以及其他的一些知识点
- Spring中ClassPathXmlApplicationContext类的使用,以及与FileSystemXmlApplicationContext的区别
- Docker学习总结(3)——Docker实战之入门以及Dockerfile(三)
- Linux命令的格式、常用命令汇总以及一些系统基本概念