• Docker-Dockerfile1


    Dockerfile:由一系列脚本和参数构成的脚本,这些命令应用于基础镜像,并最终创建一个新镜像

    命令:

    FROM image_name:tag     定义了使用哪个基础镜像启动构建流程
    MAINTAINER user_name      镜像的创建者
    EXPOSE            容器需要暴露的端口,容器启动时通过-p进行映射绑定
    VOLUME             挂载点,创建一个从本地主机或其他容器的挂载点
    ENV key value           设置环境变量
    RUN command          Dockerfile的核心部分,Build时执行(可以写多条)
    ADD source_dir/file desc_dir/file   将宿主机的文件复制到容器内,(自动解压)
    COPY source_dir/file        和ADD类似,当目标路径不存在时,自动创建,但是如果有压缩文件并不能解压
    WORKDIR path_dir        设置工作目录
    CMD              容器的启动命令,只允许有一条,当容器启动时指定运行命令时,会覆盖掉Dockerfile中的CMD命令
    ENTRYPOINT            容器的启动命令,值允许有一条,可被docker run提供的–entrypoint参数覆盖

    CMD、RUN的区别:
    RUN是镜像Build的时候执行,用来预装软件和做配置使用;
    CMD是镜像启动的时候执行的命令,
    每个Dockerfile文件只能有一条CMD命令,如果有多条,只执行最后一条命令

    ENTRYPOINT指令:

    也是只能有一条.不和CMD一起使用。如果启动容器时不指定容器参数,则CMD和ENTRYPOINT指令无区别,如果有容器参数。CMD指定的命令会被docker run传递的容器参数覆盖,而ENTRYPOINT会将容器参数作为ENTRYPOINT指令的参数执行。

    Dockerfile案例1:构建jdk1.8镜像

    1、创建目录
    mkdir /usr/local/dockerjdk8
    cd /usr/local/dockerjdk8
    2、上传jdk压缩包jdk-8u171-linux-x64.tar.gz
    rz
    3、创建Dockerfile
    vim Dockerfile
    FROM centos:7
    MAINTAINER fanwenjian
    WORKDIR /usr
    RUN mkdir /usr/local/java
    ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

    ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
    ENV JRE_HOME=$JAVA_HOME/jre
    ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    ENV PATH $JAVA_HOME/bin:$PATH
    4、使用Dockerfile创建镜像
    docker build -t=‘jdk1.8’ . -- -t:指定镜像名 后面的点表示在当前文件夹中找Dockerfile文件
    5、

    FROM centos:7
    MAINTAINER fanwenjian
    WORKDIR /usr
    RUN mkdir /usr/local/java
    ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

    ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
    ENV JRE_HOME=$JAVA_HOME/jre
    ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    ENV PATH $JAVA_HOME/bin:$PATH

    构建Core镜像
    FROM microsoft/dotnet:2.2-sdk AS build-env
    WORKDIR /app
    COPY . ./
    RUN dotnet restore
    RUN dotnet publish -c Release -o out

    FROM microsoft/dotnet:2.2-aspnetcore-runtime
    WORKDIR /app
    COPY --from=build-env /app/out .
    ENTRYPOINT ["dotnet", "FAN.Core2.dll"]

    构建镜像:
    docker build -t CorePublishImage .

    运行容器:
    docker run -it -p 5001:5001 CorePublishImage

  • 相关阅读:
    Struts2框架详解
    Eclipse利用Axis2插件构建Web Service并测试
    解决JS中各浏览器Date格式不兼容的问题
    Struts2框架下表单数据的流向以及映射关系
    JMS总结
    第一次博客园
    微信OAuth2网页授权
    将List转换成DataTable
    对文件的读写操作
    Excel文件的导出操作
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/12167054.html
Copyright © 2020-2023  润新知