overlay2: unknown option overlay2.override_kernel_check: overlay2 docker启动报错如何解决
时间: 2024-03-17 22:40:34 浏览: 1318
这个报错是因为你的Docker版本过旧,overlay2.override_kernel_check是在Docker 18.09版本中引入的新特性,如果你的Docker版本低于18.09,就会出现这个报错。要解决这个问题,你可以升级Docker版本到18.09或更高版本,或者在启动Docker时加上--storage-driver=overlay2参数,例如:
```
sudo dockerd --storage-driver=overlay2
```
这样就可以避免这个报错了。
相关问题
“storage-opts”: [“overlay2.override_kernel_check=true”]
<think>好的,用户想配置Docker的存储选项来解决overlay2内核检查问题,具体是如何正确设置storage-opts参数来使用overlay2.override_kernel_check=true。我需要根据提供的引用信息来解答这个问题。
首先,根据引用[1]中的示例,daemon.json文件里有storage-opts的设置,其中包含了"overlay2.override_kernel_check=true"。这说明用户需要编辑daemon.json文件,并在storage-opts数组中加入这个选项。同时,引用[4]提到overlay2驱动程序支持最多128层,这可能和内核版本有关,如果内核版本不够,可能需要绕过检查。
然后,引用[2]提到storage-driver默认是overlay2,所以在配置时要确保storage-driver设置为overlay2,否则storage-opts可能不生效。用户需要确认这一点。
接下来,步骤应该是编辑/etc/docker/daemon.json文件,添加相应的配置。如果文件不存在,需要创建。配置内容应该包括storage-driver和storage-opts。注意格式的正确性,比如逗号和括号,避免JSON语法错误。修改后重启Docker服务,如systemctl restart docker,使配置生效。
还要考虑用户可能遇到的问题,比如配置错误导致Docker无法启动。这时候需要检查JSON格式是否正确,可以使用jsonlint工具验证。另外,查看Docker日志journalctl -u docker.service来排查错误。
用户可能还关心为什么要使用这个参数。根据引用[4],override_kernel_check=true可以绕过内核版本检查,适用于某些不支持的环境,但需要注意兼容性和稳定性问题。需要提醒用户谨慎使用,并确认内核是否真的符合要求,或者是否有其他解决方案。
最后,生成相关问题时,应该围绕Docker存储配置的其他方面,比如调整存储驱动、日志配置、存储驱动比较等,帮助用户扩展了解相关知识。</think>### 配置 Docker 的 `overlay2.override_kernel_check` 参数
要解决 `overlay2` 内核检查问题并正确设置 `storage-opts` 参数,需按以下步骤操作:
#### 1. **修改 `daemon.json` 配置文件**
- 打开或创建 Docker 配置文件:
```bash
sudo vim /etc/docker/daemon.json
```
- 添加以下内容以启用 `overlay2.override_kernel_check`:
```json
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true",
"overlay2.size=1G"
]
}
```
- **关键参数说明**:
- `storage-driver`: 必须指定为 `overlay2`,否则 `storage-opts` 中的参数可能不生效[^2][^4]。
- `overlay2.override_kernel_check=true`: 强制绕过内核版本兼容性检查,适用于内核版本较低或未通过默认检查的环境[^1]。
- `overlay2.size=1G`: 可选参数,限制单个容器可用的存储空间大小。
#### 2. **重启 Docker 服务**
```bash
sudo systemctl restart docker
```
#### 3. **验证配置**
- 检查 Docker 存储驱动状态:
```bash
docker info | grep "Storage Driver"
```
输出应包含 `overlay2`。
- 查看内核检查是否被绕过:
```bash
journalctl -u docker.service | grep override_kernel_check
```
#### 注意事项
1. **内核兼容性**:
绕过内核检查可能导致稳定性问题。建议优先升级内核至支持 `overlay2` 的版本(Linux 4.0+)[^4]。
2. **配置文件格式**:
`daemon.json` 必须为**严格 JSON 格式**,否则 Docker 将无法启动。可使用 `jsonlint` 工具验证格式。
---
### 相关问题
1. **如何调整 Docker 容器的存储空间限制?**
2. **`overlay2` 与 `devicemapper` 存储驱动的性能差异是什么?**[^4]
3. **如何配置 Docker 日志轮转策略以控制日志文件大小?**[^5]
4. **在低版本 Linux 内核中,如何选择适合的 Docker 存储驱动?**
---
### 引用说明
- 关于 `storage-opts` 参数配置示例和 `overlay2.override_kernel_check` 的作用,参考了 Docker 存储驱动文档。
- 存储驱动选择与内核兼容性建议基于 Docker 官方最佳实践[^3]。
"insecure-registries": ["172.20.70.112:8081","172.20.70.113:8081","172.20.70.183:8081"], "data-root": "/data/dockerdata/docker", "live-restore": true, "default-shm-size": "128M", "oom-score-adjust": -1000, "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "1" }, "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 1024000, "Soft": 1024000 } }, "max-concurrent-downloads": 5, "max-concurrent-uploads": 5, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] }
### 验证 `daemon.json` 中配置项的正确性
#### 1. **insecure-registries**
`insecure-registries` 字段允许指定不使用 HTTPS 的私有镜像仓库地址。如果需要连接未加密或自签名证书的内部镜像库,则可以通过此选项实现。例如:
```json
"insecure-registries": ["myinternalrepo:5000"]
```
确保所列地址能够被主机解析并访问成功[^3]。
#### 2. **data-root**
如前所述,现代 Docker 已经弃用了旧版中的 `graph` 参数,转而支持更直观易懂的新属性——`data-root` 。它用来重新定位所有与运行时有关的数据目录至新位置。比如:
```json
"data-root": "/mnt/ssd/docker"
```
注意目标路径需具备足够的权限供服务进程读写操作[^2]。
#### 3. **live-restore**
启用 live restore 功能可以让容器在守护进程重启期间维持其状态不变而非终止退出。这对于生产环境尤其重要,能减少因升级或其他原因造成的服务中断时间。
```json
"live-restore": true
```
#### 4. **default-shm-size**
设定共享内存区域大小,默认单位为字节 (bytes),也可以接受其他常见容量后缀如 k(Kilobytes), m(Megabytes) 等。示例:
```json
"default-shm-size": "64M"
```
#### 5. **oom-score-adjust**
调整 OOM Killer 对 docker 容器的影响程度值范围从 -1000 到 +1000 ,负数降低优先级正数提高。举例来说,
```json
"oom-score-adjust": "-500"
```
#### 6. **log-driver & log-opts**
日志驱动决定了每台容器产生的日志将以哪种机制记录下来;配合具体的参数进一步细化行为模式。常用的组合之一如下所示:
```json
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
```
#### 7. **default-ulimits**
定义全局范围内适用的所有 ulimit 设置。举个例子就是限制单个进程中打开文件描述符的最大数目不得超过某个阈值。
```json
"default-ulimits": {
"nofile": { "Name": "nofile", "Hard": 65535, "Soft": 65535 }
}
```
#### 8. **max-concurrent-downloads 和 max-concurrent-uploads**
这两个数值分别控制并发下载层以及上传层数量上限,默认情况下均为 3 。适当增加可能加快整体流程但也会占用更多带宽资源。
```json
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5
```
#### 9. **storage-driver 及 storage-opts**
最后两项涉及底层存储引擎的选择及其附加特性开关情况。目前最广泛采用的就是 overlay2 方案了。
```json
"storage-driver": "overlay2",
"storage-opts": [
"fs.xfs.blksize=4096"
]
```
完成以上各项修改保存好之后记得重启 Docker Daemon 才能使更改生效:
```bash
sudo systemctl restart docker
```
---
###
阅读全文
相关推荐
















