撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>>

本节将从零开始搭建一个docker镜像,并且运行container。

首先现在本机上搭建一个python flask,新建app.py 内容如下:

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

运行环境是python 2.7

iie4bu@hostdocker:~/ddy/docker-flask$ python app.py* Serving Flask app "app" (lazy loading)* Environment: productionWARNING: 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)

访问:

iie4bu@hostdocker:~/ddy/docker-flask$ curl -XGET http://127.0.0.1:5000/
hello docker

成功访问!

我们要将这段python程序打包到一个docker镜像中去。新建目录docker-flask,在这个目录中新建Dockerfile,内容如下:

FROM python:2.7 #FROM 表示他的基本的运行环境是python2.7
LABEL maintainer="vincent" #LABEL 表示这个作者是谁
RUN pip install flask #添加他的依赖环境
COPY app.py /app/ #将本地的一个文件拷贝到根目录下app文件夹下面,如果没有这个文件夹会自动创建
WORKDIR /app #设置当前工作目录是/app
EXPOSE 5000 # 暴露5000端口
CMD ["python" ,"app.py"] #运行python app.py程序,

构建镜像:

iie4bu@hostdocker:~/ddy/docker-flask$ docker build -t vincent/flask-hello-world .
Sending build context to Docker daemon  3.072kB
Step 1/7 : FROM python:2.7---> 37093962fbf5
Step 2/7 : LABEL maintainer="vincent"---> Using cache---> 627d5ec958ce
Step 3/7 : RUN pip install flask---> Using cache---> d43f86c119ac
Step 4/7 : COPY app.py /app/---> 4a82cbc4c3ab
Step 5/7 : WORKDIR /app
Removing intermediate container 0cdeca4a4933---> 93259de7edce
Step 6/7 : EXPOSE 5000---> Running in 277dec055ba3
Removing intermediate container 277dec055ba3---> a6c65810538e
Step 7/7 : CMD ["python" ,"app.py"]---> Running in 89fa40f016b6
Removing intermediate container 89fa40f016b6---> fb540978df9e
Successfully built fb540978df9e
Successfully tagged vincent/flask-hello-world:latest

查看镜像:

iie4bu@hostdocker:~/ddy/docker-flask$ docker image ls
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
vincent/flask-hello-world                       latest              fb540978df9e        41 seconds ago      919MB

如果在构建的过程中有问题,可以利用中间过程产生的镜像ID进行DEBUG。命令docker run -it imageId /bin/bash

运行这个镜像:

iie4bu@hostdocker:~/ddy/docker-flask$ docker run -d vincent/flask-hello-world
d695fbafdd6e99c19849ecc96420ebe6e771207a5382a7189354f64ca7ebaa58

-d:表示后台运行container。

iie4bu@hostdocker:~/ddy/docker-flask$ docker container ls
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
d695fbafdd6e        vincent/flask-hello-world   "python app.py"     28 seconds ago      Up 26 seconds       5000/tcp            nervous_shaw

目前还无法访问。

从零开始学习docker(一)相关推荐

  1. [297]从零开始学习Docker

    这篇文章是我学习 Docker 的记录,大部分内容摘抄自 <<Docker - 从入门到实践>> 一书,并非本人原创. 学习过程中整理成适合我自己的笔记,其中也包含了我自己的实 ...

  2. 从零开始学习docker(十七)Swarm mode ---service

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 上一节中,我们学习了如何搭建一个swarm集群.本节中,我们介绍如何操作service. service,大家应 ...

  3. 从零开始学习docker(二十二)容器监控

    docker ps 可以知道后台有哪些容器在运行. docker ps -a 可以知道后台有哪些容器在运行.包括退出的容器. docker top CONTAINER_ID 可以知道container ...

  4. 从零开始学习docker(二十一)service管理

    本节我们介绍如何以方便的方式管理service. 我们之前提到docker-compose,适用于本地开发,可以在本机部署,提供了很大的便利.而swarm是一个cluster,可不可以通过docker ...

  5. 从零开始学习docker(二十)RoutingMesh--Ingress负载均衡

    我们知道容器之间的通信,例如上图中的10.0.9.3与10.0.9.5通信是通过overlay网络,是通过一个VXLAN tannel来实现的. 但是service和service之间通信是通过VIP ...

  6. 从零开始学习docker(十九)Swarm mode 集群服务间通信--RoutingMesh

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 在上一节中,我们介绍了通过service create部署了wordpress和mysql,我们发现了几个问题: ...

  7. 从零开始学习docker(十八)Swarm mode 部署wordpress

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 本次我们部署一个稍微负复杂的application--wordpress. 之前我们使用docker run分别 ...

  8. 从零开始学习docker(十六)Swarm mode 创建集群

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 这一节我们介绍如何搭建一个三节点的swarm集群.安装docker的同时,swarm已经内置了.所以不需要额外安 ...

  9. 从零开始学习docker(十五)Swarm mode 介绍

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 一般情况下,我们都在一台机器下部署容器,但实际情况下,应用如果只在一台机器上无法满足我们的需求,包含的容器比较多 ...

最新文章

  1. 半监督学习下的高维图构建
  2. 企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据
  3. 思科拓扑结构探测及VLAN设计
  4. 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)
  5. 微型计算机字,微型计算机杂志
  6. 根据 HTML 规范,以下代码中,外层容器 .outer 的宽高分别是:
  7. 函数伪代码_Excel常用函数
  8. SpringCloud创建Eureka模块集群
  9. python 调用控制台并获取返回结果_python脚本执行CMD命令并返回结果的例子
  10. c语言学习-打印杨辉三角形(要求打印出10行)
  11. Asset Store 下载的package存在什么地方?
  12. go tcp连接_在Go中构建并发TCP服务器样例
  13. ubuntu samba
  14. Atitit 数据库抽象层jdbc pdo ado.net等比较与异常点 目录 1. 应该具有的功能 1 1.1. 元数据 API 1 1.2. 分布式事务 vs事务中使用 Savepoint 1
  15. 如何在WORD中给数字加上圈,教程在这里,怎么在WORD中给数字加圈
  16. GitBash和GitGui右键失效解决方法
  17. 最强PostMan使用教程(7)postman做数字签名认证
  18. oracle 官网下载
  19. pywifi连接中文wifi名称(乱码)连接不上问题解决方案
  20. EasyPoi的基本使用

热门文章

  1. 写1行代码影响1000000000人,这是个什么项目?
  2. #未能找到类型或命名空间名称_如何变更文件类型为自己所需要的类型(通俗易懂快速上手)...
  3. 计算机应用基础模块2客观题答案 文档,计算机应用基础网上形考答案模块2 Word 2010 文字处理系统客观题答案(精).doc...
  4. php自定义表单怎么导入excel,织梦dedeCMS将自定义表单数据导入到excel文档实现方法...
  5. mysql 中 add2_计算器中的F,4,2,0,ADD2怎么调,MU键有什么用??急急急
  6. html5哪个输入字段必填,HTML5:如何使用“required”属性和“radio”输入字段
  7. mysql5.6数据库位置_MYSQL5.6数据库存放位置
  8. mysql ndb_mysql8 参考手册--MySQL NDB群集8.0
  9. js内存泄漏常见的四种情况(From LeuisKen)
  10. Web文件上传方法总结大全