docker-容器启动失败分析

1.内存溢出问题

当运行某一个容器时,可以看到转态信息,发现并没有运行成功

查看日志

docker logs [容器名称]

可以看到错误信息是否存在下面错误:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)


#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# //hs_err_pid6.log

原因就是内存无法分配的问题

现执行命令 free -m 查看内存是不是还有 最主要的是 看有没有交换空间 swap (这很重要)如果没有交换空间 或者交换空间比较小 要先安装交换空间 或者增大空间

查看内存

free -mh

看输出信息,这是我的内存情况

              total        used        free      shared  buff/cache   available
Mem:           1.8G        1.5G         68M        828K        209M         60M
Swap:          2.0G        1.4G        563M

可以看到我这内存已不满足他需要的内存

创建swapfile

dd  if=/dev/zero  of=swapfile  bs=1024  count=500000

将swapfile设置为swap空间

 mkswap swapfile

启用交换空间,这个操作有点类似于mount操作

swapon  swapfile  

至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化

free -mh

看一下我的

              total        used        free      shared  buff/cache   available
Mem:           1819        1355          63           0         399         234
Swap:          2536        1556         979

那重启容器

docker restart [id前三位或id]

你可能感兴趣的:(docker-容器启动失败分析)