docker常見問題總結


一、鏡像相關問題

1、如何批量清理臨時鏡像文件?

#docker rmi $(DOCKER IMAGES -qf dangling=true)


2、如何查看鏡像支持的環境變量?

#docker run IMAGE env


3、本地的鏡像文件都存放在哪里?

與Docker相關的本地資源都存放在/var/lib/docker/目錄直,以aufs文件系統為例,其中container目錄存放容器信息,graph目錄存放鏡像信息,aufs目錄下存放具體的鏡像層文件。


4、構建Docker像應該遵循哪些原則?

整體原則上,盡量保持鏡像功能的明確和內容的精簡,要點包括:

盡量選取滿足需求但較小的基礎系統鏡像,例如大部分時候可以選擇debian:wheezy或debian:jessie鏡像,僅有不足百兆大小;
清理編譯生成文件、安裝包的緩存等臨時文件;
安裝各個軟件時候指定准確的版本號,並避免引入不需要的依賴;
從安全角度考慮,應用要盡量使用系統的庫和依賴;
如果安裝應用時候需要配置一些特殊的環境變量,在安裝后要還原不需要保持的變量值;
使用Dockerfile創建鏡像時候要添加.dockerignore文件或使用干凈的工作目錄。

5、碰到網絡問題,無法pull鏡像,命令行指定http_proxy無效,怎么辦?

在Docker配置文件中添加export http_proxy="http://<PROXY_HOST>:<PROXY_PORT>",之后重啟Docker服務即可。


二、容器相關問題

1、容器退出后,通過docker ps命令查看不到,數據會丟失么?

容器退出后會處於終止(exited)狀態,此時可以能過docker ps -a 命令查看。其中的數據也不會丟失,還可以通過docker start命令來啟動它。只有刪除掉容器才會清除所有數據。


2、如何停止所有正地運行的容器?

docker kill $(docker ps -q)


3、如何清理批量后台停止的容器?

docker rm -f $(docker ps -qa)


4、如何獲取某個容器的PID信息?

docker inspect --format '{{ .State.Pid }}' <CONTANINERID or NAME>


5、如何獲取某個容器的IP地址?

dpcler inspect --format '{{ >NetworkSettings.IPAddress }}' <CONTANINERID or NAME>


6、如何給容器指定一個固定IP地址,而不是每次重啟容器IP地址都會變?

目前Docker並沒有提供直接的對容器IP地址的管理支持,可以在網上查找容器網絡配置創建點對點連接的案例,來手動配置容器的靜態IP。或者在容器啟動后,再手動進行修改。


7、如何臨時退出一個正在交互的容器的終端,而不終止它?

按Ctrl-p Ctrl-q。如果按Ctil-c往往會讓容器內應用進程終止,進而會終止容器。


8、使用docker port 命令映射容器的時,系統報錯“Error: No Public port '80' published for xxx” ,怎么辦?

創建鏡像時Dockerifle要通過EXPOSE命令指定正確的開放端口;容器啟動時指定PublishAllPort=true。


9、可以在一個容器中同進運行多個應用進程么?

一般並不推薦在同一個容器內運行多個應用進程。如果有需求,可以通過一些額外的進程管理機制,比如supervisord來管理所運行的進程。可以參考https://docs.docker.com/articles/using_supervisord/


10、如何控制容器占用系統資源(CPU MEM)的份額?

在使用docker create命令創建容器或使用docker run創建並啟動容器的時候,可以使用-c | --cpu-shares[=0] 參數來調整容器使用CPU的權重;使用 -m | --memory[=MEMORY]參數來調整容器使用內存的大小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM