Dockerfile的基本认识1. dockerfile的基本定义
`dockerfile`是一个包含用于组合镜像的命令的文本文档,可以在命令中调用任何命令,docker通过读取Dockerfile中的指令自动生成镜像2.dockerfile的基本结构
`dockerfile`一般分为四部分:基本镜像信息,维护者信息,镜像操作指令,容器启动时的执行指令,`#`为`dockerfile`中的注释33.dockerfile的常用指令
常用指令一般都要大写

文章插图
FROM:指定基础镜像,必须是第一个命令
#格式:MAINTAINER:维护者信息
FROM image
FROM image:tag
FROM image@digest
#如
FROM MySQL:5.7 #如不指定tag或digest,则使用lastest版本
#格式RUN:构建镜像时执行的命令
MAINTAINER name+email
MAINTAINER name
MAINTAINER email
#如
MAINTAINER jame 123@gmail.com
#格式ADD:将本地文件添加到容器中
RUN command
#如
RUN ["executable","param1","param2"]
#RUN指令创建的中间镜像会被缓存,并会下次构建中使用,如果不想使用,可以使用 --no-cache参数,如:
docker build --no-cache
#格式COPY功能和ADD类似,区别如下
ADD src dest
ADD ["src",...,"desc"] #用于支持包含空格的路径
#如
ADD test /mydir
ADD test?.txt /mydir
ADD t* /mydir
#区别CMD:构建容器这后使用
ADD 对于添加tar类型文件,可以自动解压
ADD 可以访问网络资源
COPY 不可自动解压也不可访问网络资源
#格式ENTRYPOINT:配置容器,与CMD类似
CMD ["executable","param1","param2"]
CMD command parma1 param2
#如
CMD echo "hello"
#CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,RUN是用于指定镜像构建时所有使用的执行的命令
#格式LABEL:用于为镜像添加元数据
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param2,param3
#如
ENTRYPOINT ["top","-b"]
#与CMD不同点
#docker run 执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当作参数再次传递给ENTRYPOINT,Dockerfile中只允许有一个ENTRYPOINT命令,多指定会覆盖前面的设置,而只执行最后的ENTRYPOINT指令
#格式ENV:设置环境变量
LABEL key=value key=value ...
#如
LABEL version=1.0 description="hello world"
#使用LABEL指定元数据时,一条LABEL可以指定一或多条元数据,多条元数据通过空格分格
#格式EXPOSE:指定与外界交互的端口
ENV key value #这种格式的只能设置一个变量
ENV key=value #可以设置成多个
#如
ENV name centos
ENV name=123
#格式VOLUME:用于指定持久化目录
EXPOSE port ...
#如
EXPOSE 80,443
EXPOSE 11211/tcp 11211/udp
#EXPOSE并不会让容器的端口访问到主机,需要在docker run运行时通过 -p 来发布这些端口,或者通过-P参数来发布EXPOSE导出的所有端口
#格式WORKDIR:工作目录,类似于CD命令
【DockeFIile知识点总结和发布自己的镜像】VOLUME ["/path/to/dir"]
#如
VOLUME ["/data"]
VOLUME ["/var/www","/var/log/test"]
#一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统
#卷可以容器间共享和重用
#容器并不一定要和其它容器共享卷
#修改卷后会立即生效
#对卷的修改不会对镜像产生影响
#卷会一直在,直到没有容器使用它
#格式USER:指定运行容器时的用户名或UID,后面的RUN也会使用指定用户,当服务不需要管理员权限时,可以通过该命令指定运行用户
WORKDIR /path
#如
WORKDIR /a #这时工作目录为/a
#设置WORKDIR工作目录里,Dockerfile中其后的命令,RUN,CMD,ENTRYPOINT,ADD,COPY等命令都会在这个目录执行
#格式
USER user
USER user:group
USER uid
USER gid
USER uid:gid
USER uid:group
#如
USER www
#使用USER指定用户后,Dockerfile中其后的命令RUN,CMD,ENTRYPOINTf都将使用这个用户
推荐阅读
- Linux TCP队列相关参数的总结
- 小学数学学习方法的总结与指导
- 一名高级的Javaer,应该了解的 MYSQL 高级知识点
- 移动App架构经验总结
- 果味啤酒卖点介绍,洗发水产品介绍以及卖点总结
- SQL优化最干货总结 - MySQL
- 软件测试知识点3大场景带你了解单元测试
- Linux下应用开发基础知识大总结
- 六年级语文上册第二单元知识积累?人教版六年级上册语文单元总结_1
- 看这篇就够了!MySQL 索引知识点超全总结
