二、在Docker中运行web应用

启动一个简单的web 应用

使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用:

[plain] view plain copy

  1. # docker run -d -P training/webapp python app.py
  2. Unable to find image ‘training/webapp‘ locally
  3. Pulling repository training/webapp
  4. 31fa814ba25a: Download complete
  5. 511136ea3c5a: Download complete
  6. f10ebce2c0e1: Download complete
  7. 82cdea7ab5b5: Download complete
  8. 5dbd9cb5a02f: Download complete
  9. 74fe38d11401: Download complete
  10. 64523f641a05: Download complete
  11. 0e2afc9aad6e: Download complete
  12. e8fc7643ceb1: Download complete
  13. 733b0e3dbcee: Download complete
  14. a1feb043c441: Download complete
  15. e12923494f6a: Download complete
  16. a15f98c46748: Download complete
  17. Status: Downloaded newer image for training/webapp:latest
  18. d00f94a31e8767271f68ab72eab15a8e805c416b0636877f22a31572d10b718d

-d 启动一个daemon并在后台运行

-P 映射一个网络端口

training/webapp docker社区提供的,预先创建好的模板,里面包含一个简单的Python Flask web应用

[plain] view plain copy

  1. # docker ps -l
  2. CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                     NAMES
  3. d00f94a31e87        training/webapp:latest   "python app.py"     59 seconds ago      Up 56 seconds       0.0.0.0:49153->5000/tcp   hopeful_lalande

-l 查看详细信息

PORTS显示 0.0.0.0:49153->5000/tcp

意思是将Container中的5000端口,映射到host的49153端口。5000是Python Flask 的默认端口。

也可以使用 -p container-port:host-port 命令来指定映射端口号

[plain] view plain copy

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

查看web应用信息

查看名为hopeful_lalande的docker container中,5000端口的映射信息

[plain] view plain copy

  1. # docker port hopeful_lalande 5000
  2. 0.0.0.0:49153

查看web应用日志

[plain] view plain copy

  1. # docker logs -f hopeful_lalande
  2. * Running on http://0.0.0.0:5000/
  3. 192.168.254.1 - - [17/Dec/2014 02:30:32] "GET / HTTP/1.1" 200 -
  4. 192.168.254.1 - - [17/Dec/2014 02:30:32] "GET /favicon.ico HTTP/1.1" 404 -
  5. 192.168.254.1 - - [17/Dec/2014 02:30:32] "GET /favicon.ico HTTP/1.1" 404 -

-f 持续查看container日志的标准化输出,类似tail -f

查看进程详细信息

[plain] view plain copy

  1. # docker top hopeful_lalande
  2. UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
  3. root                15189               2447                0                   10:24               ?                   00:00:00            python app.py

查看web应用容器详细信息

[plain] view plain copy

  1. # docker inspect hopeful_lalande
  2. [{
  3. "AppArmorProfile": "",
  4. "Args": [
  5. "app.py"
  6. ],
  7. "Config": {
  8. "AttachStderr": false,
  9. "AttachStdin": false,
  10. "AttachStdout": false,
  11. "Cmd": [
  12. "python",
  13. "app.py"
  14. ],
  15. "CpuShares": 0,
  16. "Cpuset": "",
  17. "Domainname": "",
  18. "Entrypoint": null,
  19. "Env": [
  20. "HOME=/",
  21. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  22. ],
  23. "ExposedPorts": {
  24. "5000/tcp": {}
  25. },
  26. "Hostname": "d00f94a31e87",
  27. "Image": "training/webapp",
  28. "Memory": 0,
  29. "MemorySwap": 0,
  30. "NetworkDisabled": false,
  31. "OnBuild": null,
  32. "OpenStdin": false,
  33. "PortSpecs": null,
  34. "StdinOnce": false,
  35. "Tty": false,
  36. "User": "",
  37. "Volumes": null,
  38. "WorkingDir": "/opt/webapp"
  39. },
  40. "Created": "2014-12-17T02:24:09.468631143Z",
  41. "Driver": "devicemapper",
  42. "ExecDriver": "native-0.2",
  43. "HostConfig": {
  44. "Binds": null,
  45. "CapAdd": null,
  46. "CapDrop": null,
  47. "ContainerIDFile": "",
  48. "Devices": [],
  49. "Dns": null,
  50. "DnsSearch": null,
  51. "ExtraHosts": null,
  52. "Links": null,
  53. "LxcConf": [],
  54. "NetworkMode": "bridge",
  55. "PortBindings": {},
  56. "Privileged": false,
  57. "PublishAllPorts": true,
  58. "RestartPolicy": {
  59. "MaximumRetryCount": 0,
  60. "Name": ""
  61. },
  62. "SecurityOpt": null,
  63. "VolumesFrom": null
  64. },
  65. "HostnamePath": "/var/lib/docker/containers/d00f94a31e8767271f68ab72eab15a8e805c416b0636877f22a31572d10b718d/hostname",
  66. "HostsPath": "/var/lib/docker/containers/d00f94a31e8767271f68ab72eab15a8e805c416b0636877f22a31572d10b718d/hosts",
  67. "Id": "d00f94a31e8767271f68ab72eab15a8e805c416b0636877f22a31572d10b718d",
  68. "Image": "31fa814ba25ae3426f8710df7a48d567d4022527ef2c14964bb8bc45e653417c",
  69. "MountLabel": "",
  70. "Name": "/hopeful_lalande",
  71. "NetworkSettings": {
  72. "Bridge": "docker0",
  73. "Gateway": "172.17.42.1",
  74. "IPAddress": "172.17.0.8",
  75. "IPPrefixLen": 16,
  76. "MacAddress": "02:42:ac:11:00:08",
  77. "PortMapping": null,
  78. "Ports": {
  79. "5000/tcp": [
  80. {
  81. "HostIp": "0.0.0.0",
  82. "HostPort": "49153"
  83. }
  84. ]
  85. }
  86. },
  87. "Path": "python",
  88. "ProcessLabel": "",
  89. "ResolvConfPath": "/var/lib/docker/containers/d00f94a31e8767271f68ab72eab15a8e805c416b0636877f22a31572d10b718d/resolv.conf",
  90. "State": {
  91. "ExitCode": 0,
  92. "FinishedAt": "0001-01-01T00:00:00Z",
  93. "Paused": false,
  94. "Pid": 15189,
  95. "Restarting": false,
  96. "Running": true,
  97. "StartedAt": "2014-12-17T02:24:11.279426855Z"
  98. },
  99. "Volumes": {},
  100. "VolumesRW": {}
  101. }
  102. ]

输出一个JSON格式的Docker container配置和状态。

也可以通过指定名称,获取某项信息值,如下:

[plain] view plain copy

  1. # docker inspect -f ‘{{ .NetworkSettings.IPAddress }}‘ hopeful_lalande
  2. 172.17.0.8

停止Web应用

[plain] view plain copy

  1. # docker stop hopeful_lalande
  2. hopeful_lalande

停止后,可以使用docker ps -a命令,列出之前所有docker容器

[plain] view plain copy

  1. # docker ps -a
  2. CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS                         PORTS               NAMES
  3. d00f94a31e87        training/webapp:latest   "python app.py"        21 minutes ago      Exited (-1) 43 seconds ago                         hopeful_lalande
  4. 7f22b335fb2c        fedora:latest            "/bin/sh -c ‘while t   49 minutes ago      Exited (-1) 40 minutes ago                         silly_archimedes
  5. 。。。

重启Web应用

[plain] view plain copy

  1. # docker start hopeful_lalande
  2. hopeful_lalande

删除Web应用

[plain] view plain copy

  1. # docker rm hopeful_lalande
  2. Error response from daemon: You cannot remove a running container. Stop the container before attempting removal or use -f
  3. 2014/12/17 10:49:32 Error: failed to remove one or more containers

提示无法删除一个正在运行的container。

停止该container后,重新执行上条命令,成功删除container

时间: 2024-10-13 13:16:20

二、在Docker中运行web应用的相关文章

在Docker中运行web应用

启动一个简单的web 应用 使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用: [plain] view plain copy # docker run -d -P training/webapp python app.py Unable to find image 'training/webapp' locally Pulling repository training/webapp 31fa814ba25a: Download complete 511136ea

docker中运行ASP.NET Core Web API

在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Core以及docker的基本概念,网上已经有很多文章对其进行介绍了,因此本文不会再详细讲解这些内容.对.NET Core和docker不了解的朋友,建议首先查阅与这些技术相关的文档,然后再阅读本文. 先决条件 要完成本文所介绍的演练任

在docker中运行ASP.NET Core Web API应用程序

本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Core以及docker的基本概念,网上已经有很多文章对其进行介绍了,因此本文不会再详细讲解这些内容.对.NET Core和docker不了解的朋友,建议首先查阅与这些技术相关的文档,然后再阅读本文. 先决条件 要完成本文所介绍的演练任务,需要准备以下环境: Visual Studio 2015,或者Vi

NET Core Web 应用部署到 Docker 中运行

NET Core Web 应用部署到 Docker 中运行 环境介绍 : 虚拟机:VirtualBox 5.1.6 系 统:Ubuntu 16.04.1 LTS 系统准备完成后可以使用 sudo apt-get udpate 和 sudo apt-get upgrade 对系统进行更新,然后打开https://www.microsoft.com/net/core#ubuntu 这个网址,在ubuntu系统中安装 .net core 运行环境.直接复制/粘贴给出的命令就可以了. 安装 Docker

在Docker中运行纸壳CMS并配置使用MySql

纸壳CMS是基于ASP.Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. GitHub:https://github.com/SeriaWei/ZKEACMS.Core 方式一 直接运行以下命令即可在docker中运行纸壳CMS,运行成功以后,使用{IP}:5000来访问: docker run -d -p 5000:80 zkeasoft/zkeacms 注意:使用这种方式运行,数据库使用的是SQLite. 方式二 接下

docker 运行jenkins及vue项目与springboot项目(五.jenkins打包springboot服务且在docker中运行)

docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四.docker运行nginx 五.jenkins打包springboot服务且在docker中运行 1.立即构建 输入任务名称:service_blog 选择maven项目(先要在插件管理中安装maven插件) 2.配置 源码管理 选择git(先要在插件管理中安装git插件) 输入git地址.秘钥及

(转)在Docker中运行Java:为了防止失败,你需要知道这些

转自:https://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=2649693848&idx=1&sn=4e9ef7e2a9d41b39985899b6ad146298&chksm=889321fbbfe4a8ed58d09e6bcf2f9c2603859c331489c0a8a56b8050e601438415b1398fc1f6&mpshare=1&scene=1&srcid=0419cxIPfJ

外部网络通过端口映射访问部署在虚拟机里的docker中的web应用

前文说明: Windows主机 IP:10.100.70.135 Linux 虚拟机  IP:192.168.233.129 Docker容器   IP:172.17.0.11 为方便测试使用,通常我们选择在windows主机中安装虚拟机这(这里选的是VMware workstation),在虚拟机中部署docker容器.而我们部署在docker中的容器外部网络(和windows同一层的网络)是无法访问的. 为了解决这个问题,可以采用一下这种方案. 一.创建容器时可以选择docker自带的端口映

在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Update 3) 3..NET Core 1.0.0 – VS 2015 Tooling Preview 2.请点击此处安装 4.Microsoft .NET Core SDK,可以到微软官方网站下载安装 实验步骤 一.Docker环境准备 亚马逊EC2 Windows Server 2016 with C