Проблема: ошибка при запуске оболочки Ubuntu Bash в Docker - PullRequest
0 голосов
/ 26 ноября 2018

Я использую Docker на своем 32-битном устройстве на базе Arm.

Однако, когда я пытаюсь запустить оболочку Ubuntu Bash в качестве 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.

Вот что дает 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

Было бы замечательно, если бы кто-то мог сказать мне, что не так и как я могу это исправить?

1 Ответ

0 голосов
/ 26 ноября 2018

Похоже, что в вашей ОС отсутствуют псевдотерминалы (PTY) - устройство, которое фактически выполняет функции физического терминала.

Файл / dev / ptmx - это символьный файл с основным номером 5 и вторым номером 2, обычно в режиме 0666 и владельцем. Группа root.root.Используется для создания псевдотерминальной главной и подчиненной пары.

FILES

  • / dev / ptmx - мастер-клон UNIX 98
  • / dev / pts/ * - подчиненные устройства UNIX 98
  • / dev / pty [p-za-e] [0-9a-f] - ведущие устройства BSD
  • / dev / tty [p-za-e] [0-9a-f] - ведомые устройства BSD

Ссылка: http://man7.org/linux/man-pages/man7/pty.7.html

Это по умолчанию включено в ядро ​​Linux.Возможно, его отсутствие как-то связано с архитектурой вашей ОС.Кроме того, я не уверен, как вы можете это исправить, возможно попробуйте обновить && обновить ОС.

Быстрый обходной путь, если вам не нужен tty, будет пропускать флаг -t:

docker run -i ubuntu bash

В docker run -it, -i/--interactive означает «держать стандартный ввод открытым», а -t/--tty означает «сообщить контейнеру, что стандартный ввод псевдотерминала».Ключевым здесь является слово «интерактивный».Если вы опустите флаг, контейнер все равно выполнит /bin/bash, но завершится немедленно.С флагом флаг выполняет /bin/bash, затем терпеливо ждет вашего ввода.Это означает, что теперь у вас будет сеанс bash внутри контейнера, так что вы можете ls, mkdir или выполнить любую команду bash внутри контейнера.

...