Docker基础内容之镜像构建

基于Dockerfile构建

Dockerfile指令讲解

FROM:改命令定义了使用哪个基础镜像启动构建流程。基础镜像可以为任意镜 像。如果基础镜像没有被发现,Docker将试图从Docker image index来查找该镜像。FROM命令必须是Dockerfile的首个命令。尽量使用官方的image作为base image,因为这样比较安全。
    scratch:制作base image
    centes:使用base image制作image
    centos 7:使用指定版本的base image制作image

LABEL:定义image的相关信息
    version:指定版本
    description:描述信息

MAINTAINER:指定作者;注意:Dockerfile中使用"#"来表示注释行;LABEL会继承基础镜像种的LABEL,如遇到key相同,则值覆盖。

RUN:运行一个指定的命令,并创建新的镜像层;为了美观与合理维护,能合并的指令尽量合并。

CMD:设置容器启动后默认执行的命令和参数;如果docker run指定了其他命令,则CMD会被忽略掉,如果定义了多个CMD,则只有最后一个CMD会执行。

ENTRYPOINT:设置容器启动时运行的命令,这里面的内容一定会执行,并且ENTRYPOINT支持反射运行方式来运行命令。
    命令格式:CMD executable param1
    反射格式:CMD ["executable","param1","param2"]

WORKDIR:设定当前工作目录,类似linux下面的cd;注意:如果指定的工作目录不存在,则会自动创建该目录;尽量不要用RUN cd,而是应该用WORKDIR,并且尽量使用绝对路劲

ADD:添加文件到指定目录,并解压,还可支持URL;

COPY:添加文件到指定目录,仅添加;

ENV:设定环境变量;尽量使用ENV,这样方便维护。

EXPOSE:暴露一个指定端口

示例

yum -y install gcc* gcc-*
mkdir -p /docker
touch /docker/hello.c

vi /docker/hello.c
#include<stdio.h>
int main()
{
    printf("hello docker\n");
}

cd /docker
gcc -static hello.c -o hello

vi /docker/Dockerfile
FROM scratch
ADD hello /
CMD ["/hello"]

docker image build -t name1 .
docker history name1
docker run name1

基于container构建

docker container commit container_name image_name

猜你喜欢

转载自www.cnblogs.com/guge-94/p/11076979.html