日常问题
目录
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