docker實戰之經過nginx鏡像來部署靜態頁

  本章咱們主要講解如何經過docker構建一個nginx容器,這裏咱們以部署一個靜態html爲素材來進行演示。html

  首先咱們經過【docker search nginx】命令來查找Docker Hub上的nginx鏡像:nginx

  

  這裏咱們拉取官方的鏡像就能夠了,經過【docker pull nginx】命令。docker

  拉取完之後,咱們查看一下本地的鏡像列表【docker images】:centos

  

  nginx已經有了,其餘的幾個鏡像不用管,是我作別的demo時用過的。安全

  好了,有個nginx鏡像之後,咱們就能夠經過這個鏡像來構建一個包含nginx的容器,經過這個容器,咱們能夠運行咱們的demo項目。服務器

  在構建容器以前,咱們先準備好咱們的素材,也就是靜態html和nginx相關配置,我這邊在centos上建了一個home目錄,裏面有application和config兩個文件夾,一個存放網站發佈文件,一個存放配置。各自的路徑和文件如圖:app

  

  demo.html裏面沒內容,只是一個標準的html文件,default.conf文件則是nginx部署網站的配置:網站

   

  listen是端口,默認80就能夠了,這個是網站在服務器的內部端口,外網經過這個端口是訪問不到站點的。到時候容器運行時會作端口映射,從新指定端口供外網訪問。server_name後面寫localhost表示本地便可,location裏面的root表示nginx部署站點所在文件路徑,因爲咱們是容器部署,因此這裏的/app路徑實際上是容器的目錄。index是啓動項,咱們設置爲咱們的demo.html便可。阿里雲

  網站文件和nginx配置準備好了之後咱們就能夠開始經過nginx鏡像來構建咱們的容器了,容器都有本身的目錄的,可是爲了方便操做以及作持久化,咱們會經過docker運行容器的-v參數來作目錄掛載。日誌

  運行容器的命令【docker run -d -p 8086:80 -v /home/application/demo:/app -v /home/config:/etc/nginx/conf.d --name demo nginx】

  首先我來講一下這幾個參數,docker run 是運行一個容器的意思,-d 表示後臺運行 -p 8086:80表示將內部的80端口映射到外網8086端口上,-v表示掛載目錄,格式是 -v 宿主機目錄:容器目錄。上面的命令中咱們指定了網站資源文件路徑和nginx配置,分別對應咱們以前在宿主機的home文件裏面放好的兩個文件夾。

  執行完上面的命令之後會出現一行字符串,即表示運行成功:        

  

  緊接着咱們經過【docker ps】命令來查看咱們正在運行的容器:

  

  能夠看到一個名爲demo的容器已經在運行了,從左往右咱們依次能夠看到容器id、基於的鏡像、執行的命令、建立時間、狀態、端口、容器名稱。

  最後,咱們經過IP+端口的形式便可打開咱們部署的頁面了:

  

  

  Remarks:

  以上教程須要注意的地方:若是是新購的服務器,或者對服務器不熟悉的同窗,實踐之後發現ip+端口打不開部署好的網站,那麼多數狀況下就要檢查服務器上是否開發了相應端口,以博主爲例,使用的是阿里雲服務器,在安全組規則裏,相關端口都是打開的。另外,本文提到了一個掛載目錄的操做, 這個操做能夠將宿主機目錄掛載到容器目錄,從而實現容器的可持續化,通常像容器內的日誌啊,產生的數據文件啊,均可以經過掛載的方式掛到宿主機,這樣即使容器沒了,宿主機也會有記錄文件。還有一點就是,若是你不喜歡掛載這個操做,以爲之後刪除容器之後還得再刪宿主機下的文件夾比較麻煩,並且本身的業務場景不須要作可持續,那麼在建立容器的時候,能夠不使用-v命令,而是直接建立,等建立成功之後,經過docker cp命令來實現宿主機文件到容器目錄的拷貝操做,命令格式是 docker cp 宿主機目錄:容器目錄,具體用法我這裏就很少講了,你們線下多實踐。

相關文章
相關標籤/搜索