【docker】docker初試與填坑

docker是最近很流行的部署方式,最近嘗試以前的項目都轉移到docker上運行,下面是碰到的一些坑和解決方案。

 
 
 
 
  • 網絡問題 由於國內的緣由,docker pull 鏡像的時候常常碰到連不上或者速度極慢的狀況。 這部分能夠使用 國內流行的  daocloud 的方案解決 ,使用dao pull代替docker pull ,若是是自行構建,可能須要使用代理或者直接在國外主機build,再打包傳回來。
  • 時間同步 hub.docker.com上的鏡像,包括本身構建的,基本上都是以utc時區做爲默認時區,這樣於host主機時間每每差8個小時。 最好的解決方案是  掛載volumn   /etc/localtime 到  docker環境中,若是是docker命令,docker -v /etc/localtime:/etc/locaitime:ro ... 若是是docker-compose.yml   添加volumes
    volumns:
       - /etc/localtime:/etc/localtime:ro
  • entrypoint 與 run 構建docker鏡像時,最後一句每每要寫上docker的"入口",使用entrypoint or run? 這兩個最基本的區別就是 entrypoint 包含了命令自己,是應用化的docker鏡像,若是 指定    docker-a 的entrypoint位 ls 則 docker run  entrypoint  -l  的結果就是ls -l 的結果,而若是指定  run 爲ls,則  docker run  entrypoint  ls -l   則爲ls -l的結果 因此單次執行不須要後臺運行的項目,基本上建議指定爲 entrypoint,不然建議run。 能夠在 docker/docker-compose run  後面使用 --entrypoint覆蓋dockerfile裏的設置,不過若是想執行bash可能要使用 bash -c 代替。
  • 空間佔用 若是pull了大量的image,可能會致使docker鏡像佔用了大量的磁盤空間,因此不少人每每但願找小而美的images,可是這每每沒有必要: docker會複用相同的層(layer) ,因此pull或者build鏡像的時候,最好找基於同一個base的鏡像,特別是構建的時候,能複用的儘可能複用。
  • docker 卡死 初期試用docker時,若是沒有預估好資源使用量,可能會致使docker卡死,可能會致使系統其餘服務響應都會變慢。 建議在多核機器上(>4),對docker使用CPU限制,建議使用cpuset 限制n-1個核心爲docker使用,剩下一個響應其餘操做,或者使用cpu-shares限制使用量(不超過90%)
  • 端口與IP docker默認使用nat做爲網絡使用方式,使用expose和publish bind暴露內部服務端口。 若是無需對外提供服務,儘可能減小主機端口綁定,使用docker-compose時,對內服務無需是用ports指定端口,除非須要在另一臺機器上使用。 若是須要綁定靜態ip或直接使用外網ip,能夠使用iptables,或者 ip netns等方法,這裏我也沒作太多實踐,下次補充。
  • 未完待補充..


文章來源:http://blog.xujif.com/archives/dockers.html
相關文章
相關標籤/搜索