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命令,挂载对应的文件到物理机

注意!注意!注意!:

  1. 此处重中之重:
    启动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容器中文乱码相关推荐

  1. docker上启动nginx,并配置修改nginx的配置文件 nginx、挂载文件、docker容器中文乱码

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.因为其优秀的性能,使得其成为日常开发,线上运营必不可少的软件了.下面就通过 ...

  2. docker部署nginx并且挂载文件夹和文件

    docker部署nginx并且挂载文件夹和文件 2018年05月30日 10:18:32 丢你刘某 阅读数:2315 这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和 ...

  3. Mac下使用docker下载nginx并挂载文件

    Mac下使用docker下载nginx并挂载文件. 也发到另外csdn:https://blog.csdn.net/zenkin/article/details/108612594 一.docker ...

  4. docker启动nginx及问题处理

    情景: 前后端联调,都部署在本地,需要nginx来进行转发 docker pull nginx拉取nginx镜像 准备好nginx.conf server {listen 80; # 注意这个是容器的 ...

  5. 【docker】docker启动nginx并实现反向代理

    文章目录 1.拉取nginx镜像 2.启动nginx 3.创建文件夹 4.将nginx.conf 复制到/docker/nginx/conf/路径下 5.使用配置文件挂载的方式启动docker 5-1 ...

  6. docker启动nginx及常见nginx配置

    nginx 为方便在设置出错时快速恢复,使用docker方式来配置nginx,下文所有命令针对docker方式. 简单启动 sudo docker run --name nginx_3000 -p 3 ...

  7. docker环境下安装nginx、挂载文件、docker容器中文乱码

    docker环境下安装nginx.挂载文件.docker容器中文乱码 文章目录 docker环境下安装nginx.挂载文件.docker容器中文乱码 1.首先下载docker的nginx镜像 2.查看 ...

  8. docker安装mysql 并挂载目录

    docker安装mysql 并挂载目录 == 注意代码删除注释== 创建目录/tmp/mysql/data 创建目录/tmp/mysql/conf 挂载/tmp/mysql/data到mysql容器内 ...

  9. nginx开启目录浏览,解决中文乱码问题

    nginx开启目录浏览,解决中文乱码问题 参考文章: (1)nginx开启目录浏览,解决中文乱码问题 (2)https://www.cnblogs.com/maqingyuan/p/9132690.h ...

最新文章

  1. 一次gitlab无法使用ssh登录的问题解决
  2. anaconda使用方法
  3. linux usr local权限,OS X权限被拒绝/ usr/local/lib
  4. java重载和重载的区别
  5. 推荐一个非常COOL的开源相册程序!
  6. ecshop百度编辑器远程下载无后缀的图片,并且加水印
  7. 7-67 使用二维数组实现Matrix(矩阵)。 (60 分)
  8. 【直观详解】支持向量机SVM
  9. 《Essential C++》笔记之(static)静态类成员
  10. 【报告分享】中国人工智能产业发展指数.pdf
  11. java朗控点异常_Java语言基础(day_04)
  12. css与javascript小案例,使用css3和javascript开发web拾色器实例代码
  13. ART加载OAT文件的过程分析
  14. D盘目录或文件被损坏且无法读取怎么办
  15. HY-SRF05 五针超声波测距模块 在stm32f4上实现 附代码 个人经验
  16. 领导力21法则-- 要点总结
  17. 【算法入门必刷】数据结构-栈(一)
  18. 编码规范重要性_沟通比您的编码技能更重要
  19. 计算机考研全国统考时段,考研初试各科目时间安排
  20. C语言#if、##ifdef、#ifndef的用法详解,C语言条件编译详解

热门文章

  1. Hive Sql 时间格式化处理
  2. 16.1116 NOIP 考前模拟(信心题)
  3. Android:sqlite问题小结
  4. SQL 语句中对于like 的调优
  5. tensorflow object detection API训练错误解决
  6. C++ OJ在线编程常见输入输出技巧与示例
  7. PHP是弱类型还是强类型,php弱类型比较(松散比较) | CN-SEC 中文网
  8. 【Python】字典哈希表按键(key)值(value)顺序和逆序输出
  9. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170318
  10. 第04课:深度学习框架 PyTorch