操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    【作者】曹如熙,具有超過(guò)十年的互聯(lián)網(wǎng)運(yùn)維及五年以上團(tuán)隊(duì)管理經(jīng)驗(yàn),多年容器云的運(yùn)維,尤其在Docker和kubernetes領(lǐng)域非常精通。


    Docker是一種相對(duì)使用較簡(jiǎn)單的容器,我們可以通過(guò)以下幾種方式獲取信息:

    1、通過(guò)docker run執(zhí)行命令,或許返回信息

    2、通過(guò)docker logs 去獲取日志,做有針對(duì)性的篩選

    3、通過(guò)systemctl status docker查看docker服務(wù)狀態(tài)

    4、通過(guò)journalctl -u docker.service 查看日志

    以下是整理的docker容器類問(wèn)題故障,分為9個(gè)類

    一、啟動(dòng)類故障

    1、

    docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    原因:Docker未正常啟動(dòng)

    解決方式:

    systemctl start docker

    2、

    can't create unix socket /var/run/docker.sock: is a directory

    原因:docker.sock不能創(chuàng)建

    解決方式:

    rm -rf /var/run/docker.sock

    然后重新啟動(dòng)docker

    3、

    Job for docker.service failed. Failed to start Docker Application

    原因:Selinux引起

    解決方式:

    /etc/sysconfig/selinux , 把 selinux 值改為disabled

    重啟docker解決

    4、

    docker: Error response from daemon:

    /var/lib/docker/overlay/XXXXXXXXXXXXXXXXXXXXXXX: no such file or directory.

    原因:docker沒(méi)有指定目錄或文件

    解決方式:

    systemctl stop docker

    rm -rf /var/lib/docker/*

    systemctl start docker

    重啟run鏡像啟動(dòng)容器

    5、

    docker: Error response from daemon: Conflict. The container name "XXX" is already in use by container "XXX". You have to remove (or rename) that container to be able to reuse that name.

    原因:docker name重名

    解決方式:

    改名容器或者刪除重建容器

    6、

    Error: Connection activation failed: No suitable device found for this connection

    原因:網(wǎng)卡配置問(wèn)題

    解決方式:

    重啟網(wǎng)卡

    7、

    系統(tǒng)重啟后docker無(wú)法啟動(dòng)

    報(bào)錯(cuò)為:docker0: iptables: No chain/target/match by that name

    原因:docker服務(wù)iptables問(wèn)題

    解決方式:

    重啟docker服務(wù)system restart docker

    8、

    Error starting daemon: error initializing graphdriver: driver not supported

    使用overlay2存儲(chǔ)驅(qū)動(dòng)啟動(dòng)docker daemon報(bào)錯(cuò)

    原因:daemon缺少配置

    解決方式:

    添加配置:

    /etc/docker/daemon.json

    {"storage-driver": "overlay2",

    "storage-opts": ["overlay2.override_kernel_check=true"]}

    9、

    Failed to start docker.service: Unit docker.service is masked.

    未知原因:docker 被mask

    解決方式:

    systemctl unmask docker.service

    systemctl unmask docker.socket

    systemctl start docker.service

    10、

    Failed to start docker.service: Unit is not loaded properly: Invalid argument.

    未知原因:docker服務(wù)無(wú)法正常load

    解決方式:

    卸載docker, 刪除docker.service

    重新安裝docker

    11、

    docker-compose啟動(dòng)容器時(shí)報(bào)錯(cuò):

    /usr/lib/python2.7/site-packages/requests/init.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning)

    未知原因:pip相應(yīng)組件版本不支持

    解決方式:

    pip uninstall urllib3

    pip uninstall chardet

    pip install requests

    12、

    docker容器重啟故障

    強(qiáng)殺docker進(jìn)程后,重啟docker。docker中的容器無(wú)法啟動(dòng)并報(bào)錯(cuò)

    docker restart XXXXXXX Error response from daemon: Cannot restart container XXXXXXX: container "XXXXXXXXXXXXXXXX": already exists

    原因:舊容器未安全退出

    解決方式:

    docker-containerd-ctr --address /run/docker/containerd/docker-containerd.sock --namespace c rm <容器hash_id>

    docker start 容器

    13、

    docker重啟錯(cuò)誤-重啟命令一直卡住

    systemctl restart docker 卡住

    未知原因:可能是啟動(dòng)的容器數(shù)量過(guò)多,或者磁盤IO問(wèn)題

    解決方式:

    systemctl start docker-cleanup.service

    systemctl start docker

    二、權(quán)限問(wèn)題報(bào)錯(cuò)

    14、

    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    解決方式:

    查看 /var/run/docker.sock所在用戶組

    將用戶重新加入docker組中,usermod -aG docker ${USER}

    15、

    chown socket at step GROUP: No such process

    原因:docker無(wú)法找到Group組信息,docker組有可能被誤刪除,

    解決方式:

    groupadd docker

    16、

    Post http:///var/run/docker.sock/v1.XXX /auth: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

    原因:非Root用戶管理Docker時(shí),權(quán)限不足

    解決方式:

    groupadd docker

    usermod -a -G docker user

    17、

    docker commit鏡像時(shí)報(bào)錯(cuò)

    Error processing tar file(exit status 1): unexpected EOF

    原因:可能是權(quán)限問(wèn)題引起

    解決方式:

    chmod +x 加一個(gè)執(zhí)行權(quán)限

    三、鏡像和倉(cāng)庫(kù)問(wèn)題報(bào)錯(cuò)

    18、

    Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io

    原因:Docker倉(cāng)庫(kù)無(wú)法訪問(wèn)

    解決方式:

    修改Docker倉(cāng)庫(kù)源為國(guó)內(nèi)或者自建的倉(cāng)庫(kù)源

    修改/etc/docker/daemon.json

    19、

    推送本地鏡像報(bào)錯(cuò)

    The push refers to a repository [XXXX] Get https://xxx/v1/_ping: http: server gave HTTP response to HTTPS client

    原因:docker registry未采用https服務(wù)所致

    解決方式:

    /etc/docker/daemon.json 文件寫入:

    { "insecure-registries":[""] }

    20、

    /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go: starting container process caused "exec: \"/bin/bash\": executable file not found in $PATH".

    原因:Docker鏡像自身問(wèn)題或者Docker引擎版本比較低導(dǎo)致

    解決方式:

    可以升級(jí)Docker版本服務(wù)

    21、

    構(gòu)建鏡像,執(zhí)行chown -R非常慢

    原因:Docker使用寫時(shí)復(fù)制策略,所以chown命令執(zhí)行時(shí),會(huì)將上層鏡像文件全部復(fù)制到當(dāng)前層,然后再修改權(quán)限,再寫入文件系統(tǒng)。

    解決方式:

    不應(yīng)該使用chown -R 這類大批量修改文件的命令

    22、

    docker build構(gòu)建鏡像的時(shí)候報(bào)錯(cuò):

    Message from syslogd kernel:unregister_netdevice: waiting for lo to become free. Usage count=1

    原因:docker engine版本過(guò)高

    解決方式:

    docker engine版本需要和docker內(nèi)部鏡像的內(nèi)核版本匹配

    23、

    docker: Error response from daemon: containerd: container did not start before the specified time-out.ERRO[0133] error getting events from daemon: context canceled

    原因:修改完docker root dir,重啟后,下載鏡像報(bào)錯(cuò)

    解決方式:

    重啟docker服務(wù)

    或者重啟服務(wù)器

    四、資源問(wèn)題報(bào)錯(cuò)

    24、

    Docker no space left on device

    原因:空間不足

    解決方式:清理空間,刪除未被使用的容器,鏡像等資源

    docker system prune -a

    25、

    /var/lib/docker/containers 占用過(guò)大

    原因:日志文件占用過(guò)大

    解決方式:

    cat /dev/null > *-json.log

    或者

    增加dockerd啟動(dòng)參數(shù),/etc/docker/daemon.json

    {"log-driver":"json-file",

    "log-opts": {"max-size":"2G", "max-file":"10"}

    26、

    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    原因:系統(tǒng)參數(shù)默認(rèn)配置過(guò)小

    解決方式:

    修改/etc/sysctl.conf里面的vm.max_map_count 調(diào)大

    27、

    Got starting container process caused "process_linux.go:301:

    running exec setns process for init caused \"exit status 40\"": unknown.

    from time to time

    原因:可能是cache問(wèn)題引起

    解決方式:

    echo 1 > /proc/sys/vm/drop_caches

    28、

    docker本機(jī)啟動(dòng)多臺(tái)容器導(dǎo)致出現(xiàn)后續(xù)容器啟動(dòng)失敗

    原因:查看硬盤空間是否滿,如果不是硬盤空間問(wèn)題引起

    解決方式:

    vim /etc/sysctl.conf

    添加參數(shù) fs.aio-max-nr=1048576

    sysctl -p

    29、

    Docker啟動(dòng)異常,狀態(tài)反復(fù)restarting

    Docker logs 容器名,查看異常日志

    查看/var/log/messages

    原因:內(nèi)存跑滿,引起OOM

    解決方式:

    釋放內(nèi)存后,再啟動(dòng)容器

    五、版本不兼容報(bào)錯(cuò)

    30、

    overlayfs: Can't delete file moved from base layer to newly created dir even on ext4

    原因:Centos 提供的文件系統(tǒng) XFS 和 Overlay 兼容問(wèn)題導(dǎo)致,

    解決方式:

    這個(gè)問(wèn)題的修復(fù)在內(nèi)核 4.4.6以上

    31、

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:297: getting the final child's pid from pipe caused \"read init-p: connection reset by peer\"": unknown.

    原因:Docker版本和操作系統(tǒng)版本不匹配

    解決方式:

    重新安裝和操作系統(tǒng)內(nèi)核支持的docker 版本

    六、網(wǎng)絡(luò)或端口問(wèn)題報(bào)錯(cuò)

    32、

    WARNING: IPv4 forwarding is disabled. Networking will not work.

    原因:ipv4網(wǎng)絡(luò)無(wú)法轉(zhuǎn)發(fā)

    解決方式:

    /usr/lib/sysctl.d/00-system.conf

    在最后一行添加net.ipv4.ip_forward=1

    重啟network服務(wù)。刪除錯(cuò)誤的容器,再次創(chuàng)建新容器

    33、

    Creating network "xxxxxxx" with the default driver

    原因:docker網(wǎng)關(guān)沖突

    啟動(dòng)容器、docker-compose啟動(dòng)容器后,斷網(wǎng)問(wèn)題

    解決方式:

    配置 docker-compose.yml內(nèi)給啟動(dòng)的容器配置參數(shù)network_mode: "bridge"

    34、

    Unable to find a node that satisfies the following conditions [port xxxx]

    原因:當(dāng)容器使用端口映射(docker run -p xxxx:xxxx或 compose模板中的

    ports)之后 系統(tǒng)會(huì)在宿主機(jī)上創(chuàng)建一個(gè)port,通過(guò)NAT來(lái)訪問(wèn)容器的指定port。如果宿主機(jī)上的端口被容器或者系統(tǒng)進(jìn)程占用,就會(huì)導(dǎo)致端口分配失敗。

    解決方式:

    清除占用端口的容器或者進(jìn)程,或調(diào)整容器端口映射的宿主機(jī)端口避免沖突

    35、

    Error response from daemon: service endpoint with name xxx already

    原因:端口已經(jīng)被占用

    解決方式:

    重啟docker容器

    36、

    docker: Error response from daemon: driver failed programming external connectivity on endpoint XXXXX: Bind for 0.0.0.0:80 failed: port is already allocated

    原因:容器端口沖突

    解決方式:

    更換宿主機(jī)綁定端口

    七、Docker安裝報(bào)錯(cuò)

    37、

    安裝docker報(bào)Requires: container-selinux >=2.9

    原因:container-selinux版本低或者是沒(méi)安裝的原因

    解決方式:

    wget -O /etc/yum.repos.d/CentOS-Base.repo

    http://mirrors.aliyun.com/repo/Centos-7.repo

    yum install epel-release

    yum makecache

    yum install container-selinux

    38、

    安裝docker-compose時(shí)報(bào)錯(cuò)

    “ImportError: 'module' object has no attribute 'check_specifier'”

    原因:setuptools版本問(wèn)題

    解決方式:

    升級(jí)setuptools到30.1.0版本以上版本

    pip install --upgrade setuptools

    39、

    安裝docker-compose時(shí)報(bào)錯(cuò)

    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.

    原因:python2.7提示升級(jí)

    解決方式:

    pip install -i https://pypi.douban.com/simple docker-compose

    八、Docker刪除報(bào)錯(cuò)

    40、

    docker刪除容器報(bào)錯(cuò)

    Error response from daemon:Driver overlay failed to remove root filesystem xxxxx: remove/var/lib/docker/overlay2/xxxxx/merged: device or resource busy

    原因:容器掛載數(shù)據(jù)卷,無(wú)法直接刪除

    解決方式:

    grep docker /proc/*/mountinfo | grep xxxxx

    kill進(jìn)程后

    再重新刪除容器

    41、

    狀態(tài)dead的容器刪除報(bào)錯(cuò)

    Error response from daemon: Driver aufs failed to remove root filesystem XXXXXXXXXXXXXXXX: aufs: unmount error after retries: /var/lib/docker/aufs/mnt/xxxxxxxx: device or resource busy

    原因:dead狀態(tài)容器無(wú)法刪除,還在占用資源

    解決方式:

    docker rm -fv 容器id 過(guò)幾分鐘后會(huì)自動(dòng)刪除

    42、

    docker刪除鏡像報(bào)錯(cuò)

    Error response from daemon: conflict: unable to remove repository reference "XXXX" (must force) - container XXXX is using its referenced image YYYY

    原因:鏡像正在被某容器使用

    解決方式:

    需要?jiǎng)h除相關(guān)ID容器后,才能刪除鏡像

    43、

    docker刪除鏡像報(bào)錯(cuò)

    Error response from daemon: conflict: unable to delete XXXXXXXXXX (must be forced) - image is referenced in multiple repositories

    原因:鏡像login push 了遠(yuǎn)端其他倉(cāng)庫(kù)

    解決方式:

    如果不需要此鏡像, docker rmi -f 強(qiáng)刪

    44、

    docker刪除鏡像報(bào)錯(cuò)

    Error response from daemon: conflict: unable to delete XXX (cannot be forced) - image has dependent child images

    原因:存在依賴于父鏡像的子鏡像

    解決方式:

    強(qiáng)制刪除鏡像或者批量刪除容器,再刪除鏡像

    九、其他報(bào)錯(cuò)

    45、

    docker: Error response from daemon: driver failed programming external connectivity on end-point XXXXXXX: (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 8080 -j ACCEPT: iptables: No chain/target/match by that name.

    原因:防火墻問(wèn)題引起

    解決方式:

    關(guān)閉防火墻,重啟docker

    46、

    執(zhí)行docker info出現(xiàn)如下警告

    WARNING: bridge-nf-call-iptables is disabled

    WARNING: bridge-nf-call-ip6tables is disabled

    原因:配置問(wèn)題引起,需要啟用bridge-nf-call-iptables

    解決方式:

    vi /etc/sysctl.conf

    添加以下內(nèi)容

    net.bridge.bridge-nf-call-ip6tables=1

    net.bridge.bridge-nf-call-iptables=1

    net.bridge.bridge-nf-call-arptables=1

    47、

    docker數(shù)據(jù)庫(kù)相關(guān)報(bào)錯(cuò)

    使用Docker創(chuàng)建mysql容器閃退

    Database is uninitialized and password option is not specified

    解決方式:

    docker run -d -e MYSQL_ROOT_PASSWORD=[密碼] -p 3306:3306 mysql鏡像

    為避免出現(xiàn)各種奇怪且偶發(fā)的問(wèn)題,運(yùn)維和開(kāi)發(fā)人員應(yīng)該有規(guī)范的去使用docker容器,最大程度的去避免因?yàn)槭褂貌划?dāng)而引起的故障,參考以下:

    Docker使用規(guī)范建議

    1.盡量使用最近1-2年的新的穩(wěn)定的docker版本

    不要去安裝今年前很老的版本,大量的bug已經(jīng)被新版本更新解決掉了

    2.盡量不要去創(chuàng)建非常大的鏡像,比如5G10G以上的

    鏡像要盡量輕量化,去除不必要的軟件,數(shù)據(jù)等

    3.容器內(nèi)掛載宿主機(jī)配置,使用只讀

    容器需要-v 宿主機(jī)的配置文件,盡量使用ro只讀

    4.數(shù)據(jù)要掛載宿主機(jī)物理硬盤或存儲(chǔ)節(jié)點(diǎn)上

    不要直接在容器里run,避免容器宕機(jī)引起數(shù)據(jù)丟失

    5.應(yīng)用日志一定要掛到宿主機(jī)上

    不要直接打印到容器內(nèi),避免只能docker logs方式查看,避免去vulume目錄里查看日志

    6.不要只使用latest標(biāo)簽

    Tag要有個(gè)管理標(biāo)準(zhǔn),可以根據(jù)tag查找對(duì)應(yīng)版本

    7.不要使用容器ip,配置里更不能寫死(默認(rèn)172.17.0.x)

    容器重啟后,ip很可能會(huì)變

    8.盡量不要在單容器內(nèi)跑多進(jìn)程

    容器不是虛擬機(jī),盡量做到1個(gè)容器,1個(gè)進(jìn)程

    9.跨環(huán)境鏡像保持一致

    不論是測(cè)試,UAT,生產(chǎn)環(huán)境,盡量保持同一個(gè)鏡像,不要變更,環(huán)境變更只需要變更環(huán)境變量參數(shù)做區(qū)分

    10.一定監(jiān)控docker容器,即使發(fā)現(xiàn)問(wèn)題

    建議使用prometheus監(jiān)控容器

    11.一定要限制docker容器的資源

    尤其是CPU,內(nèi)存,硬盤空間,甚至是網(wǎng)絡(luò)等,避免侵占宿主機(jī)的硬件資源

    本文針對(duì)Docker容器部署、維護(hù)過(guò)程中,產(chǎn)生的問(wèn)題和故障,做出有針對(duì)性的說(shuō)明和解決方案,希望可以幫助到大家去快速定位和解決類似問(wèn)題故障。


    Docker是一種相對(duì)使用較簡(jiǎn)單的容器,我們可以通過(guò)以下幾種方式獲取信息:

    1、通過(guò)docker run執(zhí)行命令,或許返回信息

    2、通過(guò)docker logs 去獲取日志,做有針對(duì)性的篩選

    3、通過(guò)systemctl status docker查看docker服務(wù)狀態(tài)

    4、通過(guò)journalctl -u docker.service 查看日志

    以下是整理的docker容器類問(wèn)題故障,分為9個(gè)類


    一、啟動(dòng)類故障

    1、docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    原因:Docker未正常啟動(dòng)

    解決方式:systemctl start docker


    2、can't create unix socket /var/run/docker.sock: is a directory

    原因:docker.sock不能創(chuàng)建

    解決方式:rm -rf /var/run/docker.sock

    然后重新啟動(dòng)docker


    3、Job for docker.service failed. Failed to start Docker Application

    原因:Selinux引起

    解決方式:/etc/sysconfig/selinux , 把 selinux 值改為disabled

    重啟docker解決


    4、docker: Error response from daemon:

    /var/lib/docker/overlay/XXXXXXXXXXXXXXXXXXXXXXX: no such file or directory.

    原因:docker沒(méi)有指定目錄或文件

    解決方式:

    systemctl stop docker

    rm -rf /var/lib/docker/*

    systemctl start docker

    重啟run鏡像啟動(dòng)容器


    5、docker: Error response from daemon: Conflict. The container name "XXX" is already in use by container "XXX". You have to remove (or rename) that container to be able to reuse that name.

    原因:docker name重名

    解決方式:改名容器或者刪除重建容器


    6、Error: Connection activation failed: No suitable device found for this connection

    原因:網(wǎng)卡配置問(wèn)題

    解決方式:重啟網(wǎng)卡


    7、系統(tǒng)重啟后docker無(wú)法啟動(dòng)

    報(bào)錯(cuò)為:docker0: iptables: No chain/target/match by that name

    原因:docker服務(wù)iptables問(wèn)題

    解決方式:重啟docker服務(wù)system restart docker


    8、Error starting daemon: error initializing graphdriver: driver not supported

    使用overlay2存儲(chǔ)驅(qū)動(dòng)啟動(dòng)docker daemon報(bào)錯(cuò)

    原因:daemon缺少配置

    解決方式:

    添加配置:

    /etc/docker/daemon.json

    {"storage-driver": "overlay2",

    "storage-opts": ["overlay2.override_kernel_check=true"]}


    9、Failed to start docker.service: Unit docker.service is masked.

    未知原因:docker 被mask

    解決方式:

    systemctl unmask docker.service

    systemctl unmask docker.socket

    systemctl start docker.service


    10、Failed to start docker.service: Unit is not loaded properly: Invalid argument.

    未知原因:docker服務(wù)無(wú)法正常load

    解決方式:卸載docker, 刪除docker.service

    重新安裝docker


    11、docker-compose啟動(dòng)容器時(shí)報(bào)錯(cuò):

    /usr/lib/python2.7/site-packages/requests/init.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version! RequestsDependencyWarning)

    未知原因:pip相應(yīng)組件版本不支持

    解決方式:

    pip uninstall urllib3

    pip uninstall chardet

    pip install requests


    12、docker容器重啟故障

    強(qiáng)殺docker進(jìn)程后,重啟docker。docker中的容器無(wú)法啟動(dòng)并報(bào)錯(cuò)

    docker restart XXXXXXX Error response from daemon: Cannot restart container XXXXXXX: container "XXXXXXXXXXXXXXXX": already exists

    原因:舊容器未安全退出

    解決方式:docker-containerd-ctr --address /run/docker/containerd/docker-containerd.sock --namespace c rm <容器hash_id>

    docker start 容器


    13、docker重啟錯(cuò)誤-重啟命令一直卡住

    systemctl restart docker 卡住

    未知原因:可能是啟動(dòng)的容器數(shù)量過(guò)多,或者磁盤IO問(wèn)題

    解決方式:

    systemctl start docker-cleanup.service

    systemctl start docker


    二、權(quán)限問(wèn)題報(bào)錯(cuò)

    14、Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    解決方式:

    查看 /var/run/docker.sock所在用戶組

    將用戶重新加入docker組中,usermod -aG docker ${USER}


    15、chown socket at step GROUP: No such process

    原因:docker無(wú)法找到Group組信息,docker組有可能被誤刪除,

    解決方式:groupadd docker


    16、Post http:///var/run/docker.sock/v1.XXX /auth: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

    原因:非Root用戶管理Docker時(shí),權(quán)限不足

    解決方式:

    groupadd docker

    usermod -a -G docker user


    17、docker commit鏡像時(shí)報(bào)錯(cuò)

    Error processing tar file(exit status 1): unexpected EOF

    原因:可能是權(quán)限問(wèn)題引起

    解決方式:chmod +x 加一個(gè)執(zhí)行權(quán)限


    三、鏡像和倉(cāng)庫(kù)問(wèn)題報(bào)錯(cuò)

    18、Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io

    原因:Docker倉(cāng)庫(kù)無(wú)法訪問(wèn)

    解決方式:

    修改Docker倉(cāng)庫(kù)源為國(guó)內(nèi)或者自建的倉(cāng)庫(kù)源

    修改/etc/docker/daemon.json


    19、推送本地鏡像報(bào)錯(cuò)

    The push refers to a repository [XXXX] Get https://xxx/v1/_ping: http: server gave HTTP response to HTTPS client

    原因:docker registry未采用https服務(wù)所致

    解決方式:

    /etc/docker/daemon.json 文件寫入:

    { "insecure-registries":[""] }


    20、/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go: starting container process caused "exec: \"/bin/bash\": executable file not found in $PATH".

    原因:Docker鏡像自身問(wèn)題或者Docker引擎版本比較低導(dǎo)致

    解決方式:可以升級(jí)Docker版本服務(wù)


    21、構(gòu)建鏡像,執(zhí)行chown -R非常慢

    原因:Docker使用寫時(shí)復(fù)制策略,所以chown命令執(zhí)行時(shí),會(huì)將上層鏡像文件全部復(fù)制到當(dāng)前層,然后再修改權(quán)限,再寫入文件系統(tǒng)。

    解決方式:不應(yīng)該使用chown -R 這類大批量修改文件的命令


    22、docker build構(gòu)建鏡像的時(shí)候報(bào)錯(cuò):

    Message from syslogd kernel:unregister_netdevice: waiting for lo to become free. Usage count=1

    原因:docker engine版本過(guò)高

    解決方式:docker engine版本需要和docker內(nèi)部鏡像的內(nèi)核版本匹配


    23、docker: Error response from daemon: containerd: container did not start before the specified time-out.ERRO[0133] error getting events from daemon: context canceled

    原因:修改完docker root dir,重啟后,下載鏡像報(bào)錯(cuò)

    解決方式:重啟docker服務(wù)或者重啟服務(wù)器


    四、資源問(wèn)題報(bào)錯(cuò)

    24、Docker no space left on device

    原因:空間不足

    解決方式:清理空間,刪除未被使用的容器,鏡像等資源

    docker system prune -a


    25、/var/lib/docker/containers 占用過(guò)大

    原因:日志文件占用過(guò)大

    解決方式:

    cat /dev/null > *-json.log

    或者

    增加dockerd啟動(dòng)參數(shù),/etc/docker/daemon.json

    {"log-driver":"json-file",

    "log-opts": {"max-size":"2G", "max-file":"10"}


    26、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    原因:系統(tǒng)參數(shù)默認(rèn)配置過(guò)小

    解決方式:修改/etc/sysctl.conf里面的vm.max_map_count 調(diào)大


    27、Got starting container process caused "process_linux.go:301:

    running exec setns process for init caused \"exit status 40\"": unknown.

    from time to time

    原因:可能是cache問(wèn)題引起

    解決方式:echo 1 > /proc/sys/vm/drop_caches


    28、docker本機(jī)啟動(dòng)多臺(tái)容器導(dǎo)致出現(xiàn)后續(xù)容器啟動(dòng)失敗

    原因:查看硬盤空間是否滿,如果不是硬盤空間問(wèn)題引起

    解決方式:

    vim /etc/sysctl.conf

    添加參數(shù) fs.aio-max-nr=1048576

    sysctl -p


    29、Docker啟動(dòng)異常,狀態(tài)反復(fù)restarting

    Docker logs 容器名,查看異常日志

    查看/var/log/messages

    原因:內(nèi)存跑滿,引起OOM

    解決方式:釋放內(nèi)存后,再啟動(dòng)容器


    五、版本不兼容報(bào)錯(cuò)

    30、overlayfs: Can't delete file moved from base layer to newly created dir even on ext4

    原因:Centos 提供的文件系統(tǒng) XFS 和 Overlay 兼容問(wèn)題導(dǎo)致,

    解決方式:這個(gè)問(wèn)題的修復(fù)在內(nèi)核 4.4.6以上


    31、docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:297: getting the final child's pid from pipe caused \"read init-p: connection reset by peer\"": unknown.

    原因:Docker版本和操作系統(tǒng)版本不匹配

    解決方式:重新安裝和操作系統(tǒng)內(nèi)核支持的docker 版本


    六、網(wǎng)絡(luò)或端口問(wèn)題報(bào)錯(cuò)

    32、WARNING: IPv4 forwarding is disabled. Networking will not work.

    原因:ipv4網(wǎng)絡(luò)無(wú)法轉(zhuǎn)發(fā)

    解決方式:

    /usr/lib/sysctl.d/00-system.conf

    在最后一行添加net.ipv4.ip_forward=1

    重啟network服務(wù)。刪除錯(cuò)誤的容器,再次創(chuàng)建新容器


    33、Creating network "xxxxxxx" with the default driver

    原因:docker網(wǎng)關(guān)沖突

    啟動(dòng)容器、docker-compose啟動(dòng)容器后,斷網(wǎng)問(wèn)題

    解決方式:配置 docker-compose.yml內(nèi)給啟動(dòng)的容器配置參數(shù)network_mode: "bridge"


    34、Unable to find a node that satisfies the following conditions [port xxxx]

    原因:當(dāng)容器使用端口映射(docker run -p xxxx:xxxx或 compose模板中的

    ports)之后 系統(tǒng)會(huì)在宿主機(jī)上創(chuàng)建一個(gè)port,通過(guò)NAT來(lái)訪問(wèn)容器的指定port。如果宿主機(jī)上的端口被容器或者系統(tǒng)進(jìn)程占用,就會(huì)導(dǎo)致端口分配失敗。

    解決方式:清除占用端口的容器或者進(jìn)程,或調(diào)整容器端口映射的宿主機(jī)端口避免沖突


    35、Error response from daemon: service endpoint with name xxx already

    原因:端口已經(jīng)被占用

    解決方式:重啟docker容器


    36、docker: Error response from daemon: driver failed programming external connectivity on endpoint XXXXX: Bind for 0.0.0.0:80 failed: port is already allocated

    原因:容器端口沖突

    解決方式:更換宿主機(jī)綁定端口


    七、Docker安裝報(bào)錯(cuò)

    37、安裝docker報(bào)Requires: container-selinux >=2.9

    原因:container-selinux版本低或者是沒(méi)安裝的原因

    解決方式:

    wget -O /etc/yum.repos.d/CentOS-Base.repo

    http://mirrors.aliyun.com/repo/Centos-7.repo

    yum install epel-release

    yum makecache

    yum install container-selinux


    38、安裝docker-compose時(shí)報(bào)錯(cuò)

    “ImportError: 'module' object has no attribute 'check_specifier'”

    原因:setuptools版本問(wèn)題

    解決方式:

    升級(jí)setuptools到30.1.0版本以上版本

    pip install --upgrade setuptools


    39、安裝docker-compose時(shí)報(bào)錯(cuò)

    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.

    原因:python2.7提示升級(jí)

    解決方式:pip install -i https://pypi.douban.com/simple docker-compose


    八、Docker刪除報(bào)錯(cuò)

    40、docker刪除容器報(bào)錯(cuò)

    Error response from daemon:Driver overlay failed to remove root filesystem xxxxx: remove/var/lib/docker/overlay2/xxxxx/merged: device or resource busy

    原因:容器掛載數(shù)據(jù)卷,無(wú)法直接刪除

    解決方式:

    grep docker /proc/*/mountinfo | grep xxxxx

    kill進(jìn)程后

    再重新刪除容器


    41、狀態(tài)dead的容器刪除報(bào)錯(cuò)

    Error response from daemon: Driver aufs failed to remove root filesystem XXXXXXXXXXXXXXXX: aufs: unmount error after retries: /var/lib/docker/aufs/mnt/xxxxxxxx: device or resource busy

    原因:dead狀態(tài)容器無(wú)法刪除,還在占用資源

    解決方式:docker rm -fv 容器id 過(guò)幾分鐘后會(huì)自動(dòng)刪除


    42、docker刪除鏡像報(bào)錯(cuò)

    Error response from daemon: conflict: unable to remove repository reference "XXXX" (must force) - container XXXX is using its referenced image YYYY

    原因:鏡像正在被某容器使用

    解決方式:需要?jiǎng)h除相關(guān)ID容器后,才能刪除鏡像


    43、docker刪除鏡像報(bào)錯(cuò)

    Error response from daemon: conflict: unable to delete XXXXXXXXXX (must be forced) - image is referenced in multiple repositories

    原因:鏡像login push 了遠(yuǎn)端其他倉(cāng)庫(kù)

    解決方式:如果不需要此鏡像, docker rmi -f 強(qiáng)刪


    44、docker刪除鏡像報(bào)錯(cuò)

    Error response from daemon: conflict: unable to delete XXX (cannot be forced) - image has dependent child images

    原因:存在依賴于父鏡像的子鏡像

    解決方式:強(qiáng)制刪除鏡像或者批量刪除容器,再刪除鏡像


    九、其他報(bào)錯(cuò)

    45、docker: Error response from daemon: driver failed programming external connectivity on end-point XXXXXXX: (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 8080 -j ACCEPT: iptables: No chain/target/match by that name.

    原因:防火墻問(wèn)題引起

    解決方式:關(guān)閉防火墻,重啟docker


    46、執(zhí)行docker info出現(xiàn)如下警告

    WARNING: bridge-nf-call-iptables is disabled

    WARNING: bridge-nf-call-ip6tables is disabled

    原因:配置問(wèn)題引起,需要啟用bridge-nf-call-iptables

    解決方式:

    vi /etc/sysctl.conf

    添加以下內(nèi)容

    net.bridge.bridge-nf-call-ip6tables=1

    net.bridge.bridge-nf-call-iptables=1

    net.bridge.bridge-nf-call-arptables=1


    47、docker數(shù)據(jù)庫(kù)相關(guān)報(bào)錯(cuò)

    使用Docker創(chuàng)建mysql容器閃退

    Database is uninitialized and password option is not specified

    解決方式:docker run -d -e MYSQL_ROOT_PASSWORD=[密碼] -p 3306:3306 mysql鏡像


    為避免出現(xiàn)各種奇怪且偶發(fā)的問(wèn)題,運(yùn)維和開(kāi)發(fā)人員應(yīng)該有規(guī)范的去使用docker容器,最大程度的去避免因?yàn)槭褂貌划?dāng)而引起的故障,參考以下:

    Docker使用規(guī)范建議

    1.盡量使用最近1-2年的新的穩(wěn)定的docker版本

    不要去安裝今年前很老的版本,大量的bug已經(jīng)被新版本更新解決掉了

    2.盡量不要去創(chuàng)建非常大的鏡像,比如5G10G以上的

    鏡像要盡量輕量化,去除不必要的軟件,數(shù)據(jù)等

    3.容器內(nèi)掛載宿主機(jī)配置,使用只讀

    容器需要-v 宿主機(jī)的配置文件,盡量使用ro只讀

    4.數(shù)據(jù)要掛載宿主機(jī)物理硬盤或存儲(chǔ)節(jié)點(diǎn)上

    不要直接在容器里run,避免容器宕機(jī)引起數(shù)據(jù)丟失

    5.應(yīng)用日志一定要掛到宿主機(jī)上

    不要直接打印到容器內(nèi),避免只能docker logs方式查看,避免去vulume目錄里查看日志

    6.不要只使用latest標(biāo)簽

    Tag要有個(gè)管理標(biāo)準(zhǔn),可以根據(jù)tag查找對(duì)應(yīng)版本

    7.不要使用容器ip,配置里更不能寫死(默認(rèn)172.17.0.x)

    容器重啟后,ip很可能會(huì)變

    8.盡量不要在單容器內(nèi)跑多進(jìn)程

    容器不是虛擬機(jī),盡量做到1個(gè)容器,1個(gè)進(jìn)程

    9.跨環(huán)境鏡像保持一致

    不論是測(cè)試,UAT,生產(chǎn)環(huán)境,盡量保持同一個(gè)鏡像,不要變更,環(huán)境變更只需要變更環(huán)境變量參數(shù)做區(qū)分

    10.一定監(jiān)控docker容器,即使發(fā)現(xiàn)問(wèn)題

    建議使用prometheus監(jiān)控容器

    11.一定要限制docker容器的資源

    尤其是CPU,內(nèi)存,硬盤空間,甚至是網(wǎng)絡(luò)等,避免侵占宿主機(jī)的硬件資源

    作者:曹如熙

    來(lái)源:twt社區(qū)

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有