除錯Docker容器

2021-09-23 01:31:21 字數 1541 閱讀 2418

本文講的是除錯docker容器

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

最近,我看到很多人都開始在生產環境中使用docker。同樣,我們也在幫助我們的客戶使用docker,雖然整個過程挑戰頗多,但這種挑戰是最令人激動和神往的。今天我分享下在生產環境中使用docker時最常遇到的問題,希望能幫到你。

如何在本地讓它工作?

容器最大的好處之一就是它是靜態的,因此你可以最終部署出一致性的環境。如果某個映象有問題,那你可以直接在本地執行除錯。

在開發環境中執行docker

非常簡單,同時也很容易調錯。

如果你需要在本地構建映象,那你需要通過執行命令

docker run -it :

來執行容器。該命令會指定容器所執行的服務,你可以通過輸出來定位問題。

cloud66是怎樣讓它工作?

這裡的第一步是檢查,是否你已經通過開始命令(start command)提供的服務來啟動容器,該開始命令可以是在dockerfile中也可以是在服務配置項中。如果這些已經確認,那麼接下來的步驟可以幫助你解決這個問題。

自動除錯(live)

使用cloud 66 toolbelt來執行你的容器:

cx run -s --server --service

這個命令將根據帶有裝載有效環境變數或者設定網路或者dns的映象,啟動乙個新的容器,並attach進容器。你將可能看到任何錯誤的訊息,從啟動開始,這將幫助你解決問題。

你可以隨意新增/bin/bash到命令末尾,以此來開啟bash指令碼在容器中。這將幫助你除錯容器在裡邊。這些命令可能提供給你複製或者貼上,如果你訪問你的stack page -> docker server -> server name -> view running containers (通過右鍵)。

手動除錯(retrospective)

首先ssh到你的伺服器上。

我們自動輸出開啟容器過程中產生的日誌到檔案/var/log/containers中,這些檔案被命名如下: _start_errors.log。這些日誌檔案將容納任何通過開始命令產生的輸出,這將是乙個理解你容器為什麼沒有啟動起來的好的主意。

通過docker ps來確定正在執行的容器,如果容器沒有執行,那可能在啟動時出現了其它的問題。

在這時,我們可以執行docker ps -a檢查所有的容器,包括之前啟動失敗的以及已經不再執行的容器。注意記下最後一次部署的容器id,我們會在接下來的步驟中用到

現在讓我們檢查失敗容器的日誌,通過執行docker log ,將輸出為什麼容器不能啟動的所有錯誤資訊。

很多時候,你遇到的問題別人都遇到過。所以遇到問題時,你先用錯誤資訊google以下,也許很快就有了解決問題的答案。

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

譯者介紹

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

原文發布時間為:2015-05-09

docker的容器除錯

docker的除錯和虛擬機器操作 1 如何給給docker新增加速器 a 執行一下命令 mkdir etc docker echo etc docker daemon.json 重啟docker systemctl restart docker 或者 etc init.d docker restar...

docker容器 Docker 容器逃逸漏洞

2020年12月1日,阿里雲應急響應中心監測到 containerd 官方發布安全更新,修復了 docker 容器逃逸漏洞 cve 2020 15257 漏洞描述 containerd 是乙個控制 runc 的守護程序,提供命令列客戶端和 api,用於在乙個機器上管理容器。在特定網路條件下,攻擊者可...

docker學習 docker容器

1.容器檢視 已經啟動的容器 docker ps 所有的容器 docker ps a2.啟動容器相關引數 互動式容器 退出時容器處於停止狀態,無法使用 docker run it name mynginx nginx bin bash 退出當前容器 exit 守護式容器 埠88是宿主機的對映埠 do...