docker启动nginx,并挂载目录及docker容器中文乱码
1、首先下载docker的nginx镜像
docker pull nginx
2、查看下载完成的镜像
docker images
3、运行一个nginx的镜像的实例
docker run --name nginx -p 8080:80 -d nginx:latest
调用http://localhost/index.html 可以看到nginx的主页,表示运行成功;
4、交互形式进入创建的mynginx容器
docker exec -it nginx /bin/bash
在容器里,找到nginx的默认的配置文件,/etc/nginx/nginx.conf
可以看到,容器的nginx的配置文件,都是默认在容器里的/etc/nginx文件夹下,我们查看下nginx.conf内容,容器里,不支持vim操作;
cat nginx.conf
配置文件内容如下:
user nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}
默认的异常日志文件写在/var/log/nginx/
文件夹下,
最后一行,还导入了/etc/nginx/conf.d/*.conf
配置文件。
查看/etc/nginx/conf.d/*.conf
文件
可以看到,默认的静态代理资源路径是/usr/share/nginx/html
;
现在我已经知道了nginx的默认的配置文件,在什么位置,还有内容是什么,默认的root目录的位置,那么我们就可以把这些文件拷贝到物理机上的路径上,然后使用 -v命令,把路径挂载到物理机上的路径上。
5、再次操作创建容器;操作如下:
退出容器,回到物理机上,命令如下:
exit
在我的物理机下/mnt/nginx
,创建3个文件夹以及一个nginx.conf,分别存放html文件,配置文件,以及日志文件,如图所示:
拷贝容器中的对应的文件夹到物理机下对应的文件夹,大家可以对应自己的实际物理机目录,命令如下:
##导入的配置文件目录
##默认的配置文件
##html页面所放的位置
##日志文件
docker cp nginx:/etc/nginx/conf.d /mnt/nginx
docker cp nginx:/etc/nginx/nginx.conf /mnt/nginx/nginx.conf
docker cp nginx:/usr/share/nginx/html /mnt/nginx
docker cp nginx:/var/log/nginx /mnt/nginx/log
删除nginx镜像的mynginx容器
docker rm -f nginx
重新执行run命令,挂载对应的文件到物理机
注意!注意!注意!:
- 此处重中之重:
启动nginx容器时 一定要加 --net host 参数 (解释:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。)
个人理解:如果不加此参数,nginx相当于是代理nginx镜像的IP及端口,因为nginx镜像也是独立的虚机,贴上此图,便于理解
我看了这篇文章,才知道,之前部署老是不成功,没有跳转,感谢大佬。
docker run --name nginx --net host
-v /mnt/nginx/conf.d:/etc/nginx/conf.d
-v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf
-v /mnt/nginx/html:/usr/share/nginx/html
-v /mnt/nginx/log:/var/log/nginx
-d nginx
6、测试演示
http://localhost/index.html
打开url显示nginx的主页面
6.1、修改本地物理机挂载的html页面所在的位置,修改index.html页面内容
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body>
<h1>Welcome to nginx!</h1>
<h1>欢迎nginx主页</h1>
</body>
</html>
删除不要内容,只保留两行标签,一行中文,一行英文;再次刷新页面;发现文件目录挂载成功了,但是有中文乱码;
这是因为nginx使用的Linux是阉割版的,字符集跟文件字符集不匹配;
6.2、交互进入nginx的容器中,查看容器默认编码
docker exec -it nginx /bin/bash
查看默认编码
locale
查看可以用的编码
locale -a
只要修改默认的编码格式,设置成UTF-8就可以了;不过容器里,没有vim指令,我们直接再创建容器的时候,指定一下环境变量,设置一个字符集;
6.3、最终的创建指令
docker run --name nginx -p 8080:80 --net host\
-v /mnt/nginx/conf.d:/etc/nginx/conf.d \
-v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/nginx/html:/usr/share/nginx/html \
-v /mnt/nginx/log:/var/log/nginx \
-e LANG=C.UTF-8 \
-e LC_ALL=C.UTF-8 \
-d nginx
可以正常访问了;
7、docker-compose.yml 脚本如下:
version: '3'
services:nginx:image: nginx:latestcontainer_name: nginx_01volumes:- /mnt/nginx/conf.d:/etc/nginx/conf.d- /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf- /mnt/nginx/html:/usr/share/nginx/html- /mnt/nginx/log:/var/log/nginxenvironment:- LANG=C.UTF-8- LC_ALL=C.UTF-8ports:- 8080:80
docker启动nginx,并挂载目录及docker容器中文乱码相关推荐
- docker上启动nginx,并配置修改nginx的配置文件 nginx、挂载文件、docker容器中文乱码
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.因为其优秀的性能,使得其成为日常开发,线上运营必不可少的软件了.下面就通过 ...
- docker部署nginx并且挂载文件夹和文件
docker部署nginx并且挂载文件夹和文件 2018年05月30日 10:18:32 丢你刘某 阅读数:2315 这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和 ...
- Mac下使用docker下载nginx并挂载文件
Mac下使用docker下载nginx并挂载文件. 也发到另外csdn:https://blog.csdn.net/zenkin/article/details/108612594 一.docker ...
- docker启动nginx及问题处理
情景: 前后端联调,都部署在本地,需要nginx来进行转发 docker pull nginx拉取nginx镜像 准备好nginx.conf server {listen 80; # 注意这个是容器的 ...
- 【docker】docker启动nginx并实现反向代理
文章目录 1.拉取nginx镜像 2.启动nginx 3.创建文件夹 4.将nginx.conf 复制到/docker/nginx/conf/路径下 5.使用配置文件挂载的方式启动docker 5-1 ...
- docker启动nginx及常见nginx配置
nginx 为方便在设置出错时快速恢复,使用docker方式来配置nginx,下文所有命令针对docker方式. 简单启动 sudo docker run --name nginx_3000 -p 3 ...
- docker环境下安装nginx、挂载文件、docker容器中文乱码
docker环境下安装nginx.挂载文件.docker容器中文乱码 文章目录 docker环境下安装nginx.挂载文件.docker容器中文乱码 1.首先下载docker的nginx镜像 2.查看 ...
- docker安装mysql 并挂载目录
docker安装mysql 并挂载目录 == 注意代码删除注释== 创建目录/tmp/mysql/data 创建目录/tmp/mysql/conf 挂载/tmp/mysql/data到mysql容器内 ...
- nginx开启目录浏览,解决中文乱码问题
nginx开启目录浏览,解决中文乱码问题 参考文章: (1)nginx开启目录浏览,解决中文乱码问题 (2)https://www.cnblogs.com/maqingyuan/p/9132690.h ...
最新文章
- 一次gitlab无法使用ssh登录的问题解决
- anaconda使用方法
- linux usr local权限,OS X权限被拒绝/ usr/local/lib
- java重载和重载的区别
- 推荐一个非常COOL的开源相册程序!
- ecshop百度编辑器远程下载无后缀的图片,并且加水印
- 7-67 使用二维数组实现Matrix(矩阵)。 (60 分)
- 【直观详解】支持向量机SVM
- 《Essential C++》笔记之(static)静态类成员
- 【报告分享】中国人工智能产业发展指数.pdf
- java朗控点异常_Java语言基础(day_04)
- css与javascript小案例,使用css3和javascript开发web拾色器实例代码
- ART加载OAT文件的过程分析
- D盘目录或文件被损坏且无法读取怎么办
- HY-SRF05 五针超声波测距模块 在stm32f4上实现 附代码 个人经验
- 领导力21法则-- 要点总结
- 【算法入门必刷】数据结构-栈(一)
- 编码规范重要性_沟通比您的编码技能更重要
- 计算机考研全国统考时段,考研初试各科目时间安排
- C语言#if、##ifdef、#ifndef的用法详解,C语言条件编译详解
热门文章
- Hive Sql 时间格式化处理
- 16.1116 NOIP 考前模拟(信心题)
- Android:sqlite问题小结
- SQL 语句中对于like 的调优
- tensorflow object detection API训练错误解决
- C++ OJ在线编程常见输入输出技巧与示例
- PHP是弱类型还是强类型,php弱类型比较(松散比较) | CN-SEC 中文网
- 【Python】字典哈希表按键(key)值(value)顺序和逆序输出
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170318
- 第04课:深度学习框架 PyTorch