首页 > 系统相关 >Docker Nginx安装使用以及踩坑点总结

Docker Nginx安装使用以及踩坑点总结

时间:2023-07-13 12:22:48浏览次数:46  
标签:www nginx 坑点 etc Nginx conf 挂载 Docker docker

拉取nginx镜像

docker pull nginx:latest

运行镜像

暂时不需要配置volume挂载

docker run --name nginx -p 80:80 -d nginx

参数详解:

--name nginx 指定容器的名称

-p 80:80 映射端口

-d 守护进程运行

创建volume目录

mkdir -p /www/nginx/conf.d 
mkdir -p /www/nginx/html
mkdir -p /www/nginx/logs
mkdir -p /www/nginx/conf

拷贝nginx容器对应的文件默认配置(关键)

docker cp nginx:/etc/nginx/nginx.conf /www/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /www/nginx/conf.d
docker cp nginx:/usr/share/nginx/html /www/nginx
docker cp nginx:/var/log/nginx /www/nginx/log

注意: nginx.conf是文件,不是目录,很多的文章都没提到这个注意点,直接就创建了一个nginx.conf目录进行挂载。 如果nginx.conf是一个目录,在后面挂载的时候会报错。

报错信息:

[root@poloyy ~]# docker run -it -d -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
e0e4b40446a64927603b85854c3a6472b2dfa5681fcbfa0e170c16b15e5c8fdd
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
[root@poloyy ~]# client_loop: send disconnect: Broken pipe

报错信息的意思:

 mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)?
将“/root/nginx.conf”挂载到“/etc/nginx/nginx.conf”的rootfs导致:通过procfd挂载:不是目录:未知:您是否试图将目录挂载到文件上(反之亦然)

报错的原因是:

  • 不支持直接挂载文件,只能挂载文件夹

  • 想要挂载文件,必须宿主机也要有对应的同名文件

停止容器

docker stop nginx
docker rm nginx

重新运行镜像(挂载volume)

docker run --name nginx -p 80:80 --privileged --restart=always \
-v /www/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /www/nginx/conf.d:/etc/nginx/conf.d:rw \
-v /www/nginx/html:/usr/share/nginx/html:rw \
-v /www/nginx/log:/var/log/nginx \
-d nginx

原文链接

点击原文链接查看

标签:www,nginx,坑点,etc,Nginx,conf,挂载,Docker,docker
From: https://www.cnblogs.com/LiangSenCheng/p/17550132.html

相关文章

  • Nginx:client_body_temp_path 指令的上传文件测试
    结论硬盘必须要有上传文件3倍大小的剩余空间。否则会报错“nospaceleftondevice”。需要注意,这3份数据都会写到硬盘。大文件上传,实时观察硬盘剩余空间watch-n0.1"df-hm/",会看到很大的波动。默认临时文件路径文档Syntax: client_body_temp_pathpath[level1[lev......
  • ubuntu apt安装最新稳定版nginx
    适用于apt安装,根据自身系统可更改命令#!/bin/bash#下载安装nginxkeywgethttp://nginx.org/keys/nginx_signing.key-P/root/script/download#安装keysudoapt-keyadd/root/script/download/nginx_signing.key#添加源release_name=`lsb_release-c|awk-F''......
  • 如何实现只有80对外开放的宿主机,使用docker实现mysql和redis和外部通信的具体操作步
    使用Docker实现MySQL和Redis与外部通信引言在现代软件开发中,往往需要使用到各种数据库和缓存技术。MySQL是一种常用的关系型数据库,而Redis是一种常用的内存缓存数据库。在部署这些数据库和缓存时,我们常常需要与外部的系统进行通信,例如通过网络连接,提供服务给其他系统。本文将介绍......
  • docker教程
    概述容器较为官方的解释一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于Linux和Windows的应用,在任何环境中都能......
  • Docker学习路线3:安装设置
    Docker提供了一个名为DockerDesktop的桌面应用程序,简化了安装和设置过程。还有另一个选项可以使用Docker引擎进行安装。DockerDesktop网站Docker引擎DockerDesktopDockerDesktop是一款易于安装的应用程序,可使开发人员快速在其台式机上设置Docker环境。它适用于Windows和......
  • docker 安装 docker 并下载mysql redis镜像
    **步骤:1.Uninstalloldversions(卸载旧版本): sudoyumremovedocker\         docker-client\         docker-client-latest\         docker-common\         docker-latest\  ......
  • 修改docker源和ubuntu源
    1、修改docker源vi/etc/docker/daemon.json增加或修改成如下内容:{"registry-mirrors":["https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://vz2hqrw3.mirror.aliyuncs.com"]}Docker官方中国区:https://registry.doc......
  • Windows系统使用Nginx部署Vue
    Nginx是什么?Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。优点速度更快、并发更高......
  • Dockerfile静态扫描
    我们的产物都是基于同一Dockerfile生成,因此我们需要保证这个底层Dockerfile的安全性Dockerfile的写法有很多,我一般会采用最简单的方式,即Dockerfile什么都不处理直接RUN#主要是时区跟源的问题,我们需要重封一次[[email protected]]#catDockerfileFROMalpine:la......
  • Nginx 常用的基础配置
    基础配置1userroot;2worker_processes1;34events{5worker_connections10240;6}78http{9log_format'$remote_addr-$remote_user[$time_local]'�......