docker - 对于任何容器,Docker 在 Ubuntu 14.04 上崩溃
问题描述
当 Jenkins 在 Ubuntu 14.04 LTS 服务器上运行时,我们开始在测试容器启动时崩溃,并出现以下错误:
OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:297: copying bootstrap data to pipe caused \"write init-p: broken pipe\"": unknown
最初怀疑这可能是由于本地 Dockerfiles 或 Jenkins 服务器本身配置错误,但是运行:
docker run --rm -i -a stdin -a stdout ubuntu echo 1
应该仍然有效并产生相同的问题
解决方案
事实证明,这是由于最近的 Docker 更新导致 Ubuntu 14.04 LTS 上默认发现的旧 3x 内核出现问题
有用的是,可以在 14.04 上升级内核版本,而不是升级整个操作系统。可以按照此 Ask Ubuntu 文章中的描述完成,但简而言之:
sudo apt-get install linux-generic-lts-xenial
sudo reboot
注意:搜索收到的错误消息后没有发现其他当前在线文章,但搜索其中的部分内容可以找到一些讨论它的特定于应用程序的论坛帖子。出于这个原因,我觉得在这里创建一个更容易定位的版本很有用,因为它将涵盖开发、测试甚至在 14.04 上运行容器的用例。
推荐阅读
- function - 无法使用 Cloud Shell 在 Oracle Cloud Function 中部署 Go
- libusb - SLES 11 的 libusb-1.0.so.0
- json - json编组中的额外括号
- javascript - 从 React 模板制作嵌套路由时难以使用 useRouteMatch
- python - 如何从与画面相关的网络调用中获取 POST url 规范
- json - 使用 Retrofit 和 Moshi 处理来自 Api 的不一致类型
- apache-flink - 源操作符卡在 requestBufferBuilderBlocking 中
- java - 如何从 2 个整数中获得下一个最接近的整数?
- java - 如何在 JavaFX 项目中实现 RichTextFX
- python - 初学者:Python--如何将 elif 语句嵌入到 while 循环中(每次通过循环都会改变输出的路径?!)