zoukankan      html  css  js  c++  java
  • Docker(4) 制作镜像

    一。docker build,使用Dockerfile文件自动化制作镜像。

    1.编写Dockerfile文件

    vim Dockerfile

    # 基础镜像使用java
    FROM java:8
    # 作者
    MAINTAINER yy
    # VOLUME 指定了临时文件目录为/tmp。
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp 
    # 将jar包添加到容器中并更名为app.jar
    ADD demo-0.0.1-SNAPSHOT.jar app.jar 
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    解释:

    java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:

    VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。

    将项目的jar文件作为app.jar添加到容器

    RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。

    EXPOSE 容器暴露端口

    ENTRYPOINT 应用启动命令 参数设定

     2.上传文件Dockerfile和demo-0.0.1-SNAPSHOT.jar到服务器的同一目录下

    3.将jar包打包为镜像

    docker build -t srpingbootdemo:yy .    ----------打包镜像

    [root@localhost docker-build]# docker build -t springbootdemo .
    Sending build context to Docker daemon   2.56kB
    Step 1/6 : FROM java:8
     ---> d23bdf5b1b1b
    Step 2/6 : MAINTAINER yy
     ---> Running in 8bc3ec99cc4b
    Removing intermediate container 8bc3ec99cc4b
     ---> 27596ecbc4a0
    Step 3/6 : VOLUME /tmp
     ---> Running in f543dbd852fd
    Removing intermediate container f543dbd852fd
     ---> d97684dcdb7a
    Step 4/6 : ADD demo-0.0.1-SNAPSHOT.jar app.jar
     ---> 2ff822597872
    Step 5/6 : RUN bash -c 'touch /app.jar'
     ---> Running in 4a1dafe24a93
    Removing intermediate container 4a1dafe24a93
     ---> 9e99256a6bd1
    Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
     ---> Running in 23995d8597ec
    Removing intermediate container 23995d8597ec
     ---> a932202f69ca
    Successfully built a932202f69ca
    Successfully tagged springbootdemo:latest
    [root@localhost docker-build]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    springbootdemo      latest              a932202f69ca        16 seconds ago      643MB
    nginx               yy                  18fdcae238b6        2 hours ago         133MB

    打包完成后,可以docker images查看镜像

    4. 运行镜像

    [root@localhost docker-build]# docker run -d -p 8082:8081 springbootdemo
    994b80a87bbbe53c569ae5e0c66c876e41141cadbc97495363a6c675e2e8e811

    前台http://192.168.31.211:8082/hello就能访问了

    5. 将镜像导出文件,可以在别的服务器运行

    也可以推送到私服,别的服务器直接拉去

    docker save -o springbootdemo.tar springbootdemo   ---------保存为本地文件

    docker load -i springbootdemo.tar  导入镜像

    6.查看日志的方式

    方式一:docker logs 容器id

    方式二:数据卷的形式 

    docker run -d -v /home/vincent/logs/:/logs/ -p 8081:8080 springbootdemo:y1

    前边的是宿主机中日志的目录,后边是容器中日志文件的输出目录

  • 相关阅读:
    leetcode@ [300] Longest Increasing Subsequence (记忆化搜索)
    leetcode@ [200] Number of Islands
    JMETER压力测试报错:JAVA.NET.BINDEXCEPTION: ADDRESS ALREADY IN USE: CONNECT
    压力测试报告模版
    Jmeter学习—004—使用代理录制脚本—HTTP代理服务器(APP、web皆可)
    怎么用fiddler抓APP的包
    Jmeter录制脚本过程及Could not create script recorder报错、您的连接不是私密连接报错
    Github使用说明 --整理者米米
    Anaconda详细安装使用教程
    运用MQTT-JMeter插件测试MQTT服务器性能
  • 原文地址:https://www.cnblogs.com/t96fxi/p/13857394.html
Copyright © 2011-2022 走看看