美文网首页
Docker学习之:Dockerfile的实战

Docker学习之:Dockerfile的实战

作者: __apple | 来源:发表于2018-05-23 15:14 被阅读0次

    想必前几节小伙伴们已经学会了很多的知识,这一节我们搞点轻松的没有新的知识点,我们复习一下之前学的知识点。
    我们今天要做的事情就是打包一个python程序,并把它做成一个container。即使大家没有学过python也没有关系,这个python程序是非常简单的。
    下面我首先把Dockerfile的文件给大家贴出来

    FROM python:2.7 # 去官方拉取一个python2.7的镜像
    LABEL maintainer="apple<1991585851@qq.com>" #然后写上一些个人的信息
    RUN pip install flask # 接着运行pip install flask
    COPY app.py /app/ # 然后我们把app.py文件copy到根目录的app下面
    WORKDIR /app # 进入工作目录
    EXPOSE 5000 # 把5000端口暴露出来
    CMD ["python", "app.py"] # 运行python 命令
    

    接下来是python代码

    from flask import Flask
    
    app = Flask(__name__)
    
    app.route('/')
    def hello():
        return "hello docker"
    if __name__ == "__main__":
        app.run()
    

    其实可能有些小伙伴不知道app目录是哪里来的,心想我没有app目录呀,我们先进入

    (flask_docker_test) -bash-4.2$ docker run -it 0383b7cc3321 /bin/bash
    root@4f197ead9f6c:/# ls
    app  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@4f197ead9f6c:/# cd app
    root@4f197ead9f6c:/app# ls
    app.py
    

    小伙伴们看到了嘛,我们进入这个容器的交互式环境就看到了,我们拷贝的文件,那么问题又来了,我们0383b7cc3321这个镜像是哪里来的呢?看下面

     ---> 5f7f93ed7169
    Step 4/7 : COPY app.py /app/
     ---> 0383b7cc3321  # 就是这一步的时候,建立了这个中间状态的image
    Step 5/7 : WORKDIR /app
    Removing intermediate container 45fa3dff9ee8
     ---> 44e0fb85de2f
    Step 6/7 : EXPOSE 5000
     ---> Running in 53225f4c872f
    Removing intermediate container 53225f4c872f
     ---> 8ef56f6b4fb1
    Step 7/7 : CMD ["python", "app.py"]
     ---> Running in b592363fdc27
    Removing intermediate container b592363fdc27
     ---> c6041ae4e106
    Successfully built c6041ae4e106
    

    最后我们运行制作的image

    (flask_docker_test) -bash-4.2$ docker run applego/flask_docker_test # 加上-d就是后台运行
     * Serving Flask app "app" (lazy loading)
     * Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    

    只讲一个是不是不过瘾呀!那么接下来我们再来一个不同的,可以根据命令行参数得到不同的结果,我们要做的是一个linux系统的测试压力的工具,请往下看!

    -bash-4.2$ docker run -it ubuntu:14.04
    root@c8ffd785dfcb:/# apt-get update && apt-get install -y stress
    

    安装完成以后执行

    stress --vm 1 --verbose
    

    我们先写Dockerfile

    FROM ubuntu:14.04  #我本地有ubuntu:14.04的镜像
    RUN apt-get update && apt-get install -y stress
    ENTRYPOINT ["/usr/bin/stress"]
    CMD []
    

    OK,我们执行

    docker run -it applego/ubuntu-stress --vm 1
    

    这样我们就成功了,今天我们就讲了这两个,一个是运行程序,一个命令行参数。
    怎么样,小伙伴们学到这里你可以制作一个复杂的dockerfile了嘛?,你也可以用你自己习惯的语言,操作一把熟能生巧,慢慢的就会了。。。。。

    相关文章

      网友评论

          本文标题:Docker学习之:Dockerfile的实战

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