美文网首页
7、CentOS7 Dockerfile 构建镜像

7、CentOS7 Dockerfile 构建镜像

作者: LH_0811 | 来源:发表于2019-05-09 13:37 被阅读0次

    Dockerfile 可以基于一个已有的镜像。添加一些配置或部署一下程序后 构建成为一个新的对象。
    常用的命令。

    FROM image_name:tag  定义使用哪个基本镜像启动构建流程 
    MAINTAINER user_name  声明镜像的创建者。版权声明
    ENV key value  添加环境变量 这个可以写多个
    RUN command  表示要执行的命令 这个是核心内容 可以写多条
    ADD source_dir/file dest_dir/file  将宿主机的文件复制到容器中 如果是压缩文件的话 会自己解压
    COYP source_dir/file dest_dir/file  同ADD 就是不会解压
    WORKDIR path_dir  工作目录 就是这样命令执行的目录 登录容器后也在这个目录
    CMD 容器启动后要处理的命令
    
    

    这个方式 可以很方便的在一台装有docker的宿主机上 同步系统的环境 方便系统的部署和迁移

    现在以docker官方的centos7 镜像 添加 jdk1.8 然后 部署一个springboot的HelloWorld项目 来练习下Dockerfile

    准备下面的三个东西

    1/  从官网下载的jdk8的rpm安装包  重命名为 jdk8.rpm
    2/  一个springboot的web程序 请求路径 localhost:61001/hello 返回 springboot hello world
    3/ Docker 内容如下
    
    FROM centos
    WORKDIR /hello
    COPY jdk8.rpm jdk8.rpm
    RUN rpm -ivh jdk8.rpm
    COPY helloword.jar helloword.jar
    CMD java -jar /hello/helloword.jar 
    
    

    这里尝试最后一句话换成
    CMD nohup java -jar /hello/helloword.jar & 但是容器启动失败原因还没搞清楚

    把这三个文件上传到宿主机

    注意是这个Dockerfile的名称是固定的
    docker会在当前目录下找到这个文件来进行构建
    如果基础镜像没有 就会下下载基础镜像

    [root@localhost hello]# pwd
    /root/hello
    [root@localhost hello]# ls
    Dockerfile  helloword.jar  jdk8.rpm
    [root@localhost hello]# 
    
    

    然后 使用docker 构建命令来构建镜像

    docker build -t='hello_jdk8' ./
    

    这个指令中 -t是指定 构建后的镜像的名称 后面的./是指 Dockerfile文件所在目录,当前目录下 就是./

    执行构建命令后 输出结果

    [root@localhost hello]# docker build -t='hello_jdk8' ./
    Sending build context to Docker daemon  196.2MB
    Step 1/6 : FROM centos
     ---> 9f38484d220f
    Step 2/6 : WORKDIR /hello
     ---> Running in efe3c8785b3e
    Removing intermediate container efe3c8785b3e
     ---> 16a36455f95b
    Step 3/6 : COPY jdk8.rpm jdk8.rpm
     ---> 7c21acc6b2dc
    Step 4/6 : RUN rpm -ivh jdk8.rpm
     ---> Running in 4fbae5500ff0
    warning: jdk8.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
    Preparing...                          ########################################
    Updating / installing...
    jdk1.8-2000:1.8.0_211-fcs             ########################################
    Unpacking JAR files...
            tools.jar...
            plugin.jar...
            javaws.jar...
            deploy.jar...
            rt.jar...
            jsse.jar...
            charsets.jar...
            localedata.jar...
    Removing intermediate container 4fbae5500ff0
     ---> 992c75d314e6
    Step 5/6 : COPY helloword.jar helloword.jar
     ---> 36b6db9b184f
    Step 6/6 : RUN nohup java -jar helloword.jar &
     ---> Running in 0ecccfc8a477
    Removing intermediate container 0ecccfc8a477
     ---> 9cc272777893
    Successfully built 9cc272777893
    Successfully tagged hello_jdk8:latest
    
    

    成功之后 查看docker images列表

    [root@localhost hello]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
    hello_jdk8                latest              9cc272777893        About a minute ago   803MB
    nginx                     latest              27a188018e18        3 weeks ago          109MB
    tomcat                    latest              5a069ba3df4d        3 weeks ago          465MB
    centos/mysql-57-centos7   latest              e35b3f7a4ea0        5 weeks ago          452MB
    redis                     latest              a55fbf438dfd        6 weeks ago          95MB
    centos                    latest              9f38484d220f        7 weeks ago          202MB
    
    

    发现hello_jdk8的镜像已经构建成功

    我们使用hello_jdk8镜像 创建一个容器 看看是不是已经部署了 helloworld的程序

    [root@localhost hello]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@localhost hello]# docker run -di --name=hello_jdk8 -p 61001:61001 hello_jdk8
    544e11293bcadda2b134e88326eae2402f067aff325ba28bf9d762d362981a69
    [root@localhost hello]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                      NAMES
    544e11293bca        hello_jdk8          "/bin/bash"         5 seconds ago       Up 4 seconds        0.0.0.0:61001->61001/tcp   hello_jdk8
    
    

    访问宿主机的61001/hello测试

    相关文章

      网友评论

          本文标题:7、CentOS7 Dockerfile 构建镜像

          本文链接:https://www.haomeiwen.com/subject/qwpioqtx.html