0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Docker容器中运行Nginx

jf_ZqFkd6Up 来源:linux迷 2023-02-17 09:30 次阅读

在本教程中,您将学习如何将 Nginx 作为 Docker 容器运行,并将其公开给您的本地网络。此外,您将学习如何创建 Docker 数据卷以在容器和主机文件系统之间共享信息

Nginx 是一种流行的开源软件,用于 Web 服务、反向代理、缓存、负载平衡等。它非常流行并在当今许多高流量网站上使用。Docker 最常见的工作负载之一是使用它来容器化 Web 服务器。我们将向您展示如何使用 Nginx 进行设置。因此,让我们带您完成整个过程。

Docker 是一个容器化平台,用于将您的应用程序打包成一个易于管理的容器映像。

先决条件

您必须满足以下要求才能完成本教程:

Docker 应该已安装并在您的系统上本地运行。

您需要一个 root 帐户,或者用户可以运行 sudo 命令。

在 Docker 中设置 Nginx

拉取镜像

首先,我们将拉取官方的 Nginx 镜像。在您的 docker 主机上,在终端上运行以下 Docker pull 命令以从 Docker hub下载 Nginx最新镜像。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker pull nginx

ffa76b2a-ae16-11ed-bfe3-dac502259ad0.png

输出如下:

Using default tag: latest
latest: Pulling from library/nginx
e1acddbe380c: Pull complete
e21006f71c6f: Pull complete
f3341cc17e58: Pull complete
2a53fa598ee2: Pull complete
12455f71a9b5: Pull complete
b86f2ba62d17: Pull complete
Digest: sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

运行 Nginx Docker 容器

现在,我们已准备好运行 Nginx Docker 容器并将其端口公开给您的本地网络。为此,我们使用以下命令运行镜像:

linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 --name my-nginx-server nginx

ffd9a5c2-ae16-11ed-bfe3-dac502259ad0.png

输出如下:

f204ea685629dbc1d09b4a2d5f6fb64f5ef84be7d58a1b7449cc144c65c90c92
docker: Error response from daemon: driver failed programming external connectivity on endpoint my-nginx-server (27d91a249b151ea87841c46775647d7af43d12c3e753061531173f05016e485b): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use.

-d– 以分离模式启动容器(容器在后台运行)。

-p– 将一个端口从容器绑定到主机(将主机流量端口 80 路由到容器端口 80)。

-name– 我们的 Docker 容器的名称。

最后一个参数“nginx”告诉 Docker 容器使用哪个镜像。

现在打开浏览器访问http://localhost,您应该会看到一个 Nginx Web 服务器提供其默认网页。

00137a54-ae17-11ed-bfe3-dac502259ad0.png

就是这样。你有一个 NGINX 的工作实例,通过 Docker 容器。

列出 Docker 容器

要列出所有正在运行的Docker 容器,请执行以下命令:

linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -all

00727d2e-ae17-11ed-bfe3-dac502259ad0.png

根据上面的输出,我们可以使用以下两种方法的其中一种停止我们的 Nginx Docker 容器:

linuxmi@linuxmi:~/www.linuxmi.com$ docker stop f204ea685629
f204ea685629
linuxmi@linuxmi:~/www.linuxmi.com$ docker stop my-nginx-server
my-nginx-server

00bf491a-ae17-11ed-bfe3-dac502259ad0.png

要查看所有容器,甚至那些未运行的容器,您需要添加-a标志。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo docker container ls -a

00dfdc66-ae17-11ed-bfe3-dac502259ad0.png

在 Nginx Docker 容器和主机之间共享数据

Docker 容器是短暂的。默认情况下,在容器内创建的任何数据仅在容器内且仅在容器运行时可用。

因此,让我们向您展示如何在主机上访问容器内部的数据。我们的目标是创建一个简单的 HTML 文件,将其托管在容器中,并使用 Nginx Docker 容器将其提供给外部。此设置允许我们拥有在容器外部托管的持久网站内容。

为了实现这个功能,我们将使用Docker 中的绑定挂载功能。使用绑定挂载时,主机上的文件或目录会挂载到容器中。

因此,让我们首先在主目录中为您的网站内容创建一个新目录。

linuxmi@linuxmi:~/www.linuxmi.com$ mkdir ~/www

现在让我们创建一个简单的 HTML 文件并在您的索引页面上放置一些文本。

linuxmi@linuxmi:~/www.linuxmi.com$ vim ~/www/index.html

01098994-ae17-11ed-bfe3-dac502259ad0.png

编写HTML代码片段到里面。保存文件并退出 Vim。

接下来,我们将在容器上运行带有附加卷的 Nginx Docker 容器/usr/share/nginx/html到当前保存文件的主机www目录上index.html。

linuxmi@linuxmi:~/www.linuxmi.com$ docker run -d -p 80:80 -v ~/www:/usr/share/nginx/html/ --name my-nginx-server nginx

Nginx 容器默认设置为在/usr/share/nginx/html/.在上面的命令中,该-v选项设置了一个绑定挂载卷,它将 Nginx Docker 容器内部的目录链接到主机上的目录。/usr/share/nginx/html/~/www

Docker 使用 a:将主机路径与容器路径分开。主机路径始终排在第一位。

现在,如果您浏览http://localhost,您将在显示窗口上看到下面给出的输出。

01329ca8-ae17-11ed-bfe3-dac502259ad0.png

就这样。您现在有一个正在运行的 Nginx Docker 容器,它为自定义网页提供服务。

结论

Nginx 和 Docker 可以很好地协同工作。在本教程中,我们演示了如何设置和使用 Nginx Docker 容器。现在,您还知道如何在容器和主机文件系统之间共享信息。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82518
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21883
  • nginx
    +关注

    关注

    0

    文章

    135

    浏览量

    11986
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11603

原文标题:如何在 Docker 容器中运行 Nginx

文章出处:【微信号:Linux迷,微信公众号:Linux迷】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用 Docker容器化技术

    一起打包,形成一个独立的、可移植的容器。这些容器可以在任何支持 Docker 的平台上运行,无论是开发环境、测试环境,还是生产环境,都能保持一致的
    的头像 发表于 09-30 11:24 1w次阅读

    何在Docker创建容器

    、OpenStack 集群和其他的基础应用平台。为了方便用户使用和管理Docker容器,铁威马在TOS 4.0系统Docker 设计了一套友好的用户界面,请参照相关帮助文件的指引
    发表于 01-03 15:58

    docker安装nginx的详细过程

    Centos7安装nginx(二)之docker安装nginx
    发表于 10-23 17:10

    Docker的端口映射和nginx安装流程

    Docker的端口映射和nginx安装
    发表于 04-14 11:44

    Docker端口映射和nginx安装

    Docker的端口映射和nginx安装
    发表于 04-17 11:44

    理解Docker容器并畅玩docker

    创建a1_rm容器呢?还是运行之前的命令docker run -it --name a1_rm alpine哈哈,a1_rm又满血复活了,是不是很棒?-------------此外,如果容器
    发表于 11-05 09:54

    分享比较实用的Docker技巧

    1、docker top该命令是用来查看一个容器里面的进程信息的,比如你想查看一个nginx容器里面有几个nginx进程的时候,可以执行如下
    发表于 12-13 06:40

    Docker容器管理命令(一)

    1、Docker容器管理命令的使用方法查看当前主机本地docker镜像:启动容器必须依赖镜像,所以要获取到镜像的唯一标识docker
    发表于 04-20 17:55

    Docker容器管理命令(二)

    1、Docker容器管理命令的使用方法批量删除docker 容器docker cp命令docker
    发表于 04-21 11:31

    在AM335X平台上运行ubuntu系统和docker容器

    在AM335X平台上运行ubuntu系统和docker容器
    发表于 11-01 08:26 0次下载
    在AM335X平台上<b class='flag-5'>运行</b>ubuntu系统和<b class='flag-5'>docker</b><b class='flag-5'>容器</b>

    Docker Linux 容器的一些实际用例

    Docker 是一个开源平台,可以轻松地为任何应用创建一个轻量级的、 可移植的、自给自足的 *容器* 。大多数 Docker 容器的核心是在虚拟化环境中
    发表于 02-03 15:25 254次阅读

    一文带你读懂Docker容器 1

    Docker** 是一个开源软件,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
    的头像 发表于 02-03 15:33 488次阅读
    一文带你读懂<b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 1

    Docker 教程:如何将Helix QAC作为容器创建并运行

    在此 Docker 教程中,你将学习如何创建 Helix QAC 并将其作为容器化镜像运行Docker 的基本定义是一种开源和流行的操作系统级虚拟化(通常称为“
    的头像 发表于 10-31 09:36 595次阅读
    <b class='flag-5'>Docker</b> 教程:如何将Helix QAC作为<b class='flag-5'>容器</b>创建并<b class='flag-5'>运行</b>

    docker进入容器的方法有哪些

    Docker是一种流行的容器化平台,它能够快速构建、交付和运行应用程序。在使用Docker时,我们经常需要进入容器进行调试、管理和
    的头像 发表于 11-23 09:45 3395次阅读

    docker容器有几种状态

    Docker 是一种流行的容器化平台,它能够帮助开发人员将应用程序和其依赖打包成一个独立的容器,并且能够在不同的环境中进行部署和运行。在 Docke
    的头像 发表于 11-23 09:50 825次阅读