Docker容器中運(yùn)行nginx
nginx簡介
Nginx是一款面向性能設(shè)計(jì)的HTTP服務(wù)器,相較于Apache、lighttpd具有占有內(nèi)存少,穩(wěn)定性高等優(yōu)勢。與舊版本(<=2.2)的Apache不同,nginx不采用每客戶機(jī)一線程的設(shè)計(jì)模型,而是充分使用異步邏輯,削減了上下文調(diào)度開銷,所以并發(fā)服務(wù)能力更強(qiáng)。整體采用模塊化設(shè)計(jì),有豐富的模塊庫和第三方模塊庫,配置靈活。 在Linux操作系統(tǒng)下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系統(tǒng)下效率相當(dāng)高。同時(shí)Nginx在OpenBSD或FreeBSD操作系統(tǒng)上采用類似于epoll的高效事件模型kqueue。
docker hub拉取
docker hub 是docker官方的鏡像源,里面有做好的nginx docker image,當(dāng)然也可以發(fā)布自己的鏡像到上面去。
如果官方鏡像速度很慢,可以考慮用
阿里云的docker鏡像倉庫
主要步驟如下:
登錄阿里云的docker鏡像倉庫
獲取專屬加速器地址
升級docker客戶端(建議在1.6.0以上)
修改daemon配置文件(阿里已經(jīng)給出了所有的命令,基本上只要copy paste即可)
然后使用
docker pull nginx
就可以快速下載官方的nginx docker image了。
基礎(chǔ)的docker命令可以參看Docker初體驗(yàn)
Nginx docker image
在docker官方的頁面上,有部分樣例的說明。可以發(fā)現(xiàn),網(wǎng)站的主目錄是 /usr/share/nginx/html ,這跟我搜到的一些文章的說明不同。
我的需求是實(shí)現(xiàn)nginx搭建的文件瀏覽站。說白了就是下載站。實(shí)驗(yàn)室(or校園內(nèi))共享文件。原來采用的是 Python救急HttpServer和Ftpserver ,盡管后來采用了 python多線程啟動httpserver ,但還是經(jīng)常因?yàn)榭ň€程的問題,導(dǎo)致地址訪問失敗。所以那個(gè)方法作為臨時(shí)應(yīng)急工具還是可以的,但是如果想要長期共享文件,必須采用有完善功能的http server。
nginx的配置文件都在 /etc/nginx/ 下面,可以看到熟悉的 conf.d 文件夾,明顯里面是用戶自定義配置文件的位置。
修改自定義配置
default.conf文件內(nèi)容如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
root /usr/share/nginx/html;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
## 下面三行是添加的。
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
只需要完整的復(fù)制出來,并添加
autoindex on; autoindex_exact_size on; autoindex_localtime on;
運(yùn)行
docker run -p 8001:80 --name mynginx-v /home/embedded_310/haoyueming/2017:/usr/share/nginx/html:ro -v /home/embedded_310/haoyueming/dockerfile/default.conf:/etc/nginx/conf.d/default.conf -d --restart=always nginx
run
啟動容器有兩種方式,一種是基于鏡像新建一個(gè)容器并啟動,另外一個(gè)是將在終止?fàn)顟B(tài)(stopped)的容器重新啟動。新建并啟動所需要的命令主要為 docker run 。
-p
端口綁定 外部端口 : 容器內(nèi)端口
–name
給容器制定一個(gè)特定的名字,而不是自動生成的一長串hex。
-v
使用 -v 標(biāo)記也可以指定掛載一個(gè)本地主機(jī)的目錄到容器中去。 -v 本地文件夾:容器里的文件夾:讀寫權(quán)限
-d
更多的時(shí)候,需要讓 Docker在后臺運(yùn)行而不是直接把執(zhí)行命令的結(jié)果輸出在當(dāng)前宿主機(jī)下。此時(shí),可以通過添加 -d 參數(shù)來實(shí)現(xiàn)。
–restart=always
運(yùn)行容器時(shí)使用–restart參數(shù)可以指定一個(gè)restart策略,來指示在退出時(shí)容器應(yīng)該如何重啟或不應(yīng)該重啟。
no – 容器退出時(shí)不要自動重啟。這個(gè)是默認(rèn)值。
on-failure[:max-retries] – 只在容器以非0狀態(tài)碼退出時(shí)重啟??蛇x的,可以退出docker daemon嘗試重啟容器的次數(shù)。
always – 不管退出狀態(tài)碼是什么始終重啟容器。當(dāng)指定always時(shí),docker daemon將無限次數(shù)地重啟容器。容器也會在daemon啟動時(shí)嘗試重啟,不管容器當(dāng)時(shí)的狀態(tài)如何。
unless-stopped – 不管退出狀態(tài)碼是什么始終重啟容器,不過當(dāng)daemon啟動時(shí),如果容器之前已經(jīng)為停止?fàn)顟B(tài),不要嘗試啟動它。
nginx
鏡像的名稱,表示以什么鏡像作為底包新建一個(gè)容器。
tips
我之前運(yùn)行的時(shí)候,一般都采用交互式:
-i 保證容器的stdin開啟 -t 為容器生成一個(gè)tty終端,在命令的最后加一個(gè) /bin/bash 來保證可以交互。但是實(shí)際上,nginx并沒有運(yùn)行,導(dǎo)致我以為容器的端口綁定不是持久化的。
以前的錯(cuò)誤做法:
docker run -it nginx /bin/bash
- 利用docker搭建php7和nginx運(yùn)行環(huán)境全過程(官方鏡像)
- docker nginx 運(yùn)行后無法訪問的問題解決
- Docker上部署Nginx的方法步驟
- Docker搭建 Nginx+PHP+MySQL 環(huán)境并部署WordPress實(shí)踐
- Docker容器下運(yùn)行Nginx并實(shí)現(xiàn)反向代理
- Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法
- CentOS7 Docker Nginx部署及運(yùn)行詳解
- docker安裝nginx并配置ssl的方法步驟
- Docker新手實(shí)踐及部署NGINX的步驟詳解
- 從零開始:Docker中修改Nginx服務(wù)器配置
相關(guān)文章
docker常用容器啟動docker-compose.yml配置文件使用
這篇文章主要介紹了docker常用容器啟動docker-compose.yml配置文件使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
使用Docker時(shí)內(nèi)存占用過高的解決方案
在使用 Docker 進(jìn)行容器化部署時(shí),內(nèi)存占用過高是一個(gè)常見問題,當(dāng)服務(wù)器內(nèi)存被耗盡時(shí),會導(dǎo)致系統(tǒng)性能下降,甚至可能導(dǎo)致服務(wù)宕機(jī),本文將介紹如何排查和解決 Docker 環(huán)境下的內(nèi)存占用問題,需要的朋友可以參考下2024-12-12
Docker中安裝和配置Apache Pulsar實(shí)現(xiàn)
本文介紹了在Docker中安裝和配置Apache Pulsar集群,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
dockerfile-maven-plugin使用指南小結(jié)
最近在將應(yīng)用部署到容器平臺,需要在打包時(shí)生成docker鏡像,在網(wǎng)上首先搜到了docker-maven-plugin這個(gè)插件,本文就來介紹了dockerfile-maven-plugin使用小結(jié),感興趣的可以了解一下2021-09-09
Docker一鍵部署SpringBoot項(xiàng)目的多種方式
這篇文章主要介紹了Docker一鍵部署SpringBoot項(xiàng)目的多種方式,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-12-12
詳解Django+Vue+Docker搭建接口測試平臺實(shí)戰(zhàn)
這篇文章主要介紹了詳解Django+Vue+Docker搭建接口測試平臺實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

