#First Dockerfile
FROM unbuntu:14.04
MAINTAINER grady "[email protected]"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
-f :指定要使用的Dockerfile路径;
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签
// 守护进程启动
service docker start
// 守护进程停止
service docker stop
// 守护进程重启
service docker restart
/etc/default/docker
==暴露端口,即使在Dockerfile中写了,也需要在创建容器的指令中指定端口(这样设计时出于安全考虑)==
==在镜像构建时运行的命令==
CMD [ "executable", "param1", "param2" ] (exec 模式)
CMD command param1 param (shell 模式)
//参数模式
CMD ["param1", "param2"] (作为ENTRYPOINT指令的默认参数)
==在容器运行时执行的命令==
==如果docker run 有指定运行的命令,则CMD命令会被覆盖==
==不会被docker run所指定的命令覆盖==
==如果想覆盖,可使用docker run --entrypoint覆盖==
ENTRYPOINT [ "executable", "param1", "param2" ] (exec 模式)
ENTRYPOINT command param1 param2 (shell 模式)
ADD 原路径 目标路径
==将本宿主机目录中的文件和目录拷贝到镜像中==
==目标路径必须写镜像中的绝对路径==
==ADD== 与==COPY== 的==区别==
1. ADD 包含tar的解压缩功能
2. 如果是单纯的复制文件,Docker推荐使用COPY
==如果是单纯的复制文件==
==提供数据持久化,共享数据的功能==
VOLUME["/data"]
==创建新容器时设置工作目录==
WORKDIR /path/to/workdir
==设置环境变量==
ENV key value
ENV key=value
USER xxx
==以哪种用户身份运行,例如*USER nginx==
==如果不使用USER指令,默认使用root==
==镜像触发器==
==当一个镜像被其他镜像作为基础镜像时执行==
例子:
ONBUILD COPY index.html /usr/share/nginx/html/
//当作为父镜像被参与构建新镜像时,会执行上述回调指令