要解決CentOS上的overlay配置問題,可以按照以下步驟進行排查和解決:
首先,確保Docker使用的存儲驅動是overlay2??梢酝ㄟ^以下命令檢查當前的存儲驅動:
docker info | grep -i storage
如果顯示的存儲驅動不是overlay2,可以通過編輯Docker的配置文件/etc/docker/daemon.json
來更改存儲驅動:
{
"graph": "/data3/docker",
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
修改配置后,重啟Docker服務:
systemctl restart docker
如果遇到SELinux引起的沖突,可以嘗試臨時禁用SELinux,然后重啟Docker服務:
sudo setenforce 0
systemctl restart docker
如果禁用SELinux后問題解決,可以考慮修改SELinux的策略而不是完全禁用它,以允許Docker使用overlay文件系統。
確保文件系統支持overlay2。特別是,如果使用XFS文件系統,需要確保它支持d_type
??梢酝ㄟ^以下命令檢查和修改:
xfs_info /var/lib/docker | grep ftype=1
如果沒有返回,則需要重新格式化文件系統以支持d_type
:
mkfs.xfs -n ftype=1 /path/to/your/device
為了確保在系統啟動時自動加載overlayfs模塊,可以在/etc/sysconfig/modules/
目錄下創建一個腳本文件,例如overlayfs.modules
:
#!/bin/sh
/sbin/modinfo -F filename overlayfs /dev/null
if [ $? -eq 0 ]; then
/sbin/modprobe overlayfs
fi
給予該腳本執行權限:
chmod +x /etc/sysconfig/modules/overlayfs.modules
這樣,每次系統啟動時都會自動加載overlayfs模塊。
如果需要修改Docker的默認網絡配置,可以編輯Docker的服務文件/usr/lib/systemd/system/docker.service
,添加或修改以下行:
ExecStart=/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:2376 --cluster-store=consul://192.168.0.12:8500 --cluster-advertise=192.168.0.45:2376
這里--cluster-store
和--cluster-advertise
參數分別指定了Consul的地址和Docker節點的廣告地址。修改后,重啟Docker服務:
systemctl daemon-reload
systemctl restart docker
最后,通過以下命令驗證配置是否成功:
docker network create -d overlay myoverlay
docker network ls
docker run --network myoverlay busybox
docker network inspect myoverlay
通過這些步驟,應該能夠解決大多數CentOS上的overlay配置問題。如果問題依然存在,建議查看Docker的日志文件/var/log/docker.log
以獲取更多詳細信息,并根據具體錯誤信息進行進一步的排查。