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命令。
只讀文件系統
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命令的參數
相關鏈接