• docker(5)docker运行web应用


    前言

    前面我们运行的容器并没有一些什么特别的用处。
    接下来让我们尝试使用 docker 构建一个 web 应用程序。
    我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
     

    运行一个web容器

    docker pull training/webapp  # 载入镜像
     docker run -d -P training/webapp python app.py
    
    [root@jkc easymock]# docker run -d -P training/webapp python app.py
    e8365788c20ff883c97718444959c52f995ea6c38713a23a2f4ed1421ab65368
    [root@jkc easymock]# 
    

    参数说明:

    • -d:让容器在后台运行。
    • -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
       

    查看 WEB 应用容器

    使用 docker ps 来查看我们正在运行的容器:

    [root@jkc ~]# docker ps
    CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                     NAMES
    e8365788c20f        training/webapp           "python app.py"          31 minutes ago      Up 31 minutes       0.0.0.0:49153->5000/tcp   dazzling_mcnulty
    

    这里多了端口信息。

    PORTS
    0.0.0.0:49153->5000/tcp
    

    Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 49153 上。
    这时我们可以通过浏览器访问WEB应用

    我们也可以通过 -p 参数来设置不一样的端口:

    [root@jkc ~]# docker run -d -p 5000:5000 training/webapp python app.py
    

    docker ps查看正在运行的容器

    [root@jkc ~]# docker ps
    CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES
    0d3fe01b6c13        training/webapp           "python app.py"          36 seconds ago      Up 35 seconds       0.0.0.0:5000->5000/tcp   lucid_lederberg
    

    容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
     

    网络端口的快捷方式

    通过docker ps命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用docker port可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
    上面我们创建的 web 应用容器 ID 为 0d3fe01b6c13 名字为 lucid_lederberg。
    我可以使用 docker port 0d3fe01b6c13 或 docker port lucid_lederberg 来查看容器端口的映射情况。

    [root@jkc ~]# docker port 0d3fe01b6c13
    5000/tcp -> 0.0.0.0:5000
    [root@jkc ~]# docker port lucid_lederberg
    5000/tcp -> 0.0.0.0:5000
    [root@jkc ~]# 
    

    查看WEB应用程序容器的进程

    我们还可以使用 docker top 来查看容器内部运行的进程

    [root@jkc ~]# docker top 0d3fe01b6c13
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                23464               23421               0                   16:09               ?                   00:00:00            python app.py
    

    检查 WEB 应用程序

    使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

    [root@jkc ~]# docker inspect e8365788c20f
    [
        {
            "Id": "e8365788c20ff883c97718444959c52f995ea6c38713a23a2f4ed1421ab65368",
            "Created": "2021-01-22T07:26:49.225684861Z",
            "Path": "python",
            "Args": [
                "app.py"
            ],
            "State": {
                "Status": "exited",
                "Running": false,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 0,
                "ExitCode": 137,
                "Error": "",
                "StartedAt": "2021-01-22T07:26:49.59638614Z",
                "FinishedAt": "2021-01-22T08:09:05.22474156Z"
            },
    .......
    
    
  • 相关阅读:
    8.2
    Telnet远程控制协议
    2020/6/29
    HCIA VRP基础命令(二)
    HCIA VRP基础命令(一)
    解决ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'报错问题
    nginx配置文件nginx.conf
    nginx服务器搭建
    FTP服务器
    NFS
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14313970.html
Copyright © 2020-2023  润新知