• 日常问题


    目录

    1、安装service命令

    2、没有docker0桥接网络

    3、docker报错docker: Error response from daemon: Unknown runtime specified nvidia.

    4、系统时间怎么修改

    5、docker logs 命令的使用

    6、Linux : Bridge support not available: brctl not found

    7、docker容器删不掉是dend状态      报错:Error response from daemon: driver "devicemapper" failed to remove root file..

    grep docker /proc/*/mountinfo | grep 833aab965845e55c3d7c080d340b7631f2f48a940414504df19249e772cf7a09 | awk -F':' '{print $1}' | awk -F'/' '{print $3}' 可以通过这个查看那个进程占用着服务

    cd /proc/进程号/下

    ps -ef |grep 进程号

    kill -9 进程号杀死之后 就可以正常删除相应的容器了

    参考:https://stackoverflow.com/questions/45709068/docker-driver-devicemapper-failed-to-remove-root-filesystem-after-process-in

    https://www.cnblogs.com/shuai7boy/p/12540104.html

    1、报错:-bash: service: command not found

    怎么安装servise命令

    yum install initscripts -y 

    2、没有 docker0 的桥接网络

    Docker 启动报错: Error starting daemon: Error initializing network controller: list bridge addresses failed: no available network

    参考:http://blog.joylau.cn/2019/04/08/Docker-Start-Error/

    没有 docker0 的桥接网络

    手动添加一个即可

    ip link add name docker0 type bridge
    ip addr add dev docker0 172.17.0.1/16

    3、docker报错docker: Error response from daemon: Unknown runtime specified nvidia.

    原来是nvidia-docker 没有注册:docker: Error response from daemon: Unknown runtime specified nvidiawhile running nvidia docke 接着寻找如何注册: docker-engine-setup

    Systemd drop-in file

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    Daemon configuration file

    sudo tee /etc/docker/daemon.json <<EOF
    {
    "runtimes": {
    "nvidia": {
    "path": "/usr/bin/nvidia-container-runtime",
    "runtimeArgs": []
    }
    }
    }
    EOF
    sudo pkill -SIGHUP dockerd

    再去开启镜像,done。

    参考地址:https://blog.csdn.net/weixin_32820767/article/details/80538510

    4、系统时间怎么修改

    一、查看和修改Linux的时区

    1. 查看当前时区
    命令 : "date -R"

    2. 修改设置Linux服务器时区
    方法 A
    命令 : "tzselect"

    方法 B 仅限于RedHat Linux 和 CentOS
    命令 : "timeconfig"

    方法 C 适用于Debian
    命令 : "dpkg-reconfigure tzdata"

    3. 复制相应的时区文件,替换系统时区文件;或者创建链接文件
    cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime

    例如:在设置中国时区使用亚洲/上海(+8)

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    二、查看和修改Linux的时间

    1. 查看时间和日期
    命令 : "date"

    2.设置时间和日期
    例如:将系统日期设定成2020年4月15日的命令

    命令 : "date -s 15/04/2020"

    将系统时间设定成下午5点55分55秒的命令

    命令 : "date -s 17:55:55"

    3. 将当前时间和日期写入BIOS,避免重启后失效
    命令 : "hwclock -w"

    注:

    date
    不加参数可以直接看到当前日期时间

    cal
    不加参数可以直接看到本月月历

    5、docker logs 查看docker容器日志

    $ docker logs [OPTIONS] CONTAINER

      Options:

            --details        显示更多的信息

        -f, --follow         跟踪实时日志

            --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)

            --tail string    从日志末尾显示多少行日志, 默认是all

        -t, --timestamps     显示时间戳

            --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

     例子:

    查看指定时间后的日志,只显示最后100行:

    docker logs -f -t --since="2020-04-16" --tail=100 CONTAINER_ID

    查看最近30分钟后的日志:

    docker logs --since 30m CONTAINER_ID

    查看某时间之后的日志:

    docker logs -t --since="2020-04-16T13:23:27" CONTAINER_ID

    查看某时间段的日志:

    docker logs -t --since="2020-04-15T13:23:37" --until "2020-04-16T12:22:37" CONTAINER_ID

    查看详细的日志

    docker logs -t CONTAINER_ID

    查看多少行的日志

    docker logs --tail 100 CONTAINER_ID

    6、Linux : Bridge support not available: brctl not found

     yum install bridge-utils

     Error starting daemon: error initializing graphdriver: driver not supported

    错误原因:error initializing graphdriver: driver not supported
    解决办法:在 /etc/docker 目录下创建daemon.json文件,并且加入以下配置

    touch daemon.json
    vi daemon.json
    {
      "storage-driver": "overlay2",
      "storage-opts": [
        "overlay2.override_kernel_check=true"
      ]
    }
    重启 docker resatrt docker


     docker: Error response from daemon: mkdir /data/lib/docker/overlay2/a03981083675069541f6accd19269a5c853484170c8b30ee3a20ffa07b4239ef-init/merged/dev/shm: invalid argument.

    https://www.wencst.com/archives/632

    借鉴这个文档中的方法

    其他解决方法

    以上解决方法是针对docker1.12版本的,因为以前在安装docker 1.12版本时,默认是用的devicemapper的存储引擎,所以迁移过来后直接就可以用了。

    但对于docker 17.05-ce,我怀疑在安装这个docker版本时,默认使用的是overlay的存储引擎,所以才会出现上面的问题。

    方案一:可以在/usr/lib/systemd/system/docker.service中增加如下参数

    方案二:可以在/etc/docker/文件夹下修改daemon.json文件(如果没有则新增,docker会默认读取这个文件的)

    上述两个方案,都是需要重启docker服务的。注意在生产环境中尽量不要使用overlay的存储引擎,如果能用Ubuntu操作系统作为docker宿主机最好,如果必须使用centos系统,则替换为devicemapper存储引擎。

    原因

    这类问题一般是 CentOS/RHEL 红帽系的问题,CentOS 这类红帽系统中,由于不像 Ubuntu 那样有成熟的 Union FS实现(如aufs),所以只能使用 devicemapper,而默认使用的是lvm-loop,也就是用一个稀疏文件来当成一个块设备,给devicemapper用,作为Docker镜像容器文件系统。这是非常不推荐使用的,性能很差不说,不稳定,还有很多 bug,如果没办法换 Ubuntu/Debian 系统,那么最起码应该建立块设备(分区、卷)给 devicemapper 用。

    参考官网文档:https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production

    严格来说 CentOS/RHEL 7 中实际上有一个 Union FS 实现,虽然 CentOS/RHEL 7 的内核是 3.10,不过红帽从 Linux 3.18 backport 回来了 overlay fs 的驱动。但是,红帽自己都在官方的发布声明中说能不要用就不用。

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html

  • 相关阅读:
    图解 SQL 各种连接查询之间的区别
    虚拟机Ubuntu无法上网问题解决过程
    SQL语言(二) java怎样连接操作数据库中的数据
    SQL语言(一)
    编写简单的用户登录界面
    Java
    java第一阶段测试
    Net Core linux docker 部署异常
    .Net Core Cap 异常
    记.Net 创建文件
  • 原文地址:https://www.cnblogs.com/J-yup/p/11976215.html
Copyright © 2020-2023  润新知