原文:使用Docker来运行WebApp

(作者:陈玓玏)

1、加载镜像到容器并运行webapp脚本

先进入管理员模式:

su root

然后使用已有的webapp镜像来练习在docker上运行webapp需要先把镜像下载到docker中;

docker pull training/webapp

加载完成之后,我们需要把webapp的端口设置成本机的开放端口,如果是直接运行脚本和设置端口一次性完成,方法如下:

docker run -d -P training/webapp python app.py

这样就是在默认端口上(-P将docker端口映射到主机),在后台运行(-d设置)training/webapp这个镜像中的Python脚本文件app.py。

2、访问webapp

那么怎么访问这个正在运行的webapp呢?你需要两个东西:1)你主机的ip地址;2)你容器映射到的端口地址。

获取ip地址的命令:

ifconfig -a

输出结果中的inet就是你需要的ip地址。接下来查找端口号:

#查找正在运行的容器信息
docker ps
#查找所有的容器信息
docker ps -a

输出结果如下:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
091ea847d0d2 training/webapp "python app.py" 5 seconds ago Up 4 seconds 0.0.0.0:32769->5000/tcp boring_elion

结果中的PORTS选项给出了端口号,32769->5000表示主机中使用的端口是32769,而容器中的网络端口是5000。

有了IP地址和端口号,在浏览器中输入网址为 ip地址:端口号,这样就能访问webapp了,此例中输出的结果是“Hello world!”

3、可能想要改变一下端口号

如果不改变端口号,每次开启一个新容器都会在一个新的端口上运行,不过端口分配比较随机,所以每次访问webapp都需要先查询端口号,如果要改变主机使用的端口,用以下命令:

docker run -d -p 5000:5000 training/webapp python app.py

记得这里的-p要小写。

此时再尝试更改网址中的端口号为5000,依然能成功。不过需要注意的是,冒号前面的端口号表示主机中使用的端口号,但这个端口号也不是胡乱设置的,有可能有不开放的端口号或不存在的端口号,比如你设置成6000,就不会访问成功。

4、暂停容器运行

最后如果你想暂停应用,输入以下命令:

#通过容器名称停止
docker stop boring_elion
#通过容器id停止
docker stop e6d2831a4f82

此时你再通过docker ps命令不会查到任何容器信息了,只能通过docker ps -a来查看了,不过也不会有端口信息,因为此时应用已经关闭了。再次开启用以下命令:

docker start boring_elion

5、移除容器

最后移除容器:

docker rm thirsty_villani

如果提示正在运行,不能移除那么尝试以下命令:

docker rm -f thirsty_villani

-f是强制移除正在运行的容器。

如果想要自动在容器停止运行后删除,那么通过以下命令来创建容器:

docker run -d -P --rm training/webapp python app.py

这样在你停止容器的运行后,它会自动remove掉,不需要再手动清理了。

参考文章:本文是菜鸟教程的学习笔记,主要是自己的操作笔记,有很多自己的注解,也可以直接看菜鸟教程:

http://www.runoob.com/docker/docker-container-usage.html

最新文章

  1. 数据持久化(一)--NSKeyedArchiver
  2. rem适配
  3. 并发调用get请求
  4. iptables端口转发
  5. Xcode8 - apploader 上传失败 - ERROR ITMS-90168: "The binary you uploaded was invalid."
  6. Linux SPI框架(下)
  7. handsontable的单元格操作方法
  8. linux server 常见参数修改
  9. 十、Python练习----基础搭建飞机大战
  10. 第三方支付设计——账户体系
  11. RecyclerView+SwpieRefreshLayout(转载)
  12. 前端 html css
  13. Python之-------基础数据类型
  14. 蔡勒(Zeller)公式--黑色星期五
  15. Oracle 与 SqlServer 的区别浅析总结
  16. poj 3414 Pots(广搜BFS+路径输出)
  17. ice地址
  18. 使用PE工具箱 ughost 恢复系统导致被捆绑一堆软件的问题
  19. java面试题02
  20. python .loc vs .iloc区别

热门文章

  1. c#多线程操作测试(阻塞线程,结束任务)
  2. Centos7最小化安装后再安装图形界面
  3. 树莓派开机运行Python脚本 控制LED灯闪烁
  4. js正則表達式--验证表单
  5. 对string的一些扩展函数
  6. bzoj2938【Poi2000】病毒
  7. elasticsearch index 之merge
  8. 43.安装npm及cnpm(Windows)
  9. OpenCV —— HighGUI
  10. 竖向 两级手风琴 TAB 栏