|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
Прочитал пару постов на тему сабжа и таки не понял когда вообще использовать docker attach Для тех, кто не любит читать до конца - я в курсе про docker exec https://stackoverflow.com/a/35584685/2674303 https://stackoverflow.com/questions/30960686/difference-between-docker-attach-and-docker-exec Да, я понял, что если надо открыть что-то новое, то надо использовать docker exec, но какой сценарий использования docker attach ? Вот например выполняю я команду: Код: powershell 1.
Код: powershell 1. 2. 3.
и всё висит. Честно говоря я не смог понять в чем проблема. Объясните, пожалуйста, русским по белому. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 18:25 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
Я так понял, что чтобы приаттачиться надо контейнер запускать в интерактивном режиме https://stackoverflow.com/questions/44347397/what-is-docker-attach Код: powershell 1.
Но я чего-то не вкурил что мне это даёт. Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124.
Теперь при повторном аттаче всё стало висеть - непонятно как-то ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 18:44 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
questionerОбъясните, пожалуйста, русским по белому.там же в документации все написано: авторUsage: docker attach [OPTIONS] CONTAINER Attach local standard input, output, and error streams to a running container т.е. attach нужно использовать тогда, когда нужно подсушить контейнеровские FD 0,1 и 2 к своим. Если вопрос состоит в том, когда такая тема может понадобиться, то ответ примерно такой: изначально (да и сейчас) предполагалось, что в докеровском контейнере (в lxc все не так) крутится один процесс и отличается оно от "локального" запуска того же процесса только тем, что процесс в докере крутится в изолированном окружении. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 18:46 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
Андрей Панфиловт.е. attach нужно использовать тогда, когда нужно подсушить контейнеровские FD 0,1 и 2 к своим. а что значит подсушить? Что такое FD ? Могу я как-то открыть баш в контейнере через аттач? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 18:49 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
questionerЧто такое FD ?File descriptior - чуть ли не базовое понятие в UNIX. questionerа что значит подсушить? Ну вот так примерно контейнеры работают: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
т.е. FD 0, 1 и 2 процесса 155527 (nginx) в докере подключены к FD 8, 9 и 12 процесса 155511 (docker-containerd-shim), который в свою очередь пересылает текст в именнованные пайпы на ФС (mkfifo(1)), когда делается docker attach, то там для текущего шела делается вызов freopen(3), который перебивает евойные FD 0,1 и 2 на именнованные пайпы. questionerМогу я как-то открыть баш в контейнере через аттач?если контейнер был запущен как "docker run ... /bin/bash", то при attach будет осуществлено подключение как раз к запущенному bash ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 19:21 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
Андрей Панфиловавторт.е. FD 0, 1 и 2 процесса 155527 (nginx) в докере подключены к FD 8, 9 и 12 процесса 155511 (docker-containerd-shim), который в свою очередь пересылает текст в именнованные пайпы на ФС (mkfifo(1)), когда делается docker attach, то там для текущего шела делается вызов freopen(3), который перебивает евойные FD 0,1 и 2 на именнованные пайпы. Видимо не 8, 9 и 12, а 8, 10, 12 Что такое ФС я тоже не знаю или это опечатка и это ФД? Андрей ПанфиловquestionerМогу я как-то открыть баш в контейнере через аттач?если контейнер был запущен как "docker run ... /bin/bash", то при attach будет осуществлено подключение как раз к запущенному bash https://docs.docker.com/engine/reference/run/#foreground If you do not specify -a then Docker will attach to both stdout and stderr . То есть судя по всему так по умолчанию и есть или я что-то не так понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 21:58 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, у меня на виндосе стоит докер. Я заранил image percona(mysql) Код: powershell 1.
Правильно я понимаю, что attach аттачит STDIN/STDOUT(не уверен, что я правильно понимаю, что это такое) приложения percona к консоли докера, но так как percona ничего не пишет в STDOUT и ничего не ждёт из STDIN, то ничего и не происходит. STDIN/STDOUT частный случай это консоль? Что я ожидал от команды attach? я хотел подключиться к консоли в контейнере. Чтобы я там мог написать Код: powershell 1.
и там уже смотреть базы данных и таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 22:23 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
и ещё почему-то аттач случается только один раз. даже после docker restart аттач не срабатывает ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 22:56 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
То есть при первичном docker run, из image делается изолированный процесс(контейнер, который как бы является linux виртуалкой) Далее в этой виртуалке открывается консоль и в ней стартует команда для инсталла mysql percona. И при аттаче к этой консоли мы и аттачимся? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 23:16 |
|
Когда использовать docker attach ?
|
|||
---|---|---|---|
#18+
questionerПравильно я понимаю, что attach аттачит STDIN/STDOUT(не уверен, что я правильно понимаю, что это такое) приложения percona к консоли докера, но так как percona ничего не пишет в STDOUT и ничего не ждёт из STDIN, то ничего и не происходит.Скажем так: почти. Консоль (телетайп, псевдотерминал и пр.) - это устройство ввода-вывода, а файловый дескриптор у процесса - это абстракция, через которую процесс что-то пишет или читает, сокет, например, - это тоже файловый дескриптор. У любого процесса в UNIX есть как минимум три файловых дескриптора: 0, 1 и 2, они же STDIN, STDOUT и STDERR, однако каким файлам/устройствам/сокетам эти дескрипторы соответствуют зависит от того что написано в коде конкретного приложения. questionerЧто я ожидал от команды attach? я хотел подключиться к консоли в контейнере. Чтобы я там мог написать mysql -u root -p и там уже смотреть базы данных и таблицы.Идея понятна - вы не хотите знать что нужно запустить чтобы работать с запущенным сервисом в докере, а хотите иметь некий универсальный подход: запустили attach - открылась некая оснастка управления сервисом. В докере так не делают (хотя на самом деле можно, а вот, к примеру, в LXC то что вы хотите есть прямо из коробки - lxc-console), проблема здесь в следующем: если в контейнере запускать несколько процессов, то становится непонятным каким образом определять жив контейнер вообще или нет (ну вот крутится у вас там mysqld и bash, если mysqld упал, то понятно что у вас отвалился сервис и нужно что-то предпринимать, а вот если bash упал, то что делать? а как контейнеру это понять?), если же в контейнер запихивать полноценный менеджер процессов, который сам будет принимать решения о перезапуске сервисов, то это настолько усложнит создание контейнеров, что вся текущая популярность докера сойдет на нет, поэтому разработчики докера решили что наиболее простая концепция здесь: один контейнер - один процесс/сервис. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2019, 09:08 |
|
|
start [/forum/topic.php?fid=59&msg=39758033&tid=2121543]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 485ms |
0 / 0 |