大家好,又见面了,我是你们的朋友全栈君。
Dockerfile文件详解
- FROM //指定基于哪个基础镜像
格式 FROM <image> 或 FROM <image>:<tag>
示例:
FROM centos
FROM centos:latest
- MAINTAINER //指定作者信息
格式 MAINTAINER <name>
示例:
MAINTAINER apeng apeng@apenglinux.com
- RUN //镜像操作指令
格式 RUN <command> 或 RUN [“executable”,”param1″,”param2″]
示例:
RUN yum install httpd
RUN ['/bin/bash',"-c","echo hello"]
- CMD
CMD [“executable”,”param1″,”param2″]
CMD command param1 apram2
CMD [“param1″,”param2”]
示例:
CMD ["/bin/bash","/usr/local/nginx/sbin/nginx","-c","/usr/local/nginx/conf/nginx.conf"]
-
EXPOSE
格式为 EXPOSE <port>[<port>…]
示例://指定要映射出去的端口 // -P 自动分配端口 // -p 指定具体的端口 EXPOSE 22 80 9000
- ENV
格式 ENV <key> <value>
示例:
ENV PATH /usr/local/mysql/bin:$PATH
-
ADD
格式 add <src><dest>ADD <conf/vhosts></usr/local/nginx/conf>
- COPY
格式同ADD
不支持url
- ENTRYPOINT
容器启动时要执行的命令,它和CMD很像,也是有一条生效,如果写多个只有一条有效。和CMD不同是:
CMD是可以被docker run指令覆盖的,而ENTRYPOINT不能覆盖
如,容器名为 apeng
我们在Dockerfile中指定如下CMD
CMD [“/bin/echo”,”test”]
启动容器的命令是docker run -it apeng /bin/bash 什么都不输出
ENTRYPOINT不会覆盖,而且会比CMD或者docker run指定的命令要靠前执行
ENTRYPOINT [“echo”,”test”]
docker run -it apeng 123
则会输出 test 123,这相当于要执行命令echo test 123
- VOLUME
格式 VOLUME [“/data”]
创建一个可以从本机或其他容器挂载的挂载点
- USER
格式 USER daemon
指定运行容器的用户
- WORKDIR
格式 WORKDIR /path/to/workdir
为后续的RUN、CMD、ENTRYPOINT指定工作目录
转载于:https://blog.51cto.com/13480443/2097447
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107584.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...