1. Got starting container process caused "process_linux.go:301: running exec setns process for init caused \"exit status 40\"": unknown. from time to time
解决问题: https://github.com/opencontainers/runc/issues/1740
most of the memories are consumed by page cache, echo 1 > /proc/sys/vm/drop_caches
2. Rpmdb checksum is invalid: dCDPT(pkg checksums):
描述:
rpm数据库损坏需要重建。需要在 yum install … 前使用 rpm –rebuilddb重建数据库
解决方法:
RUN rpm --rebuilddb && yum install -y ...
3. Docker宿主机agetty进程cpu占用率100%
描述:
使用"docker run"运行容器时使用了 /sbin/init和--privileged参数
解决方法:
在宿主机以及Container中运行下述命令
systemctl stop [email protected]
systemctl mask [email protected]
4. Failed to get D-Bus connection: Operation not permitted
描述:
centos 7.2容器内使用systemctl命令
解决方法:
docker run --privileged -d centos:7.2.1511 /usr/sbin/init
5. 解决ssh登录慢慢的问题
使用了dns反查,当ssh某个IP时,通过DNS反查相对应的域名,如果DNS中没有这个IP的域名解析,等待超时
解决方法:/etc/ssh/sshd_config
设置 UseDNS no
6. /etc/hosts, /etc/resolv.conf和/etc/hostname都是易失
问题描述:
/etc/hosts, /etc/resolv.conf和/etc/hostname,容器中的这三个文件不存在于镜像,而是存在于/var/lib/docker/containers/<container_id>,在启动容器的时候,通过mount的形式将这些文件挂载到容器内部。因此,如果在容器中修改这些文件的话,修改部分不会存在于容器的top layer,而是直接写入这三个物理文件中。
解决方法:
通过docker run命令的--add-host参数来为容器添加host与ip的映射关系
通过echo -e "aaa.com 10.10.10.10\n" >> /etc/hosts
7. docker容器centos 7.2镜像支持中文
sudo localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
export LC_ALL="zh_CN.UTF-8"
8. docker容器时间为UTC时间,与宿主机相差8小时
cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
9. overlayfs: Can't delete file moved from base layer to newly created dir even on ext4
Centos 提供的新文件系统 XFS 和 Overlay 兼容问题导致, 这个问题的修复在内核 4.4.6以上( https://github.com/moby/moby/issues/9572)
Fixed in linux 4.5 going to be backported into next 4.4.y and other stable brances. Simple test sequence in commit message (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?)id=45d11738969633ec07ca35d75d486bf2d8918df6
解决方法:
1. 停止各个中间服务,
stop容器(docker stop $(docker ps -qa))
systemctl stop docker
备份数据/srv lsof | grep srv2. 查看磁盘分区fdisk -l , mount | grep srv
umount /dev/mapper/centos-srv
格式化: mkfs.xfs -fn ftype=1 /dev/mapper/centos-srv
查看ftype是否设置为1: xfs-info /srv |grep ftypemount /dev/mapper/centos-srv /srv/
3. 恢复数据/srv
systemctl start docker
docker start $(docker ps -qa)
10. /var/lib/docker/overlay2 占用很大,占用几百G空间
描述:这个问题应该是容器内应用产生的数据或者日志造成
解决方法:
进入/var/lib/docker/overlay2,du -h --max-depth=1查看哪个容器占用的比较大,我擦一看占用450G,
一查看发现日志占用的多,这个啥吗应用这么刷日志,是调试遗留的一个容器,一直在刷错误日志,docker kill and docker rm,一下释放了450多G
11. Error starting daemon: error initializing graphdriver: driver not supported
描述: 使用overlay2存储驱动启动docker daemon报错
解决方法: 添加配置如下:
cat /etc/docker/daemon.json
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
或者添加启动参数:
/usr/bin/dockerd --storage-driver=overlay2 --storage-opt overlay2.override_kernel_check=1
11. 修改docker容器最大文件数(open files)
直接修改docker container的 /etc/security/limits.conf无效
宿主机上执行如下操作:
[lin@node1 ~]$ cat /etc/sysconfig/docker
ulimit -HSn 999999
重起docker daemon进程,systemctl restart docker