问题:在 docker 中运行 ubuntu bash shell 时出错

Gau*_*hra 5 bash ubuntu arm docker

我在基于arm的32位设备上运行docker。

但是,当我尝试通过命令 : 将 ubuntu bash shell 作为 docker 容器运行时docker run -it ubuntu bash,我不断收到以下错误:

docker: Error response from daemon: OCI runtime create failed: 
container_linux.go:348: starting container process caused 
"process_linux.go:402: container init caused \"open /dev/ptmx: no such file or directory\"": unknown.
Run Code Online (Sandbox Code Playgroud)

这是docker info给出的:

Containers: 4
Running: 0
Paused: 0
Stopped: 4
Images: 3
Server Version: 18.06.1-ce
Storage Driver: vfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.65-00273-gfa38327-dirty
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 923MiB
ID: 2PDV:3KHU:VZZM:DM6F:4MVR:TXBN:35YJ:VWP5:TMHD:GMKW:TPMI:MALC
Docker Root Dir: /opt/usr/media/docker_workdir
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Run Code Online (Sandbox Code Playgroud)

如果有人能告诉我出了什么问题以及如何解决这个问题,那就太好了?

Rao*_*zur 0

您的操作系统似乎缺少伪终端 (PTY) - 一种具有物理终端功能但实际上不是物理终端的设备。

\n\n
\n

文件/dev/ptmx是一个字符文件,主设备号为 5\n,次设备号为 2,通常模式为 0666,所有者为 root.root。它用于创建伪终端 mas\xc2\xadter 和从属对。

\n\n

文件

\n\n
    \n
  • /dev/ptmx - UNIX 98 主克隆设备
  • \n
  • /dev/pts/* - UNIX 98 从设备
  • \n
  • /dev/pty[p-za-e][0-9a-f] - BSD 主设备
  • \n
  • /dev/tty[p-za-e][0-9a-f] - BSD 从设备
  • \n
\n
\n\n

参考: http: //man7.org/linux/man-pages/man7/pty.7.html

\n\n

默认情况下,它包含在 Linux 内核中。也许缺乏它与您的操作系统架构有某种关系。另外,我不确定你如何修复,也许尝试更新和升级操作系统。

\n\n

如果您不需要 tty,快速解决方法是跳过-t标志:

\n\n

docker run -i ubuntu bash

\n\n

在 中docker run -it-i/--interactive表示“保持 stdin 打开”,-t/--tty表示“告诉容器 stdin 是伪 tty”。这里的关键是“互动”二字。如果省略该标志,容器仍会执行/bin/bash,但会立即退出。有了该标志,容器就会执行/bin/bash,然后耐心等待您的输入。这意味着现在您将在容器内拥有 bash 会话,因此您可以lsmkdir、 或在容器内执行任何 bash 命令。

\n