Docker学习笔记(二)使用容器部署一个Web应用

Docker中容器和镜像的概念

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

/bin/echo "Hello world"

一个例子

runoob@runoob:~$ 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
    表示容器的端口直接映射在本主机上
  • 使用
docker ps 

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

[root@bogon ~] 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应用_第1张图片

  • 在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 / 容器花名
[root@bogon ~]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 / 容器花名
    注意删除前必须停止容器

你可能感兴趣的:(Docker学习笔记)