調試Dcoker容器

yn6e 9年前發布 | 11K 次閱讀 Dcoker Docker

>原文  http://dockone.io/article/367


【編者的話】本講述了Cloud66在解決容器無法啟動時的兩種解決方案,對于沒有自動調試技術的我們,優先推薦手動調試方案。

這短暫幾個月,看到大家都在生產環境下用Docker是一件令人激動人心的事。為我們的客戶工作,并幫助他們搭建并運行,有時是富有挑戰并令人滿足的,我喜歡寫下這些普通的事情,當我們開始在線上使用Docker時。起初,富有挑戰,但是你不久就會知道這個令人吃驚的技術的好處。

如何在本地讓它工作?

容器最大的好處就是它是靜態的,因此你可以最終部署出一致性的環境。如果你有些事務需要使用指定的鏡像,第一步是嘗試本地運行。在生產環境運行docker是非常簡單的,同時也是很容易排除故障的。

如果可以本地構建鏡像,你需要開啟你的容器通過命令docker run -it <image_name>:<tag> <command>。使用的命令將指定服務運行容器,任何輸出將讓你有權限跟蹤將發生什么問題。

Cloud66是怎樣讓它工作?

這里的第一步是檢查,是否你已經通過開始命令(start command)提供的服務來啟動容器,該開始命令可以是在Dockerfile中也可以是在服務配置項中。如果已經隱藏了這些,那么有些步驟用于解決這個問題。

自動調試(live)

使用Cloud 66 toolbelt來運行你的容器:

cx run -s <stack_name> --server <server_name> --service <service_name>

這個命令將根據帶有裝載有效環境變量或者設置網絡或者DNS的鏡像,啟動一個新的容器,并附加(attach)進容器。你將可能看到任何錯誤的消息,從啟動開始,這將幫助你解決問題。

你可以隨意添加 /bin/bash到命令末尾,以此來開啟Bash腳本在容器中。這將幫助你調試容器在里邊。這些命令可能提供給你復制或者粘貼,如果你訪問你的 Stack page -> Docker server -> Server name -> View running containers (通過右鍵)。

手動調試(retrospective)

1、為你的服務器開啟SSH功能。

2、我們自動輸出開啟容器過程中產生的日志到文件/var/log/containers中,這些文件被命名如下: <service>_start_errors.log。這些日志文件將容納任何通過開始命令產生的輸出,這將是一個理解你容器為什么沒有啟動起來的好的主意。

3、檢查任何運行容器通過docker ps 如果容器沒有運行在這里,可能有些事物阻止了其啟動。

4、在這時,我們可以運行docker ps -a檢查來的老的容器啟動失敗。注意最后一次部署的容器ID,我們將需要它在接下來的步驟中。

5、現在讓我們檢查失敗容器的日志,通過運行docker log <container-id>,將輸出為什么容器不能啟動的所有錯誤信息。

總體來說,你將面對許多事務,可能被其它人帶得有經驗。一個快速的google錯誤信息搜索將讓你朝著正確的方向,如果你困惑的時候會感受到達到我們的目標是容易的。

原文鏈接: Debugging Docker containers (翻譯:劉紅)

===========================

譯者介紹

劉紅,目前工作于成都一家虛擬現實公司,公司已經部署Docker線上環境,如果樂意大家多多溝通Docker技術。

 本文由用戶 yn6e 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!