docker部署web项目_docker构建高可用web应用

docker部署web项目_docker构建高可用web应用前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

前面我们运行的容器并没有一些什么特别的用处。
接下来让我们尝试使用 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应用
docker部署web项目_docker构建高可用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"
        },
.......

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165887.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月30日 下午8:46
下一篇 2022年7月30日 下午8:46


相关推荐

  • Docker导出镜像为压缩包,并在另一台机器导入压缩包为镜像,即Docker镜像得导入导出

    Docker导出镜像为压缩包,并在另一台机器导入压缩包为镜像,即Docker镜像得导入导出引言当我们在测试环境 本文特指 docker 容器 部署好自己得服务得时候 想在生产环境上部署我们得服务 又害怕环境不一样导致服务不能运行 那么这个时候就可以把我们得容器导出为镜像 然后再把镜像导出为压缩包 接下来把压缩包复制到我们的生产环境 然后在生产环境把压缩包导入为镜像 最后使用此镜像开一个容器 然后在容器内打开我们的服务 那么我们的服务就可以正常运行啦 环境简介系统环境 ubuntu18 04 如果要在新的服务器使用我们的镜像 那么需要新的服务器和你测试环境的服务器的底层系统一致 即如果你测试环

    2026年3月18日
    2
  • docker集群软件之fleet安装

    docker集群软件之fleet安装前几天给大家介绍了docker的集群存储软件etcd的安装(地址http://dl528888.blog.51cto.com/2382721/1623746),今天就再给大家介绍集群的控制软件fleet安装。fleet的介绍,info里复制的fleet 是一个通过 Systemd对CoreOS 集群中进行控制和管理的工具。fleet 与 Systemd 之间通过 D-Bus API 进行交互,每个…

    2022年5月1日
    139
  • Docker Compose详解

    Docker Compose详解使用 DockerCompos 预计阅读时间 11 分钟 DockerCompos 是一种用于帮助定义和共享多容器应用程序的工具 使用 Compose 我们可以创建一个 YAML 文件来定义服务 并且使用一个命令 可以启动所有内容或将其全部关闭 使用 Compose 的最大优势是您可以在一个文件中定义您的应用程序堆栈 将其保存在项目 repo 的根目录中 它现在是版本控制的 并且可以轻松地让其他人为您的项目做出贡献 有人只需要克隆您的存储库并启动撰写应用程序 事实上 你现在可能会在 GitHub Gi

    2025年6月17日
    4
  • docker php 安装redis,Docker 安装 Redis

    docker php 安装redis,Docker 安装 RedisDocker 安装 RedisRedis 是一个开源的使用 ANSIC 语言编写 支持网络 可基于内存亦可持久化的日志型 Key Value 的 NoSQL 数据库 并提供多种语言的 API 1 查看可用的 Redis 版本可以通过 Sortby 查看其他版本的 Redis 默认是最新版本 redis latest 你也可以在下拉列表中找到其他你想要的版本 此外 我们还可以用 docker

    2026年3月19日
    2
  • docker的端口映射_外网远程桌面端口映射

    docker的端口映射_外网远程桌面端口映射Docker端口映射实现网络访问首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!我会在当天或者第二天及时回复,并且改进~~Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢?下面我来介绍下Docker通过端口映射来实现网络访问一、从外部访问容器应用在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数指定端口映射。先来说说p和P吧-p可以指定要映射的端口,并

    2022年10月9日
    6
  • 群晖docker mysql_Watchtower – 群晖自动更新 Docker 映像与容器

    群晖docker mysql_Watchtower – 群晖自动更新 Docker 映像与容器群晖的Docker功能非常丰富,不过也有不完美的地方,映像和容器更新比较麻烦,比如我的Docker容器运行了十几个,如果通过手动更新非常繁琐,容器还需要重新配置本文就介绍如何通过watchtower全自动更新Docker映像,并保留原始配置重新运行容器。watchtower是一个可以监控正在运行的容器镜像是否有更新的工具,当本地镜像与远端镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重…

    2025年6月13日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号