Docker 使用 Dockerfile 文件来编译自己的镜像,Dockerfile 主要有如下的命令。
FROM 指令
FROM 指令指明了当前镜像继承的基镜像。编译当前镜像时会自动下载基镜像。
FROM ubuntu
MAINTAINER 指令
MAINTAINER 指令指明了当前镜像的作者。
MAINTAINER yjw
RUN 指令
RUN 指令可以在当前镜像上执行 Linux 命令并形成一个新的层。RUN 是编译时(build)的动作。示例可有如下两种格式,CMD 和 ENTRYPOINT 也是如此:
RUN /bin/bash -c "echo helloworld"
或 RUN {"/bin/bash", "-c", "echo helloworld"}
CMD 指令
CMD 指令指明了启动镜像容器时的默认行为。一个 Dockerfile 里只能有一个 CMD命令。CMD 指令里设定的命令可以在运行镜像时使用参数覆盖。CMD 是运行时(run)的动作。
CMD echo "this is a test"
可被 docker run -d image_name echo “this is not a test” 覆盖。
EXPOSE 指令
EXPOSE 指明了镜像运行时的容器必须监听指定改的端口。
EXPOSE 8080
ENV 指令
ENV 指令可用来设置环境变量。
ENV myName=yjw
或 ENV myName yjw
ADD 指令
ADD 指令是从当前工作目录复制文件到镜像目录中去。
ADD test.txt /mydir/
ENTRYPOINT 指令
ENTRYPOINT 指令可让容器像一个可执行程序一样运行,这样镜像运行时可以像软件一样接受参数执行。ENTRYPOINT 是运行时(run)的动作。
ENTRYPOINT ["/bin/echo"]
我们可以向镜像传递参数运行:
docker run -d image_name "this is not a test"