日常问题

目录

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

 

posted @ 2019-12-03 13:19  柒柒然  阅读(312)  评论(0编辑  收藏  举报