【前言】至少,以<em>Docker</em>和kubernetes为代表的容器技术日新月异,但我们在容器的使用过程中,也会碰到各种损坏和难题。出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。具有超过十年
2021-05-16 04:00:16
本文轉自@TWT社群。
【前言】至少,以Docker和kubernetes為代表的容器技術日新月異,但我們在容器的使用過程中,也會碰到各種損壞和難題。出有針對性的說明和解決方案,希望可以幫助到大家去快速定位和解決類似問題故障。
具有超過十年的網際網路運維及五年以上團隊管理經驗,多年容器雲的運維,尤其是在Docker和kubernetes領域非常精通。
Docker是一種相對使用較簡單的容器,我們可以通過以下幾種方式獲取資訊:
1,通過docker run執行命令,或許返回資訊
2,通過docker logs去獲取日誌,做有針對性的篩選
3,通過systemctl status docker檢視docker服務狀態
4,通過journalctl -u docker.service檢視日誌
以下是整理的docker容器類問題故障,分為9個類
一,啟動類故障
1,
docker:無法通過unix:///var/run/docker.sock連線到Docker守護程式。泊塢窗守護程式正在運行嗎?
原因:Docker未正常啟動
解決方式:
systemctl啟動docker
2,
無法創建Unix套接字/var/run/docker.sock:是目錄
原因:docker.sock不能創建
rm -rf /var/run/docker.sock
然後重新啟動docker
3,
docker.service的作業失敗。無法啟動Docker應用程式
原因:Selinux引起
/ etc / sysconfig / selinux,將selinux值替換為禁用
重啟docker解決
4,
泊塢窗:來自守護程式的錯誤響應:
/ var / lib / docker / overlay / XXXXXXXXXXXXXXXXXXXXXXXXXX:無此類檔案或目錄。
原因:docker沒有指定目錄或檔案
systemctl停止docker
rm -rf / var / lib / docker / *
重啟run重新啟動容器
5,
泊塢窗:來自守護程式的錯誤響應:衝突。容器名稱「 XXX」已被容器「 XXX」使用。您必須刪除(或重新命名)該容器才能重用該名稱。
原因:碼頭工人名字重名
改名容器或者刪除重建容器
6,
錯誤:連線啟用失敗:找不到適合此連線的裝置
原因:網卡配置問題
重啟網卡
7,
系統重啟後docker無法啟動
報錯為:docker0:iptables:該名稱沒有鏈/目標/匹配
原因:docker服務iptables問題
重啟docker服務系統重啟docker
8,
啟動守護程式時出錯:初始化graphdriver時出錯:不支援驅動程式
使用overlay2儲存驅動啟動docker daemon報錯
原因:daemon經濟配置
新增配置:
/etc/docker/daemon.json
{「儲存驅動器」:「 overlay2」,
「儲存選項」:[「 overlay2.override_kernel_check = true」]}
9,
無法啟動docker.service:單位docker.service被遮蔽。
未知原因:docker被遮罩
systemctl取消遮蔽docker.service
systemctl取消遮蔽docker.socket
systemctl啟動docker.service
10,
無法啟動docker.service:單元未正確載入:參數無效。
未知原因:docker服務無法正常載入
解除安裝docker,刪除docker.service
重新安裝docker
11,
docker-compose啟動容器時報錯:
/usr/lib/python2.7/site-packages/requests/init.py:80:RequestsDependencyWarning:urllib3(1.22)或chardet(2.2.1)與支援的版本不匹配!RequestsDependencyWarning)
未知原因:pip相應元件版本不支援
pip解除安裝urllib3
pip解除安裝chardet
點安裝請求
12,docker容器重啟故障
強殺docker程序後,重啟docker。docker中的容器無法啟動並報錯
docker restart XXXXXXX來自守護程式的錯誤響應:無法重新啟動容器XXXXXXX:容器「 XXXXXXXXXXXXXXXX」:已存在
原因:舊容器未安全退出
docker-containerd-ctr --address /run/docker/containerd/docker-containerd.sock --namespace c rm <容器hash_id>
碼頭工人開始容器
13,
docker重啟錯誤-重啟命令一直卡住
systemctl重新啟動docker卡住
未知原因:可能是啟動的容器數量過多,或者磁碟IO問題
systemctl啟動docker-cleanup.service
二,許可權問題報錯
14,
嘗試連線到unix:///var/run/docker.sock的Docker守護程式套接字時獲得的許可權被拒絕
檢視/var/run/docker.sock其中使用者組
將使用者重新加入docker組中,usermod -aG docker $ {USER}
15,
在步驟GROUP中使用chown socket:沒有此類過程
原因:docker無法找到Group組資訊,docker組有可能被誤刪除,
groupadd泊塢窗
16,
釋出http:///var/run/docker.sock/v1.XXX / auth:撥打unix /var/run/docker.sock:許可權被拒絕。您是否要連線到沒有TLS的啟用TLS的守護程式?
原因:非Root使用者管理Docker時,許可權不足
usermod -a -G docker使用者
17,
碼頭工人犯錯誤
處理tar檔案時出錯(退出狀態1):意外的EOF
原因:可能是許可權問題引起
chmod + x加一個執行許可權
三,總體和倉庫問題報錯
18,
獲取https://registry-1.docker.io/v2/:撥打tcp:查詢登錄檔-1.docker.io
原因:Docker倉庫無法訪問
修改Docker倉庫源為國內或者自建的倉庫源
修改/etc/docker/daemon.json
19,推出本地可行性報錯
推送指向儲存庫[XXXX]獲取https:// xxx / v1 / _ping:http:伺服器向HTTPS客戶端提供了HTTP響應
原因:docker Registry未採用https服務所致
/etc/docker/daemon.json檔案寫入:
{「不安全的登錄檔」:[「」]}
20,
/ usr / bin / docker-current:來自守護程式的錯誤響應:oci運行時錯誤:container_linux.go:啟動容器程序導致「 exec:」 / bin / bash 」:在$ PATH中找不到可執行檔案」。
原因:Docker本身的固有問題或Docker引擎版本比較低導致
可以升級Docker版本服務
21,精心設計,執行chown -R非常慢
原因:Docker使用寫時複製策略,所以chown命令執行時,將上層副本檔案全部複製到當前層,然後再修改許可權,再寫入檔案系統。
不應該使用chown -R類別大批量修改檔案的命令
22,docker build造就的的時候報錯:
來自syslogd核心的訊息:unregister_netdevice:等待lo釋放。使用次數= 1
原因:docker engine版本過高
docker引擎版本需要和docker內部附加的核心版本匹配
23,
泊塢窗:來自守護程式的錯誤響應:容器:容器未在指定的超時之前啟動。ERRO[0133]從守護程式獲取事件的錯誤:上下文已取消
原因:修改完docker root dir,重啟後,下載多個報錯
重啟docker服務
或者重啟伺服器
四,資源問題報錯
25,
Docker裝置上沒有剩餘空間
原因:空間不足
解決方式:清理空間,刪除刪除使用的容器,額外等資源
碼頭工人系統修剪-a
26,
/ var / lib / docker / containers佔用過大
原因:日誌檔案佔用過大
cat / dev / null> * -json.log
或者
增加dockerd啟動參數,/ etc / docker / daemon.json
{「 log-driver」:「 json-file」,
「 log-opts」:{「 max-size」:「 2G」,「 max-file」:「 10」}
27,
最大虛擬記憶體區域vm.max_map_count [65530]太低,至少增加到[262144]
原因:系統參數預設配置過小
修改/etc/sysctl.conf裡面的vm.max_map_count調大
28,
無法啟動容器程序導致「 process_linux.go:301:
正在運行的exec setns程序進行初始化,導致「退出狀態40 」「:未知。
時
原因:可能是快取問題引起
回聲1> / proc / sys / vm / drop_caches
29,
docker本機啟動多臺容器導致出現後續容器啟動失敗
原因:檢視硬碟空間是否滿,如果不是硬碟空間問題引起
vim /etc/sysctl.conf
新增參數fs.aio-max-nr = 1048576
sysctl -p
30,Docker啟動異常,狀態反覆重啟
Docker日誌容器名,檢視異常日誌
檢視/ var / log /訊息
原因:記憶體跑滿,引起OOM
釋放記憶體後,再啟動容器
五,版本不相容報錯
31,
overlayfs:即使在ext4上,也無法刪除從基本層移至新創建的目錄的檔案
原因:Centos提供的檔案系統XFS和Overlay相容問題導致,
這個問題的修復在核心4.4.6以上
32,
泊塢窗:來自守護程式的錯誤響應:OCI運行時創建失敗:container_linux.go:344:啟動容器程序導致「 process_linux.go:297:從管道獲取最終子程序的pid導致「讀取init-p:連線被同級重置」 」:未知。
原因:Docker版本和作業系統版本不匹配
重新安裝和作業系統核心支援的docker版本
六,網路或埠問題報錯
33,
警告:IPv4轉發已禁用。網路將無法正常工作。
原因:ipv4網路無法轉發
/usr/lib/sysctl.d/00-system.conf
在最後一行新增net.ipv4.ip_forward = 1
重啟網路服務。刪除錯誤的容器,再次創建新容器
34,
使用預設驅動程式創建網路「 xxxxxxx」
原因:docker閘道器衝突
啟動容器,docker-compose啟動容器後,斷網問題
配置docker-compose.yml內給啟動器的容器配置參數network_mode:「 bridge」
35,
找不到滿足以下條件的節點[埠xxxx]
原因:當容器使用埠對映(docker run -p xxxx:xxxx或compose模板中的
ports)之後系統會在主機上創建一個埠,通過NAT來訪問容器的指定埠。如果主機上的埠被容器或系統程序佔用,則會導致埠分配失敗。
清除佔用埠的容器或者程序,或調整容器埠對映的主機機埠避免衝突
36,
來自守護程式的錯誤響應:名稱為xxx的服務端點已經
原因:埠已經被佔用
重啟docker容器
37,
泊塢窗:來自守護程式的錯誤響應:驅動程式無法對端點XXXXX上的外部連線進行程式設計:繫結0.0.0.0:80失敗:埠已分配
原因:容器埠衝突
更換主機機繫結埠
七,Docker安裝報錯
38,安裝docker報要求:container-selinux> = 2.9
原因:container-selinux版本低或者是沒安裝的原因
wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
百勝安裝epel-release
yum makecache
yum install container-selinux
39,安裝docker-compose時報錯
「 ImportError:'模組'物件沒有屬性'check_specifier'」
原因:setuptools版本問題
升級setuptools到30.1.0版本以上版本
pip install --upgrade setuptools
40,安裝docker-compose時報錯
聲明:Python 2.7將於2020年1月1日到期,請升級您的Python,因為在該日期之後將不再維護Python 2.7。pip的未來版本將放棄對Python 2.7的支援。
原因:python2.7提示升級
點安裝-i https://pypi.douban.com/simple docker-compose
八,Docker刪除報錯
41,docker刪除容器報錯
來自守護程式的錯誤響應:驅動程式覆蓋無法刪除根檔案系統xxxxx:remove / var / lib / docker / overlay2 / xxxxx / merged:裝置或資源繁忙
原因:容器掛載資料卷,無法直接刪除
grep docker / proc / * / mountinfo | grep xxxxx
kill程序後
再重新刪除容器
42,狀態宕機的容器刪除報錯
來自守護程式的錯誤響應:驅動程式aufs無法刪除根檔案系統XXXXXXXXXXXXXXXX:aufs:重試後解除安裝錯誤:/ var / lib / docker / aufs / mnt / xxxxxxxx:裝置或資源繁忙
原因:dead狀態容器無法刪除,還在佔用資源
docker rm -fv容器id過幾分鐘後會自動刪除
43,泊塢窗刪除錯誤報錯
來自守護程式的錯誤響應:衝突:無法刪除儲存庫引用「 XXXX」(必須強制)-容器XXXX正在使用其引用的映像YYYY
原因:必然正在被某容器使用
需要刪除相關ID容器後,才能刪除
44,碼頭工人刪除錯誤報錯
來自守護程式的錯誤響應:衝突:無法刪除XXXXXXXXXX(必須強制執行)-在多個儲存庫中引用了影象
原因:重新登入push了更長的其他倉庫
如果不需要此補充,docker rmi -f強刪
45,泊塢窗刪除錯誤報錯
來自守護程式的錯誤響應:衝突:無法刪除XXX(無法強制執行)-影象具有相關的子影象
原因:存在依賴於父本身的子整合
強制刪除或者或者批量刪除容器,再刪除更多
九,其他報錯
46,docker:來自守護程式的錯誤響應:驅動程式無法對端點XXXXXXX上的外部連線進行程式設計:( iptables失敗:iptables --wait -t過濾器-A DOCKER!-i docker0 -o docker0 -p tcp -d 172.17.0.2- -dport 8080 -j接受:iptables:該名稱沒有鏈/目標/匹配。
原因:防火牆問題引起
關閉防火牆,重啟docker
47,
執行docker info出現如下警告
警告:bridge-nf-call-iptables已禁用
警告:bridge-nf-call-ip6tables已禁用
原因:配置問題引起,需要啟用bridge-nf-call-iptables
vi /etc/sysctl.conf
新增以下內容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
48,
docker資料庫相關報錯
使用Docker創建mysql容器閃退
資料庫未初始化,並且未指定密碼選項
docker運行-d -e MYSQL_ROOT_PASSWORD = [密碼] -p 3306:3306 mysql
為避免出現各種奇怪且偶發的問題,運維和開發人員應該有規範的去使用docker容器,最大程度的去避免因為使用不當而引起的故障,參考以下:
Docker使用規範建議
儘量使用最近1-2年的新的穩定的docker版本不要去安裝今年前很老的版本,大量的bug已經被新版本更新解決掉了儘量不要去創造非常大的替代,例如5G10G以上的最好要輕量化,去除多餘的軟體,資料等容器內掛載宿主機配置,使用替代容器需要-v主機的配置檔案,儘量使用ro替換資料要掛載主機機物理硬碟或儲存矩陣上不要直接在容器裡運行,避免容器停機機引起資料丟失應用日誌一定要掛到宿主機上不要直接列印到容器內部,避免只能docker logs方式檢視,避免去vulume目錄裡檢視日誌不要只使用latest標籤標籤要有個管理標準,可以根據標籤查詢對應版本不要使用容器ip,配置裡更不能寫死(至少172.17.0.x)容器重啟後,ip很可能會變儘量不要在單容器內跑多程序容器不是虛擬機器,儘量做到1個容器,1個程序跨環境可持續保持一致絕對是測試,UAT,生產環境,儘量保持同一個副本,不要變更,環境變更只需要變更環境變數參數做區別一定監控docker容器,即使發現問題建議使用prometheus監控容器一定要限制docker容器的資源尤其是CPU,記憶體,硬碟空間,甚至是網路等,避免侵害佔用主機機的硬體資源
相關文章
【前言】至少,以<em>Docker</em>和kubernetes为代表的容器技术日新月异,但我们在容器的使用过程中,也会碰到各种损坏和难题。出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。具有超过十年
2021-05-16 04:00:16
但芯片要想从PPT最终走向市场,并非一个简单的事情,需要经过上千道工序,以及全球产业链的共同协作。例如,荷兰ASML公司的光刻机、中微半导体的刻蚀机、英国ARM的芯片架构、苹果、华为、<em>高通</em>等设计的芯片产品以及
2021-05-16 03:30:36
都知道红米K40是一款性价比非常不错的手机,采用<em>高通</em>骁龙870处理器,售价不高,所以备受消费者的喜爱。而OPPO K9采用<em>高通</em>骁龙768G处理器,在整体的性能方面只能说表现一般,但还是能够足够日常使用,玩游戏还
2021-05-16 03:30:23
这也是我一直不推荐这类产品的原因,除了外观,TWS耳机毕竟是要塞进耳朵的东西,做工差的产品真心不敢用。其实目前二三百元就可以买到很多国产品牌很不错的TWS耳机产品,而且它们不仅仅适配<em>安卓</em>手机,iPhone也可以轻
2021-05-16 03:00:35
反观国产手机,拿小米的顶级旗舰<em>安卓</em>机皇小米11ultra来比较8+256GB,5999元,而这里标准版的iPhone 12的256GB版本6799元,所以说国产厂商跟苹果争蛋糕吃确实还差得远,尤其实在高端市场,加油国产手机厂商们!另外就是最
2021-05-16 03:00:28
最新版Windows 10仍能完美运行网络蚂蚁这样的20年前的软件,这在苹果、<em>安卓</em>生态中是不可思议的 正是由于Windows具有这样强大的软件兼容性,使得它在软件开发者和用户中都建立起了良好的口碑,并让Windows历久
2021-05-16 03:00:18