小編環境:html
下面分享一次小編在本身的阿里雲CentOS7.3服務器上使用Docker來安裝Nginx的一次全過程java
舒適小提示: 若是隻是但願單純使用docker安裝nginx能跑靜態資源項目無論一些配置文件所放位置的話,可直接執行以下2條命令便可 1. docker pull nginx # 拉取nginx鏡像 2. docker run -d -p 80:80 --name nginx nginx #運行nginx 而後瀏覽器輸入訪問地址測試: http://ip地址:端口/
docker pull nginx
舒適小提示:
-p:保證目錄名稱存在,若是不存在則從新建立一個
html: 映射容器中的靜態資源目錄
logs: 日誌文件目錄
conf: 配置文件目錄
conf.d: 配置文件子目錄
mkdir -p /IT_zhengqing/soft/nginx/html /IT_zhengqing/soft/nginx/logs /IT_zhengqing/soft/nginx/conf /IT_zhengqing/soft/nginx/conf/conf.d
-> 目的:運行啓動nginx時,將宿主機中的配置文件映射到容器中的配置文件(將nginx容器中的配置文件掛載到宿主機上)
-> 即nginx啓動後,使用的是宿主機中的配置nginx
docker run -it --name nginx -p 81:80 nginx:latest /bin/bash
①nginx.conf配置文件路徑: /etc/nginx/nginx.confdocker
cd /etc/nginx/ ls -l
②default.conf配置文件路徑: /etc/nginx/conf.d/default.confshell
conf.d:爲子目錄,容器走完nginx.conf配置文件後,會走conf.d子目錄下的配置文件
cd /etc/nginx/conf.d/
③存放靜態資源文件夾html路徑: /usr/share/nginx/html瀏覽器
cd /usr/share/nginx/
④日誌文件路徑: /var/log/nginxbash
cd /var/log/nginx
exit
docker cp fb5de6e5638d:/etc/nginx/nginx.conf /IT_zhengqing/soft/nginx/conf docker cp fb5de6e5638d:/etc/nginx/conf.d/default.conf /IT_zhengqing/soft/nginx/conf/conf.d
舒適小提示:
從容器中拷貝文件到宿主機中: docker cp 容器名或容器ID:容器中要拷貝的文件所在路徑 要拷貝到宿主機中的對應路徑
從宿主機中拷貝文件到容器中: docker cp 宿主機中要拷貝的文件路徑 容器名或容器ID:要拷貝到容器中的對應路徑
舒適小提示:
上面在容器中找配置文件以交互模式啓動的nginx容器若是端口和下面要使用的端口衝突的話,須要中止相應進程、容器運行哦!!!
檢查端口被哪一個進程佔用: netstat -lnp|grep 端口號
殺掉進程【ex:強制殺掉編號爲10001的進程】:kill -9 10001
中止以啓動的容器: docker stop nginx
刪除容器: docker rm -f nginx
而後執行docker ps查看運行的容器,若是成功刪除端口會衝突的容器,再部署,走下面的流程!!!
docker run -d -p 81:80 --name nginx -v /IT_zhengqing/soft/nginx/html:/usr/share/nginx/html -v /IT_zhengqing/soft/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /IT_zhengqing/soft/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /IT_zhengqing/soft/nginx/logs:/var/log/nginx nginx
-d: 之後臺模式啓動容器 -> 後臺運行該容器
-p 81:80: 將容器的 80 端口映射到宿主機的 81 端口 注:部分服務器須要手動去放行端口哦
--name nginx: 將容器命名爲nginx
-v /IT_zhengqing/soft/nginx/html:/usr/share/nginx/html: 將宿主機中建立的 html 目錄掛載到容器的 /usr/share/nginx/html 目錄
注意必定要找到容器中配置文件所在的準確路徑,不然這裏運行會報錯!
cd /IT_zhengqing/soft/nginx/html touch index.html # 建立文件 echo '<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>nginx容器運行中...</title> </head> <body> <h1> Hello World </h1> <p> If I were you. </p> </body> </html>' > index.html # echo:若是沒有這個文件則建立。若是有這個文件,那麼新內容將會代替原來的內容。
這裏也可使用vi編輯器建立文件,命令以下:服務器
vi index.html # 而後按i插入 , 以後輸入內容,按Esc退出編輯模式,切換到英文輸入法按shift + : 再輸入 wq 退出並保存 最後經過 cat index.html 命令查看文件內容
小編這裏說下使用vi命令和echo命令去建立文件寫入內容的區別:
在部署nginx運行時若是沒有設置只讀的狀況下,
(只讀是掛載目錄時後面加上:ro 如:-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro)編輯器
echo 命令 -> 修改內容,宿主機和容器配置文件都會改變; vi 命令 -> 修改內容,宿主機和容器配置互不影響。