网站运营管理员具体做什么,做网站商城需要什么,南平建设局网站,山东省建设工程注册中心网站【读书笔记-首页】基于世界500强的高薪实战Kubernetes课程
第4章 dockerfile基础篇-基本语法
dockerfile#xff1a;构建镜像的文本文件
1、FROM
作用#xff1a;基础镜像来源 2、MAINTAINER
作用#xff1a;作者信息 3、RUN
作用#xff1a;构建过程中运行的命令 …【读书笔记-首页】基于世界500强的高薪实战Kubernetes课程
第4章 dockerfile基础篇-基本语法
dockerfile构建镜像的文本文件
1、FROM
作用基础镜像来源 2、MAINTAINER
作用作者信息 3、RUN
作用构建过程中运行的命令 4、EXPOSE
作用 申明端口 docker build 构建镜像时运行 docker run -P 时会自动随机映射 EXPOSE 的端口。 可以指定多个 EXPOSE
格式 EXPOSE 端口 1 [端口 2...] 5、CMD
作用为启动的容器 指定默认要运行的程序 会被 docker run 覆盖 docker run 时运行 程序运行结束容器也就结束 CMD 指令指定的程序可被docker run 命令行参数中指定要运行的程序所覆盖
两种模式 exec 模式 如CMD [“程序名”“参数1”“参数2”] Shell 模式 如CMD command 6、ENTERYPOINT
作用为启动的容器 指定默认要运行的程序 会被 docker run --entrypoint 覆盖 类似于 CMD 指令但不会被 docker run 的命令行参数指定的指令所覆盖而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。 docker run 时 --entrypoint 选项将覆盖 entrypoint 指令指定的程序 优点在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需参数 注意 Dockerfile 中多个 ENTRYPOINT 指令仅最后一个生效
格式 ENTERYPOINT [“程序名”“参数1”“参数2”](exec 模式) ENTERYPOINT command shell 模式 可以搭配 CMD 命令使用
一般是变参才会使用 CMD 这里的 CMD 等于是在给 ENTRYPOINT 传参
示例 假设已通过 Dockerfile 构建了 nginx:test 镜像 FROM nginx ENTRYPOINT [nginx, -c] # 定参 CMD [/etc/nginx/nginx.conf] # 变参 1、不传参运行 $ docker run nginx:test
容器内会默认运行以下命令启动主进程。 nginx -c /etc/nginx/nginx.conf
2、传参运行 (new.conf 覆盖nginx.conf) $ docker run nginx:test -c /etc/nginx/new.conf
容器内会默认运行以下命令启动主进程 nginx -c /etc/nginx/new.conf
(/etc/nginx/new.conf:假设容器内已有此文件) 7、COPY
作用复制文件或者目录到容器
格式 COPY [--chownuser:group] 源路径... 目标路径 COPY [--chownuser:group] [源路径,... 目标路径]
[--chownuser:group] 可选参数用户改变复制到容器内文件的拥有者和属组。
源路径 源文件/目录支持 Go 的 filepath.Match 通配符
例如 COPY hom* /mydir/ COPY hom?.txt /mydir/
目标路径 容器内的指定路径路径不存在会自动创建 8、ADD
作用功能类似COPY官方推荐使用 COPY 优点 自动解压 为 tar源文件 到 目标路径
缺点 在不解压的前提下无法复制 tar 压缩文件。会令镜像构建缓存失效从而可能会令镜像构建变得比较缓慢。
例替换/usr/share/nginx 下的 index.html Dockerfile 文件
cd /root/dockerfile/test1
cat dockerfile
FROM centos
MAINTAINER xianchao
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT [/usr/sbin/nginx,-g,daemon off;]
实战
# 构建镜像并打标签-t 标签名 其中t为tagdocker build -tdockerfile/copy:v1 . # 根据镜像运行容器-d 后台运行 -p 容器内端口 --name 容器名docker run -d -p 80 --name html3 dockerfile/copy:v1 # 查看所有镜像 grep 过滤名称docker ps | grep html3 显示如下
478868402ac4 dockerfile/copy:v1 /usr/sbin/nginx -
g … 15 seconds ago Up 12 seconds 0.0.0.0:32771-80/tcp html3 访问页面 curl 192.168.40.180:32771 显示的就是替换后的页面 9、VOLUME
作用定义匿名数据卷 避免重要的数据因容器重启而丢失这是非常致命的。 避免容器不断变大 docker run 通过 -v 参数修改挂载点
格式 VOLUME [路径 1, 路径 2...] VOLUME 路径 10、WORKDIR 作用指定工作目录 (必须提前创建好)填写绝对路径 用 WORKDIR 指定的工作目录会在构建镜像的每一层中都存在 每一个 RUN 命令都是新建的一层 只有通过 WORKDIR 创建的目录才会一直存在
格式 WORKDIR 工作目录路径
示例 WORKDIR /path/to/workdir 11、ENV 作用设置环境变量
格式 ENV key value ENV keyvalue...
示例 以下示例设置 NODE_VERSION 6.6.6 在后续的指令中可以通过 $NODE_VERSION 引用 ENV NODE_VERSION 6.6.6
RUN curl -SLO https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz
\ curl -SLO https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc 12、USER 作用切换后续命令执行的用户用户和用户组必须存在
格式 USER 用户名[:用户组]
示例
USER daemon
USER nginx
USER user
USER uid
USER user:group
USER uid:gid
USER user:gid
USER uid:group 13、ONBUILD 作用用于延迟构建命令的执行 Dockerfile 里用 ONBUILD 指定的命令在本次构建镜像的过程中不会执行假设镜像为 test-build。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build 构建时会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。
格式
ONBUILD 其它指令
场景为镜像添加触发器 当一个镜像被其他镜像作为基础镜像时需要写上 OBNBUILD 会在构建时插入触发器指令
14、LABEL 作用给镜像添加元数据metadata
格式 LABEL keyvalue keyvalue keyvalue ...
示例
LABEL org.opencontainers.image.authorslijiong 15、HEALTHCHECK 作用指定某个程序或者指令来监控 docker 容器服务的运行状态
格式 HEALTHCHECK [选项] CMD 命令设置检查容器健康状况 HEALTHCHECK NONE屏蔽基础镜像自带的健康检查 HEALTHCHECK [选项] CMD 命令 : 参考 CMD 的用法 16、ARG 作用构建参数与 ENV 作用域不同 作用域仅对 Dockerfile 内有效即只有 docker build 中有效 docker build 中用 --build-arg 参数名值 来覆盖
格式 ARG 参数名[默认值]
用于。 格式