如何做企业网站内链,app制作开发公司怎么收费,深圳网站建设深圳,网页打不开网络正常怎么办一、简介 Docker 镜像原理、容器转成镜像 随便找个案例#xff0c;进入 https://hub.docker.com/ 搜索 centos#xff0c;然后随便找个版本#xff08;例如#xff1a;centos7#xff09;点击一下#xff0c;就会进入 centos7 的 dockerfile 文件#xff1a; // 空镜像…一、简介 Docker 镜像原理、容器转成镜像 随便找个案例进入 https://hub.docker.com/ 搜索 centos然后随便找个版本例如centos7点击一下就会进入 centos7 的 dockerfile 文件 // 空镜像 scratch
// 通常使用 Docker 镜像时会以一个已存在的镜像为基础在其上进行定制这个已存在的镜像就是基础镜像。
// 在 DockerFile 中必须指定基础镜像FROM 指令就是用于指定基础镜像因此一个 Dockerfile 中 FROM 是必备的指令并且必须是第一条指令。
// Docker 还存在一个特殊的镜像名为 scratch。这个镜像是虚拟的概念并不实际存在它表示一个空白的镜像。在 Dockerfile 中以 scratch 为基础镜像 (FROM scratch)意味着不以任何镜像为基础接下来所写的指令将作为镜像第一层开始存在。
// 对于 Linux 下静态编译的程序来说并不需要有操作系统提供运行时支持所需的一切库都已经在可执行文件里了因此直接 FROM scratch 会让镜像体积更加小巧。使用 Go 语言开发的应用很多会使用这种方式来制作镜像这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。
FROM scratch
// 将 centos-7-x86_64 的压缩包添加到了根目录下/ 是根目录
ADD centos-7-x86_64-docker.tar.xz /
// 标签信息一个镜像支持多个label
LABEL \org.label-schema.schema-version1.0 \org.label-schema.nameCentOS Base Image \org.label-schema.vendorCentOS \org.label-schema.licenseGPLv2 \org.label-schema.build-date20201113 \org.opencontainers.image.titleCentOS Base Image \org.opencontainers.image.vendorCentOS \org.opencontainers.image.licensesGPL-2.0-only \org.opencontainers.image.created2020-11-13 00:00:0000:00
// 指定进入容器时使用的默认解释器类型当创建容器时尾部如果不指定解释器类型就会使用默认的
CMD [/bin/bash]二、语法与指令 dockerfile 是用来构建 docker 镜像的构建文件是由一系列命令和参数构成的脚本 构建的三步骤编写 dockerfile 文件 → build 构建→ docker run dockerfile 指令 FROM当前新镜像是基于那镜像MAINTAINER镜像作者RUN容器需要运行的命令EXPOSE对外端口号WORKDIR指定终端进入的工作目录ENV设置环境变量ADD将宿主机目录下的文件拷贝进镜像ADD 命令会自动处理 URL 和解压压缩包COPY将宿主机目录下的文件拷贝进镜像VOLUME容器数据卷CMD指定一个容器运行时要运行的文件可以有很多 CMD 命令但只有最后一个生效ENTRYPOINT指定一个容器运行时要运行的文件OMBUILD构建一个被继承的 dockerfile 时运行命令父镜像在子镜像继承之后父镜像 onbuild 被 cufa 触发HEALTHCHECKDocker 1.12 版本后引入的判断容器运行状态是否正常。三、案例 案例一 // 基于 centos 镜像
FEOM centos
// 作者信息 dzm
MAINTAINER dzm
// 自定义环境变量
ENV mypath /usr/local
// 定义工作目录
WORKDIR /usr
// 添加 jdk×86 到 /usr/loca
COPY jkd-8u171-linux-×86.tar.gz /usr/local
// 添加并解压 jdk×64 到 /usr/local
ADD jkd-8u171-linux-×64.tar.gz /usr/local
// 添加并解压 tomcat 到 /usr/local
ADD apache-tomcat-9.0.6.tar.gz /usr/local
# 配置 java 与 tomcat 的环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CLASS_HOME /usr/local/apache-tomcat-9.0.6
ENV CLASS_BASE /usr/local/apache-tomcat-9.0.6
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
// 加入三个容器卷
VOLUME [/mydata1,/mydata2,/mydata3]
// 安装 vim 组件
RUN yum -y instatll vim
// 安装网络组件
RUN yun -y install net-tool
// 监听端口
EXPOSE 80
// 指定 CMD
CMD bin/bash案例二 // 基于 nginx:1.17.9 镜像构建
FROM nginx:1.17.9
// 指定信息
LABEL maintainerhogwartstesting-studio.com
// 设置环境变量
ENV NGINX_VERSION 1.17.9
// 切换 root 用户
USER root
// 执行命令安装 curl 软件设置软链接把 nginx 服务的日志显示到终端输出上。
RUN apt-get -yq update apt-get install -y curl \
ln -sf /dev/stdout /var/log/nginx/access.log \
ln -sf /dev/stderr /var/log/nginx/error.log
// 设置容器内 /data 目录为匿名卷
VOLUME [/data]
// 设置工作目录
WORKDIR /data/html/
// 复制 index.html 文件到 WORKDIR 目录下
COPY index.html .
// 映射 80 端口
EXPOSE 80
// 此处 CMD 作为 ENTRYPOINT 的参数。
// CMD [nginx, -g, daemon off;]
CMD [-g, daemon off;]
// 设置容器启动的命令
ENTRYPOINT [nginx]
// 检查容器健康通过访问 Nginx 服务 80 端口来判断容器服务是否运行正常。
HEALTHCHECK --interval5s --timeout3s \
CMD curl -fs http://localhost/ || exit 1写好 dockerfile 后则需要构建镜像附Docker build 命令详解 # -f指定要使用的 Dockerfile 路径
# -t镜像的名字及标签通常 name:tag 或者 name 格式可以在一次构建中为一个镜像设置多个标签
$ docker build -f /home/dockerfile -t centos_tomcat或# .Dockerfile 路径为当前目录
$ docker build -t centos_tomcat .有了镜像后则需要创建容器附Docker 常用命令与指令参数 $ docker run --name dzmtest -p 8080:80 centos_tomcat