Performance
Docker啟動時間
我怎樣才能加快速度:
docker run
和docker exec
命令?執行命令需要 0.02 秒的使用者時間,0.02 秒的系統時間(在我的情況下可以),但每個大約需要 0.5 秒的實時時間(不可接受)。
例如:
$ time sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k --memory-swap=100000k -d -w /tmp -v /home/asd:/tmp my_image 187d****5037 sudo docker run --cap-add SYS_ADMIN -i -t --memory=100000k -d -w /tmp -v 0,02s user 0,02s system 6% cpu 0,496 total
我可以以某種方式加快執行容器的過程,或者至少了解為什麼浪費了這段時間嗎?
my_image
是從創建的,ubuntu
建構的圖像大約需要 800 MB。但從我檢查的結果來看,這並不重要 - 將圖像大小減小到 200 MB 不會改變上述命令的執行時間。
成本時間很可能花在創建和刪除命名空間上。要確定時間花在哪裡,您可以以不同的方式執行您的容器。
首先,消除 sudo 命令。以 root 身份登錄
sudo -s
,然後從那裡執行命令。接下來嘗試將執行拆分為單獨的創建和啟動步驟。這會讓你知道時間是花在創建容器還是執行它上:
$ time docker create --cap-add SYS_ADMIN -itd \ --memory=100000k --memory-swap=100000k \ -w /tmp -v /home/asd:/tmp my_image $ time docker start -ai $(docker ps -ql)
由於您分離執行容器,請考慮是否可以刪除 tty 分配,如果需要配置標準輸入,請刪除
-it
:$ time sudo docker run --cap-add SYS_ADMIN -d \ --memory=100000k --memory-swap=100000k \ -w /tmp -v /home/asd:/tmp my_image
之後,您可以通過將它們設置為現有的主機命名空間來禁用它們,從而開始查看為諸如網路和 pid 之類的事物創建每個命名空間所添加的時間:
$ time sudo docker run --cap-add SYS_ADMIN -itd \ --net=host --pid=host --uts=host \ --memory=100000k --memory-swap=100000k \ -w /tmp -v /home/asd:/tmp my_image
從 docker,您可以查看正在執行的操作
docker events
並檢查每個操作的時間戳。最後,請記住 docker 是一個客戶端/伺服器應用程序,並且某些實際時間可能是客戶端和伺服器之間的套接字/網路通信。