【问题标题】:Docker: Running container from CLI fails but not from docker desktop, RTENETLINK Oper not permittedDocker:从 CLI 运行容器失败,但不是从 docker 桌面运行,不允许 RTENETLINK 操作
【发布时间】:2021-10-10 19:54:53
【问题描述】:

我正在学习 docker,我将它下载到我的 Mac 上,并且能够从桌面应用程序运行我的第一个 docker 容器。从命令行启动同一图像的容器失败。

错误日志如下所示,显示 RteNetLink 失败。

任何想法为什么以及如何解决它?

% docker run ghcr.io/nokia/srlinux
Thu Aug  5 19:36:13 UTC 2021: entrypoint.sh called
Thu Aug  5 19:36:13 UTC 2021: renaming docker interface eth0 to mgmt0
RTNETLINK answers: Operation not permitted
RTNETLINK answers: Operation not permitted
Cannot find device "mgmt0"
Device "mgmt0" does not exist.
Cannot find device "mgmt0"
Thu Aug  5 19:36:14 UTC 2021: turning off checksum offloading on mgmt0
netlink error: Operation not permitted
Thu Aug  5 19:36:14 UTC 2021: starting sshd
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 
mount: /var/log/srlinux/buffer: permission denied.
Thu Aug  5 19:36:14 UTC 2021: Calling boot_run script
chmod: cannot access '/dev/console': No such file or directory
chmod: missing operand after '0666'
Try 'chmod --help' for more information.
/usr/bin/find: '/var/log/srlinux/file': No such file or directory
logmgr_set_env.sh: plain_bootup_start
Thu Aug  5 19:36:15 UTC 2021  logmgr_set_env.sh: restart of rsyslogd
Failed to set capabilities on file `/usr/sbin/tcpdump' (No such file or directory)
usage: setcap [-q] [-v] [-n <rootid>] (-r|-|<caps>) <filename> [ ... (-r|-|<capsN>) <filenameN> ]

 Note <filename> must be a regular (non-symlink) file.
Thu Aug  5 19:36:15 UTC 2021: entrypoint.sh done, executing /bin/bash

当我以交互模式运行容器时,我检查了操作系统版本,它是 CentOS Stream。

[user@33681341ddf6 /]$ cat /etc/os-release
NAME="CentOS Stream"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Stream 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"

【问题讨论】:

  • 看起来你在尝试运行一个虚拟机镜像(重新配置网络接口,运行辅助守护进程,创建多个日志目录,...)而不是一个轻量级的单处理 Docker 映像。你有图像的 Dockerfile 吗?如果您只是在学习,作为第一个练习,一个更简单的应用程序会更好吗?
  • 我不只是在学习 docker,我也在尝试运行具有一些独特功能的 Nokia SR Linux 映像。我需要测试这个图像并在上面构建自定义网络应用程序。你是对的,我应该更简单:docker run -d -p 80:80 docker/getting-started

标签: linux macos docker containers centos8


【解决方案1】:

从命令行启动同一映像的容器不会失败,如果您查看使用 Docker Desktop 启动的容器的日志,您会看到相同的行。

发生的情况是 centos dockerfile 使用 bash 作为其默认命令。

当你运行一个容器时,默认情况下它会附加到标准输出和标准错误,而不是标准输入。

添加-i 将附加标准输入。

添加-t 将为您提供一个伪终端

要实际使用 bash,您需要同时提供:-it

总而言之,这里是如何模仿 Docker Desktop 所做的事情,在后台使用 -d 启动容器:

docker run -it -d ghcr.io/nokia/srlinux

【讨论】:

  • 谢谢!有效。没有 -it -d 容器将关闭。现在它处于运行状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2017-05-01
相关资源
最近更新 更多