天天看点

Docker学习笔记(二)使用容器部署一个Web应用Docker中容器和镜像的概念在docker容器中运行一个Web应用

Docker中容器和镜像的概念

镜像和容器类比于面向对象编程中的类和对象的概念

下面这个例子是从网上下载一个 ubuntu:15.10的镜像(类), 然后使用该镜像在本地运行了一个容器(该类生成的实例), 这里的容器就相当于一个精简的ubuntu系统,我们在这个ubuntu系统里运行了命令

一个例子

[email protected]:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
           
  • docker: Docker 的二进制执行文件。
  • run:与前面的 docker 组合来运行一个容器。
  • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo “Hello world”: 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

在docker容器中运行一个Web应用

这里运行python中基于flask的Web应用

docker pull training/webapp # 首先下载镜像
docker run -d -P training/webapp python app.py # 运行容器
           

其中

  • -d

    表示后台运行

  • P

    表示容器的端口直接映射在本主机上

  • 使用

查看正在使用的容器,如下

[[email protected] ~] docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
0ddbf3212ac4        training/webapp     "python app.py"     18 minutes ago      Up 18 minutes       0.0.0.0:32768->5000/tcp   heuristic_stallman
           
我们发现我们的Web应用容器的信息如下
  • CONTAINER ID (容器的唯一ID)

    0ddbf3212ac4

  • IMAGE (该容器所属的镜像)

    training/webapp

  • COMMAND (该容器执行的命令)

    “python app.py”

  • CREATED (创建时间)

    18 minutes ago

  • STATUS (状态)

    Up 18 minutes

  • PORTS (使用-P选项独有的状态,显示占用的端口号和使用的网络协议)

    0.0.0.0:32768->5000/tcp

  • NAMES(该容器的"花名")

    heuristic_stallman

既然是一个Web应用,我们在本地浏览器上输入IP地址和端口号,发现部署成功

Docker学习笔记(二)使用容器部署一个Web应用Docker中容器和镜像的概念在docker容器中运行一个Web应用
  • 在Web应用中 使用 -p 来指定容器端口号到主机端口号的映射
docker run -d -p 8080:8888 training/webapp python app.py
           

让容器的8080端口映射到主机的8888端口

  • 快捷的查看WEB应用程序容器端口号 docker port +容器ID / 容器花名
docker port heuristic_stallman  
5000/tcp -> 0.0.0.0:5000
           
  • 查看WEB应用程序容器内的标准输出 docker logs + 容器ID / 容器花名
[[email protected] ~]docker logs heuristic_stallman 
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.13.12 - - [11/Oct/2018 07:43:00] "GET / HTTP/1.1" 200 -
192.168.13.12 - - [11/Oct/2018 07:43:01] "GET /favicon.ico HTTP/1.1" 404 -
           
  • 查看WEB应用程序容器内部的进程 docker top
  • 查看WEB应用程序容器 docker inspect
  • 容器的启动停止删除 分别对应 docekr run/stop/rm + 容器ID / 容器花名

    注意删除前必须停止容器

继续阅读