linux服务器上,docker安装nginx

本文介绍了在远程Linux服务器上使用Docker安装和运行Nginx时遇到的权限问题,以及两种修改Nginx配置的方法:一种是直接在容器内修改,另一种是通过挂载配置文件到主机进行修改。此外,还提供了启动、停止和管理Docker容器的相关命令。

如果出现
Using default tag: latest Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=nginx&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
查看 docker 命令权限问题

在远程 Linux 服务器上,使用docker 安装 Nginx ,以及对 Nginx 修改配置,在这里提供两种修改方式(目前我个人使用的是第二种方式)

创建 Nginx 服务器

  1. 获取nginx镜像列表
docker search nginx
  1. 拉取nginx镜像(注:默认选取官方最新镜像),其它版本可以去DockerHub查询
docker pull nginx
  1. 查看nginx镜像信息(使用第二种修改 Nginx 配置方式,可以从这一步开始接 修改方式二 的后续操作)
docker images nginx
  1. 创建nginx容器
docker run --name nginxText -p 80:80 -d nginx

–name :指的是创建容器后的名字
-d : 指的是对应镜像名
-p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口

  1. 使用docker ps命令,可以查看到正在运行的nginx容器
    请添加图片描述
    在浏览器访问主机,会看到nginx欢迎页,如果你是云服务器(云服务器公有 IPv4 地址),请记得开放对应的外网端口
    请添加图片描述
    到此Nginx容器的搭建已经完成,接下来是Nginx配置文件的修改

修改方式一:进入到nginx容器内部修改

适合改动少的情况

这里提供进入容器的方式,对应文件位置,退出容器方式。具体修改内容请根据需求调整。

  1. 进入容器内部:
docker exec -it 容器名或者容器ID bash   # 进入容器的命令行
例如: docker exec -it nginxText bash
  1. 进入到nginx容器内部后,我们可以切换到 /etc/nginx目录下,可以看到相关的nginx配置文件都在/etc/nginx目录下
cd /etc/nginx
ls -l

请添加图片描述

  1. nginx容器内的默认首页html文件目录在 /usr/share/nginx/html,pwd查看当前所在目录,目录下有两个nginx默认页面
cd /usr/share/nginx/html
ls -l

请添加图片描述

  1. 日志文件位置在 /var/log/nginx 目录下
cd /var/log/nginx
ls -l

请添加图片描述

  1. 执行exit命令退出容器

请添加图片描述
修改方式二:将nginx容器内部配置文件挂载到主机(此方式可接在下载Nginx镜像后)

将nginx容器内部配置文件挂载到主机,之后就可以在主机对应目录修改即可,适用于大部分场景。

  1. 创建Nginx配置文件
    在服务器文件夹,任意自己想要的位置(一般为 /home 文件夹下的任意位置),创建Nginx配置文件目录,我这里放在 /home/ubuntu/mysoft/docker-data 文件夹下
# 创建挂载目录
mkdir -p /home/ubuntu/mysoft/docker-data/nginx/conf
mkdir -p /home/ubuntu/mysoft/docker-data/nginx/log
mkdir -p /home/ubuntu/mysoft/docker-data/nginx/html
  1. 创建一个容器,将创建容器时的配置,复制到上一步创建的挂载目录中
docker run --name nginxText -p 80:80 -d nginx

–name :指的是创建容器后的名字
-d : 指的是对应镜像名
-p 指定主机与容器内部的端口号映射关系,格式 -p [宿主机端口号]:[容器内部端口],此处我使用了主机80端口,映射容器80端口

docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf

docker cp [容器名/容器ID]:/容器默认配置文件地址 /粘贴文件地址

此步骤所有命令

# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/ubuntu/mysoft/docker-data/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/ubuntu/mysoft/docker-data/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/ubuntu/mysoft/docker-data/nginx/
# 将容器中的日志log文件夹复制到宿主机
docker cp nginx:/var/log/nginx/ /home/ubuntu/mysoft/docker-data/nginx/log
  1. 停止并移除容器
命令:
停止容器:docker stop dbc 
移除容器:docker rm dbc 
  1. 再次创建一个新容器并作目录挂载
docker run \
-p 80:80 \
--name breed-web \
-v /home/ubuntu/mysoft/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/ubuntu/mysoft/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/ubuntu/mysoft/docker-data/nginx/log:/var/log/nginx \
-v /home/ubuntu/mysoft/docker-data/nginx/html:/usr/share/nginx/html \
-d nginx

(建议将命令在文档中编辑好后复制,再 Shift + Insert 粘贴到 xshell)

请添加图片描述

使用 docker ps 查看,容器已经创建
在浏览器访问主机(例如:192.168.124.182:9002),会看到nginx欢迎页,如果你是云服务器(云服务器公有 IPv4 地址,例如http://51.65.205.216:9000/),请记得开放对应的外网端口

4.1(可选)单行命令模式

docker run -p 9000:80 --name breeding -v /home/ubuntu/mysoft/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ubuntu/mysoft/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/ubuntu/mysoft/docker-data/nginx/log:/var/log/nginx -v /home/ubuntu/mysoft/docker-data/nginx/html:/usr/share/nginx/html -d nginx
命令描述
–name breeding启动容器的名字
-d后台运行
-p 9000:80将容器的 9000 端口映射到主机的 80 端口
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf挂载nginx.conf配置文件
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d挂载nginx配置文件
-v /home/nginx/log:/var/log/nginx挂载nginx日志文件
-v /home/nginx/html:/usr/share/nginx/html挂载nginx内容
nginx指的是对应镜像名
\shell 命令换行
  1. 设置开机启动nginx
docker update breeding --restart=always

breeding 为容器名称

  1. 修改html文件,查看是否生效
    将 /home/ubuntu/mysoft/docker-data/nginx/html/index.html 文件下载下来,修改了标题,再传入到/home/ubuntu/mysoft/docker-data/nginx/html 文件夹下,覆盖之前的 index.html 文件,重启容器刷新页面。
# 重启容器
docker restart breeding 

请添加图片描述

附件1:
容器命令

docker ps         # 查看正在运行的容器
docker ps -a      # 查看所有容器
docker ps -l      # 查看最近一次运行的容器

docker create 容器名或者容器ID    # 创建容器
docker start [-i] 容器名        # 启动容器
docker run 容器名或者容器ID       # 运行容器,相当于docker create + docker start
docker attach 容器名或者容器ID bash     # 进入容器的命令行(退出容器后容器会停止)
docker exec -it 容器名或者容器ID bash   # 进入容器的命令行
docker stop 容器名                    # 停止容器
docker rm 容器名                      # 删除容器

docker top 容器名                    # 查看WEB应用程序容器的进程
docker inspect 容器名                # 查看Docker的底层信息

后续问题:
Nginx 中部署 React 项目刷新或输入url后404

参考:
Docker 安装 Nginx 容器 (完整详细版)
使用docker安装nginx
docker快速安装nginx以及实现反向代理(上)

其他:
Docker 日常命令大全(完整详细版)

### 通过 DockerLinux安装 Nginx #### 准备工作 为了确保 Docker 工作正常,在开始之前应当验证 Docker 引擎的安装情况。可以通过运行 `sudo docker run hello-world` 来完成这一操作[^1]。 #### 获取 Nginx 镜像 获取最新的 Nginx 官方镜像是下一步骤的关键所在。这一步可通过命令 `sudo docker pull nginx:latest` 实现,从而获得最新版本的 Nginx 映像文件。 #### 启动 Nginx 容器 一旦拥有所需的映像之后,则可利用该映像创建并启动新的容器实例。对于希望快速启动一个基于官方 Nginx 映像的新容器而言,下面这条指令非常有用: ```bash docker run -d --name my_nginx_container -p 80:80 nginx:latest ``` 上述命令中的 `-d` 参数表示以后台模式运行容器;`--name` 设定了新容器的名字为 `my_nginx_container`; `-p` 则用于端口映射,这里指明主机上的 80 端口将被转发到容器内的相同编号端口上[^2]。 #### 测试 Nginx 运行状态 要确认 Nginx 正常运作,可以在浏览器地址栏输入服务器 IP 地址访问网页界面,或者使用 curl 命令来进行简单的 HTTP 请求测试: ```bash curl http://localhost/ ``` 如果一切顺利的话,应该能够看到默认欢迎页面的信息显示出来。 #### 自定义配置与构建自定义镜像(高级选项) 对于那些想要更深入定制化设置的人士来说,还可以考虑编写自己的 Dockerfile 文件来自定义环境变量、修改配置文件路径以及调整其他参数设定等内容。例如,清理默认 YUM 源并替换为阿里云提供的更快捷稳定的服务节点,接着再继续按照需求逐步添加所需软件包直至最终编译部署完毕后的 Nginx 应用程序为止。最后不要忘记把整个过程打包成一个新的镜像以便后续重复利用或分享给他人使用[^3]。 #### 设置自动重启策略 为了让 Nginx 即使遇到意外停止也能自行恢复服务,可以应用如下命令为其指定相应的重启政策: ```bash docker update --restart=always my_nginx_container ``` 此命令会使得名为 `my_nginx_container` 的容器无论何时因任何原因终止后都会尝试重新启动它自己[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值