Выполнить контейнер:
[root@localhost ~]# docker run -it centos:7.7.1908 /bin/bash
[root@79d4ba3a2080 /]#
Выполнение хоста:
[root@localhost ~]# ps aux|grep /bin/bash
root 10124 0.0 2.7 385800 51548 pts/1 Sl+ 14:25 0:00 docker run -it centos:7.7.1908 /bin/bash
root 10155 0.0 0.0 11828 1740 pts/0 Ss+ 14:25 0:00 /bin/bash
root 10197 0.0 0.0 112728 976 pts/2 S+ 14:27 0:00 grep --color=auto /bin/bash
Просмотр запущенного процесса контейнера fd: запущенный процесс контейнера (stdin, stdout, stderr) указывает на pts / 0.
[root@localhost ~]# ll /proc/10155/fd
total 0
lrwx------ 1 root root 64 May 8 14:25 0 -> /dev/pts/0
lrwx------ 1 root root 64 May 8 14:25 1 -> /dev/pts/0
lrwx------ 1 root root 64 May 8 14:25 2 -> /dev/pts/0
lrwx------ 1 root root 64 May 8 14:29 255 -> /dev/pts/0
Тест 1:
[root@localhost ~]# echo "hello" > /proc/10155/fd/0
результат отображения контейнера:
[root@79d4ba3a2080 /]# hello
Тест 2:
[root@localhost ~]# echo "hello" > /dev/pts/0
результат отображения хоста:
[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# hello
Результат показывает, что на хосте pts / 0 контейнер не отвечает.
В чем проблема с «Тестом 2»?
Почему не отображается в контейнере?
Что сделал docker?
Если есть какая-либо соответствующая информация, дайте мне знать, спасибо.
Понимаю:
Я смоделировал феномен типа с помощью следующей команды.
Смонтировать каталоги, которые зеркалируются docker CentOS 7
[root@localhost test]# mount -t overlay overlay -o lowerdir=/var/lib/docker/overlay2/e6e24960aabfb790c893d0d1e419cb34f97b92824941ab74b01348ef96c99412-init/diff:/var/lib/docker/overlay2/075bf06b50f9bc5fc2111b5e1c831f7f1304e3310a448e323e71ca9e7d83ba55/diff,upperdir=/var/lib/docker/overlay2/e6e24960aabfb790c893d0d1e419cb34f97b92824941ab74b01348ef96c99412/diff,workdir=/var/lib/docker/overlay2/e6e24960aabfb790c893d0d1e419cb34f97b92824941ab74b01348ef96c99412/work /project/test/t222
пространство имен Creat Pid:
[root@localhost t222]# unshare -u -i -p -m -n -f --mount-proc /bin/bash
[root@localhost t222]# pivot_root . .
[root@localhost t222]# for e in "proc proc proc/" "sysfs sysfs sys/" "devtmpfs devtmpfs dev/" "devpts devpts dev/pts/" ; do mount -t ${e} ; done
[root@localhost t222]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
overlay overlay 17G 14G 3.8G 79% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
Тестовый файл :
В новом пространстве имен:
[root@localhost t222]# vi 123.txt
На хосте:
[root@localhost ~]# ps -ef
'''
root 28295 28030 0 5月10 pts/4 00:00:00 unshare -u -i -p -m -n -f --mount-proc /bin/bash
root 28297 28295 0 5月10 pts/4 00:00:00 /bin/bash
root 29921 28297 0 09:52 pts/4 00:00:00 vi 123.txt
Просмотр информации о процессе:
[root@localhost ~]# ll /proc/28295/cwd
lrwxrwxrwx 1 root root 0 5月 11 09:52 /proc/28295/cwd -> /
[root@localhost ~]# ll /proc/28297/cwd
lrwxrwxrwx 1 root root 0 5月 11 09:52 /proc/28297/cwd -> /
[root@localhost ~]# ll /proc/30272/cwd
lrwxrwxrwx 1 root root 0 5月 11 10:06 /proc/30272/cwd -> /
[root@localhost ~]# ll /proc/30272/fd
total 0
lrwx------ 1 root root 64 5月 11 10:06 0 -> /dev/pts/4
lrwx------ 1 root root 64 5月 11 10:06 1 -> /dev/pts/4
lrwx------ 1 root root 64 5月 11 10:06 2 -> /dev/pts/4
lrwx------ 1 root root 64 5月 11 10:06 3 -> /.123.txt.swp [red, soft connection does not exist]
[root@localhost ~]# touch /.123.txt.swp
[root@localhost ~]# ll /proc/30272/fd
total 0
lrwx------ 1 root root 64 5月 11 10:06 0 -> /dev/pts/4
lrwx------ 1 root root 64 5月 11 10:06 1 -> /dev/pts/4
lrwx------ 1 root root 64 5月 11 10:06 2 -> /dev/pts/4
lrwx------ 1 root root 64 5月 11 10:06 3 -> /.123.txt.swp [normal]
Сводка:
Информация о процессе, видимая на хосте, является информацией о процессе в новом пространстве имен, «ll / proc / 30272 / fd» показывает, что мягкое соединение не существует, оно основано на старом пространстве имен, в основном « pivot_ root ", изменен рабочий каталог всех текущих процессов