Docker学习之:Dockerfile的实战

2018-05-23  本文已影响0人  __apple

想必前几节小伙伴们已经学会了很多的知识,这一节我们搞点轻松的没有新的知识点,我们复习一下之前学的知识点。
我们今天要做的事情就是打包一个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了嘛?,你也可以用你自己习惯的语言,操作一把熟能生巧,慢慢的就会了。。。。。

上一篇 下一篇

猜你喜欢

热点阅读