Docker学习之Dockerfile
这篇文章介绍一下Dockerfile的基本语法及简单示例:
Dockerfile的指令是忽略大小写的,但是命名约定使用大写,使用 # 作为注释。
所有Dockerfile都以FROM命令开始。语法如下:
FROM <image> #或者 FROM <image>:<tag> 例如 FROM centos6
在FROM命令之后,Dockerfile还有如下命令:
1. MAINTAINER:设置镜像创建者的信息。语法如下:
MAINTAINER <author name>
2. RUN:在shell或者exec的环境下执行的命令。语法如下2种:
RUN <command>
RUN ["executable", "param1", "param2" ... ]
3. ADD:复制文件指令。它有两个参数<src>和<dest>。从<src>复制到容器的<dest>路径,语法如下
ADD <src> <dest>
4. CMD:容器启动时执行的指令。 Dockerfile只允许使用一次CMD指令。如果有多个只执行最后一个。 语法有如下3种:
CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2
5. EXPOSE:指定容器在运行时监听的端口。语法如下:
EXPOSE <port>;
6. ENTRYPOINT:配置一个执行命令,类似于CMD,多个ENTRYPOINT只执行最后的ENTRYPOINT指令。语法如下:
ENTRYPOINT ["executable", "param1","param2"]
ENTRYPOINT command param1 param2
7. WORKDIR:指定工作目录。相当于cd,语法如下:
WORKDIR /path/to/workdir
8. ENV:设置环境变量。语法如下:
ENV <key> <value>
9. USER:设置启动容器的用户,默认root,语法如下:
USER <user>
10. VOLUME:指定挂载点,在容器关闭后,挂载点的数据不会丢失。语法如下:
VOLUME ["/data"]
下面来创建一个Dockerfile,将PHP项目打包docker镜像,apache+php
mkdir test cd test mkdir web touch web/index.php echo "<?php echo 'dockerfile test';?>" >> web/index.php vim Dockerfile #输入下面几行: FROM php:5.6-apache MAINTAINER <kl_peng@foxmail.com> RUN rm -rf /var/www/html ADD web /var/www/html
保存之后,运行:
docker build -t ligphp . #把镜像命名成ligphp
成功之后来启动这个镜像
docker run --name ligphp -d -p 8088:80 ligphp #用ligphp镜像启动一个容器并命名为ligphp,把宿主机的8088端口映射到容器的80端口
然后我们再浏览器输入http://192.168.1.8:8088,会输出我们之后index.php里面的内容。
原创文章如转载,请注明出处,本文首发于彭超的博客
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。