我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【docker挂载问题】( OCI runtime create failed: runc create failed)和 (java.nio.file.AccessDeniedException)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【docker挂载问题】( OCI runtime create failed: runc create failed)和 (java.nio.file.AccessDeniedException)

1.故障现象:

阿里云ECS服务器:Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64)
上用docker部署elasticsearch服务。

因为偷懒直接用的 snap软件包管理器安装的docker。安装docker的版本信息为:
在这里插入图片描述
部署es或者redis等服务时,发现用docker挂载一直比较奇怪。要么是报错:

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/data/redis/conf/redis.conf" to rootfs at "/etc/redis/redis.conf": mount /data/redis/conf/redis.conf:/etc/redis/redis.conf (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

大概意思是:把文件/data/redis/conf/redis.conf挂载到目录上 /etc/redis/redis.conf docker把挂载文件解析成了目录(/etc/redis/redis.conf),或者反向:把/data/redis/conf/redis.conf 解析成目录,/etc/redis/redis.conf解析成文件。所以报错,目录不能挂载到文件上。

要么是elasticsearch启动时报错:

root@i3rm4tzkh:/dockerdir/tools# docker logs -f esOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.[2023-08-24T01:47:35,687][INFO ][o.e.n.Node               ] [] initializing ...[2023-08-24T01:47:35,704][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Failed to create node environment        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.3.jar:6.4.3]        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.3.jar:6.4.3]Caused by: java.lang.IllegalStateException: Failed to create node environment        at org.elasticsearch.node.Node.(Node.java:277) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.node.Node.(Node.java:256) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Bootstrap$5.(Bootstrap.java:213) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.3.jar:6.4.3]        ... 6 moreCaused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]        at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:385) ~[?:?]        at java.nio.file.Files.createDirectory(Files.java:682) ~[?:?]        at java.nio.file.Files.createAndCheckIsDirectory(Files.java:789) ~[?:?]        at java.nio.file.Files.createDirectories(Files.java:775) ~[?:?]        at org.elasticsearch.env.NodeEnvironment.(NodeEnvironment.java:207) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.node.Node.(Node.java:274) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.node.Node.(Node.java:256) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Bootstrap$5.(Bootstrap.java:213) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.3.jar:6.4.3]        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.3.jar:6.4.3]        ... 6 more

另附运行脚本:

docker run -d --name es  -e "ES_JAVA_OPTS=-Xms4096m -Xmx4096m"  -e "discovery.type=single-node"  -v /data/elasticsearch/data:/usr/share/elasticsearch/data:rw  -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins:rw   --privileged  -p 9200:9200  -p 9300:9300 elasticsearch:6.4.3

2. 问题解决:

百度后做过各种尝试都没成功:

  1. /data/elasticsearch/data 修改目录权限 777
  2. 关闭 selinux
  3. 将挂载文件 改为挂载目录

各种尝试都失败后怀疑是es版本问题。修改es版本后结果问题依旧。

最终解决:找了个其他环境的docker版本:23.0.2 【问题解决】

root@iZwz93rm3yZ:~# docker versionClient: Docker Engine - Community Version:           23.0.2 API version:       1.42 Go version:        go1.19.7 Git commit:        569dd73 Built:             Mon Mar 27 16:16:30 2023 OS/Arch:           linux/amd64 Context:           defaultServer: Docker Engine - Community Engine:  Version:          23.0.2  API version:      1.42 (minimum version 1.12)  Go version:       go1.19.7  Git commit:       219f21b  Built:            Mon Mar 27 16:16:30 2023  OS/Arch:          linux/amd64  Experimental:     false containerd:  Version:          1.6.22  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca runc:  Version:          1.1.8  GitCommit:        v1.1.8-0-g82f18fe docker-init:  Version:          0.19.0  GitCommit:        de40ad0

来源地址:https://blog.csdn.net/d495435207/article/details/132467445

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【docker挂载问题】( OCI runtime create failed: runc create failed)和 (java.nio.file.AccessDeniedException)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录