暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

构建一个自己的容器

愚蠢的猴子 2021-09-04
534

01

Dockerfile

Dockerfile是一个文本文件,类似Shell脚本,通过指令来构建一个自己的镜像。下面我们通过Nginx镜像为模板构建一个自己的镜像。

1、 新建一个MyNginx的文件夹,在文件夹中新建一个名为Dockerfile的文件

    # 用于指定基础镜像
    FROM nginx
    # 用于执行命令
    RUN echo '<h1>Hello work MyNginx!!!</h1>' > /usr/share/nginx/html/index.html

    2、 在Dockerfile所在路径执行以下命令构建镜像

      docker build -t nginx:mynginx .

      3、执行以下命令,即可使用该镜像启动一个 Docker容器

        docker run -d -p 90:80 nginx:mynginx

        4、访问


        02

        Dockerfile 常用指令

        命令

        用途

        FROM

        基础镜像文件

        RUN

        构建镜像阶段执行命令

        ADD

        添加文件,从src目录复制文件到容器的dest,其中 src可以是 Dockerfile所在目录的相对路径,也可以是一个 URL,还可以是一个压缩包

        COPY

        拷贝文件,和ADD命令类似,但不支持URL和压缩包

        CMD

        容器启动后执行命令

        EXPOSE

        声明容器在运行时对外提供的服务端口

        WORKDIR

        指定容器工作路径

        ENV

        指定环境变量

        ENTRYPINT

        容器入口, ENTRYPOINT和 CMD指令的目的一样,都是指定 Docker容器启动时执行的命令,可多次设置,但只有最后一个有效。

        USER

        该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUN、 CMD以及 ENTRYPOINT指令都将使用该用户执行命令。

        VOLUME

        指定挂载点,该指令使容器中的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile中使用该指令。格式为:VOLUME["/data"]。



        02


        将工程构建为镜像

        1、目录结构

        GeoServer2.9.3工程目录为例


        2、Dockerfile 模板文件

          #From java:8


          #切换镜像目录,进入/usr目录
          #WORKDIR usr/local


          #将宿主机的jdk目录下的文件拷至镜像的/usr/jdk目录下
          ADD GeoServer2.9.3


          #设置环境变量
          #ENV JAVA_HOME=/usr/jdk
          #ENV JRE_HOME=$JAVA_HOME/jre
          #ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
          #ENV PATH=/sbin:$JAVA_HOME/bin:$PATH


          #公开端口
          EXPOSE 8077
          #设置启动命令
          ENTRYPOINT ["bin/startup.sh","run"]
          文章转载自愚蠢的猴子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论