【解決】Docker Errors


 

【問題一】OCI runtime exec failed......executable file not found in $PATH": unknown

[root@localhost home]# docker exec -it container-test bash
OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown

【分析】

  由於鏡像系統不一,使用錯誤shell解釋器導致,可嘗試以下其中一種方案。

【解決】

docker exec -it container-test /bin/bash

docker exec -it container-test /bin/sh

docker exec -it container-test /bin/csh

 

 

【問題二】http: server gave HTTP response to HTTPS client

$ docker push xxx.xxx.xxx.xxx:5000/java-8
The push refers to repository [xxx.xxx.xxx.xxx/java-8]
Get https://xxx.xxx.xxx.xxx:5000/v2/: http: server gave HTTP response to HTTPS client

【分析】

  Docker自從1.3.X之后docker registry交互默認使用的是HTTPS,但是搭建私有鏡像默認使用的是HTTP服務導致。

【解決】

# 修改啟動文件第12行
# vim /usr/lib/systemd/system/docker.service
# ExecStart=/usr/bin/dockerd --insecure-registry xxx.xxx.xxx.xxx:5000

# 或者增加deamon.json文件配置
$ vim /etc/docker/daemon.json { "insecure-registries":["xxx.xxx.xxx.xxx:5000"] }
# 最后重啟服務
$ systemctl daemon-reload $ systemctl restart docker

 

 

【問題三】getsockopt: connection refused

【分析】

  沒有指定鏡像要上傳的具體地址導致。

【解決】

docker tag <image> <ip:port/image>
docker push ip:port/image 

 

 

【問題四】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

【分析】

  異常卸載關閉導致。

【解決】

$ systemctl daemon-reload
$ sudo service docker restart
$ sudo service docker status (should see active (running))

 

 

【問題五】Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

【分析】

  修改daemon配置文件/etc/docker/daemon.json來使用加速器導致

【解決】

  1、刪除 "registry-mirrors": ["鏡像加速地址"]

  2、把daemon.json 改為 daemon.conf

 

 

【問題六】image jmdiservice:1206 could not be accessed on a registry to record its digest. 

Each node will access jmdiservice:1206 independently, possibly leading to different nodes running different versions of the image.

 

【分析】

   創建service時未指定registry地址(這樣主節點也可以創建成功,這因為主節點本地存在該鏡像),但是同樣會導致子節點獲取的鏡像時也使用本地緩存,也就有可能導致使用的鏡像不一致,或者獲取不到。

【解決】

  指定registry地址即可。

 

 

 

【問題】error pulling image configuration: Get https:// ...... x509: certificate has expired or is not yet valid

進行鏡像拉取時報錯

【分析】

  很多人會被第一句所蒙蔽,按照網上教程進行修改etc/sysconfig/docker,之后發現還是沒有用。

  其實這里重點是最后一句"certificate has expired",這里一般是本地時間不正確導致證書驗證過期,同步時間即可。

【解決】

復制代碼
# 首先查看時間與時區
date -R

# 時區不正確更新命令
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 時間不正確更新命令
ntpdate ntp.api.bz  # 命令安裝: yum install ntp
# 手工方式更新
date -s "2019-12-12 20:12:30"
復制代碼


免責聲明!

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



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