48小时系统班试听入口

【Linux运维实战技术】Docker安装Nginx

发布作者:新盟教育 发布日期:2023-02-20 浏览人数:2091人

Linux运维实战技术

资源放送 

Docker安装Nginx教程讲解

↓ 扫一扫 视频在线观看↓

Linux运维资料.png



1.下载镜像

hub.docker.com/_/nginx?,这里选择官方镜像1.22.0版本:docker pull nginx:1.22.0,下载完成后检查镜像.

2.20-运维-1.png


2.创建挂载目录

用于存放默认页面、日志、配置文件,把这些文件挂载到宿主机上好处是:在需要频繁修改Nginx配置的场景中,不需要关注容器中的数据,直接删除重建容器就好。

如果已经提前把对应nginx版本需要挂载的文件打包好了,这里直接解压放在对应的路径即可,不需要执行下面从容器复制文件的步骤。

#解压目录
cd ~
tar -zxvf docker-nginx.tar.gz
没有这些文件的话,就创建目录,从容器中复制过来。
#创建目录
mkdir /home/用户/docker-nginx


3.从容器中复制要挂载的文件

先简单创建容器运行,从容器里面复制要挂载的文件到宿主机上。

# 创建并运行容器,容器命名为nginx
docker run --name nginx -p 80:80 -d nginx:1.22.0
#从容器nginx中复制nginx.conf文件到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/用户/docker-nginx/
docker cp nginx:/etc/nginx/conf.d/ /home/用户/docker-nginx/conf/
docker cp nginx:/usr/share/nginx/html/ /home/用户/docker-nginx/html/
docker cp nginx:/var/log/nginx/ /home/用户/docker-nginx/logs/


复制出的docker-nginx目录结构如下图:

2.20-运维-2.png


打包目录
cd ~
tar -czvf docker-nginx.tar.gz docker-nginx/*
#停止、删除容器
docker stop nginx
docker rm nginx


4.创建并运行容器

docker run -p 80:80 \
-v /home/用户/docker-nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/用户/docker-nginx/logs:/var/log/nginx \
-v /home/用户/docker-nginx/html:/usr/share/nginx/html \
-v /home/用户/docker-nginx/conf:/etc/nginx/conf.d \
-v /etc/localtime:/etc/localtime \
--name nginx \
--restart=always \
-d nginx:1.22.0


参数说明:

  • -p 映射端口,格式为“宿主机端口:容器端口”;

  • -v 挂载文件;

  • -e TZ=Asia/Shanghai 设置时区;

  • --privileged=true 让容器中的root用户拥有真正的root权限;

  • --name 容器名字,以后可以使用这个名字启动或者停止容器;

  • --restart=always docker启动时自动启动容器;

  • -d 指定要启动的镜像名。


如下图,执行后返回容器id没有报Error,查看容器列表,nginx容器状态正常,则安装成功。

2.20-运维-3.png


浏览器访问ip:80,可以看到nginx页面。

2.20-运维-4.png


如果安装失败,查看容器列表是否已有nginx容器,有的话需要删除容器后再重新创建。

修改Nginx配置:

在宿主机上修改html目录下的文件是即时生效的。在宿主机上修改nginx.conf和conf目录下的配置文件后,需要重启容器重新加载配置。

注意:修改配置文件时,文件中的路径要使用容器中的路径。

新增/删除映射端口:

最简单的方法就是停止、删除当前的容器,修改docker run命令中参数-p对应的端口映射值后再重新创建容器。

容器跨主机访问:

Nginx用于负载均衡时,需要访问宿主机以外的其它主机,最简单的做法是使用host模式创建容器,这时候容器将会共用使用宿主机的IP和端口。这种方式性能高,但无法自定义容器的网络配置和管理。

#改造之前的docker run,添加--net=host,去掉-p。
docker run \
-v /home/用户/docker-nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/用户/docker-nginx/logs:/var/log/nginx \
-v /home/用户/docker-nginx/html:/usr/share/nginx/html \
-v /home/用户/docker-nginx/conf:/etc/nginx/conf.d \
-v /etc/localtime:/etc/localtime \
--net=host \
--name nginx \
--restart=always \
-d nginx:1.22.0


1671585dc74035d34ac554d5f2ae42fc.jpg

推荐阅读

>>>新手必备-Linux入门之云计算是什么

>>>红帽认证入门-Linux系统介绍及企业版本选型

>>>新手必备-Linux系统安装配置+Xshell远程连接

>>>Linux常用命令行合集之绝对路径和相对路径

>>>软连接与硬连接