Docker小記-Docker中運行軟件

Docker命令

  • docker help :顯示Docker命令行工具的基本語法
  • docker ps:顯示每個運行的容器
  • docker logs : 後接docker名稱或id顯示日誌
    • 寫入的日誌將持久化保存、持續增長,只要該容器還存在。長期持久性會成爲長期進程的一個問題。一個更好的方式是,使用存儲捲來處理日誌數據
    • docker logs命令有一個標誌,–follow或-f,用來顯示整個日誌,然後將繼續監視和更新日誌的顯示,不放過任何日誌中的變化
  • docker restart
  • docker stop
  • docker exec:在運行的容器中運行額外的進程。
  • docker create:和docker run很類似,主要區別在於該容器是被停止狀態創建
  • docker rename:重命名該容器
  • docker top:顯示的是主機爲每一個容器中的進程所分配的 PID
  • docker rm: 刪除容器,可以通過在命令中指定–rm來避免清理工作的負擔。這樣做,當容器進入退出狀態時,就會被自動刪除。
  • 查看所有容器ID:sudo docker ps -a -q
  • stop停止所有容器:sudo docker stop $(sudo docker ps -a -q)
  • remove刪除所有容器:sudo docker rm $(sudo docker ps -a -q)
docker exec web ps

守護式容器

  • 適合那些在後臺靜默運行的程序,這類程序被稱爲守護程序。守護程序通常通過網絡或其他通信工具和其他程序或人進行交互。
  • 在後臺運行容器的守護程序,使用–detach標誌或其縮寫形式-d。
docker run --detach --name web nginx:latest

交互式容器

  • 使用–interactive(或-i)和–tty(或-t)
    • –interactive選項告訴Docker保持標準輸入流(stdin,標準輸入)對容器開放,即使容器沒有終端連接。
    • –tty 選項告訴 Docker 爲容器分配一個虛擬終端,這將允許你發信號給容器
  • 啓動容器後,得讓程序在容器內運行起來。在這種情況下,運行一個叫作sh的shell程序。這樣就可以在容器內運行任何程序
  • 輸入exit來關閉這個互動容器。這將終止shell程序,並停止該容器。
  • 按住【Ctrl】(或【Control】)鍵,然後按【P】鍵,再按【Q】鍵,之後就會返回到主機的shell且該容器繼續運行。
// 創建虛擬終端並綁定標準輸入
docker run --interactive --tty 
-- link web:web \
--name web_test \
busybox:latest /bin/sh

PID命名空間

  • 每一個運行的程序或進程,在Linux機器都有一個唯一編號,叫作進程標識符(PID)。
  • 每個命名空間擁有一套完整的PID,爲每個容器創建一個PID命名空間是Docker的關鍵特徵。
  • 從進程的一個命名空間角度來看,PID1可能是指像runit或supervisord這樣的init系統進程。在不同的命名空間中,PID1可能是指諸如bash的shell命令。

只讀文件系統

  • –read-only
docker run -d --name wp --read-only wordpress:4
  • docker inspect命令將顯示Docker爲該容器保留的所有元數據(一個JSON文件)。格式選項會改變元數據。除了該容器的運行狀態,下例中其會濾除元數據的所有字段。
docker inspect --format "{{.State.Running}}" wp

環境變量的注入

  • -env標誌或-e縮寫,可用於注入任何環境變量。如果變量已經由鏡像或Docker設置,則該值將被覆蓋

自動重啓容器

restart

  • -restart 標誌,就可以通知Docker完成以下操作:
    • 從不重新啓動(默認)
    • 檢測到故障時嘗試重新啓動
      -當檢測到故障時,在一段預預定的時間後重新開始嘗試重啓
    • 不管任何條件,始終重新啓動容器
  • 回退策略決定了連續嘗試重新啓動所需要的時間間隔。指數回退策略會將花在前一次等待連續嘗試的時間加倍。例如,如果第一次容器重新啓動Docker需要等待1秒鐘,然後第二次嘗試將等待2秒,第三次等待4秒,第四次等待8秒,以此類推。
docker run -d --name backoff-detector --restart always wp

init、supervisor

  • init或supervisor進程,用於啓動和維護其他程序狀態。在Linux系統中,PID #1是init進程。它啓動所有其他系統進程,並在出現意外故障時重新啓動它們。容器中使用類似的模式來啓動和管理進程,是一個常見的做法。
  • 容器中的supervisor進程用來保持容器始終運行,即使目標進程(如一個web服務器),出現故障並重新啓動。一個容器中可能有多個這樣程序,最流行的包括init、systemd、runit、upstart和supervisord
  • 使用init或supervisor程序的一個常見替代方法是使用一個啓動腳本,該腳本至少會檢查軟件成功啓動的先決條件。這些腳本有時會用作容器的默認命令
  • 使用–entrypoint標誌來運行指定程序,並傳遞參數
docker run --entrypoint="cat" \  // 使用cat作爲容器執行的入口
nginx:latest /entrypoint.sh      // 將/entrypoint.sh作爲cat命令的參數

相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章