Docker中Nginx的安装与实践

简介: Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,我们在学习的时候可以利用 Docker 来省去复杂的环境搭建流程,比如做负载均衡、反向代理等实验。


一、Nginx 镜像下载



1. 查找 Nginx 镜像


登录 Docker Hub 官网搜索 Nginx 镜像,或者直接访问 https://hub.docker.com/_/nginx

微信图片1.png

也可以在终端使用 docker search nginx 来搜索 Nginx 镜像,OFFICAL 列为 OK 的为官方镜像。微信图片2.png


2. 下载 Nginx 镜像



从 Docker Hub 拉取镜像,命令如下:

$ docker pull nginx

使用 docker pull nginx: 来指定下载镜像的 tag,不指定默认为 latest。下载完成后使用 docker images 来查看本地已经下载好的镜像。

$ docker images
REPOSITORY    TAG    IMAGE ID    CREATED    SIZE
nginx       latest   08393e824c32   3 weeks ago  132MB


二、Nginx 容器运行



安装完成后,可以使用 docker run 命令来运行 Nginx 容器。


1. 配置端口映射


$ docker run --name nginx -p 8080:80 -d nginx
8c3026a0acd14f53e702a9854b2ffe4aa2668a552e11e171b3ae667cbe691d31


  • --name:指定容器名称,方便对容器的操作
  • -p ::指定端口映射,将容器的端口映射到主机的端口
  • -d:指定容器在后台运行,以守护进程的形式运行
  • 8c3026a...:容器ID,对容器进行操作时用于指定容器

运行成功后可以使用下面命令查看运行中的 Nginx 容器:

$ docker ps # 或 docker container ls
CONTAINER ID    IMAGE    COMMAND            CREATED    STATUS    PORTS        NAMES
8c3026a0acd1    nginx    "/docker-entrypoint.…"    5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp nginx

打开浏览器访问 localhost:8080,结果如下:


微信图片3.png


2. 配置目录绑定


基于前面运行的容器,首先将容器中已经存在的配置等文件复制出来:

# 将容器中的Nginx配置文件目录复制到主机
$ sudo docker cp nginx:/etc/nginx ~/docker
# 将容器中的Nginx代理的静态页面目录复现到主机
$ sudo docker cp nginx:/usr/share/nginx/html ~/docker


命令格式:docker cp container:source_dir host_dir

然后停止并移除刚才启动的容器:

# 停止Nginx容器
$ docker container stop nginx
# 移除Nginx容器
$ docker container rm nginx

使用下面命令重新运行Nginx容器:

$ docker run --name nginx -p 8080:80 -v ~/docker/nginx:/etc/nginx -v ~/docker/html:/usr/share/nginx/html -d nginx
bc2b1d19570acb245011e607c1baee0706fa52f35c94cf3dc26dcfca1bc59abd

-v ::指定目录绑定,将主机的目录绑定到容器的目录上,实现文件目录共享

再次打开浏览器访问 localhost:8080,可以访问到 Nginx 的欢迎页面。在主机中修改 Nginx 代理的页面文件 index.html,保存后在浏览器中刷新页面:

微信图片4.png

我们发现,将主机上的目录绑定到容器中,不仅可以实现容器中文件的持久化,也更加方便的对容器中的文件进行修改,因为只需要在主机上修改。

目录
相关文章
|
26天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
83 2
|
28天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
490 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
1月前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
88 2
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
29 4
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
65 2
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
37 3
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
49 3
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
333 3
|
2月前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
91 2