日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker启动nginx,并挂载目录及docker容器中文乱码

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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容器中文乱码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。