Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
Прочитал пару постов на тему сабжа и таки не понял когда вообще использовать 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 ?

Вот например выполняю я команду:

$ docker run --name my_percona_test -e MYSQL_ROOT_PASSWORD=password percona

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                             NAMES
c6b9c0b630fe        percona             "/docker-entrypoint.â¦"   About a minute ago   Up About a minute   3306/tcp                                          my_percona_test


Картинка с другого сайта.

и всё висит.

Честно говоря я не смог понять в чем проблема.

Объясните, пожалуйста, русским по белому.
9 янв 19, 18:25    [21780947]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
Я так понял, что чтобы приаттачиться надо контейнер запускать в интерактивном режиме

https://stackoverflow.com/questions/44347397/what-is-docker-attach
docker run -itd ...


Но я чего-то не вкурил что мне это даёт.

$ winpty docker attach e8a5
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
2019-01-09T15:34:19.686622Z 4 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:19.686663Z 4 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:19.686706Z 4 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:19.686729Z 4 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:19.686742Z 4 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:19.686896Z 4 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:19.686935Z 4 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.

2019-01-09T15:34:19.753299Z 0 [Note] Giving 0 client threads a chance to die gracefully
2019-01-09T15:34:19.753343Z 0 [Note] Shutting down slave threads
2019-01-09T15:34:19.753348Z 0 [Note] Forcefully disconnecting 0 remaining clients
2019-01-09T15:34:19.753353Z 0 [Note] Event Scheduler: Purging the queue. 0 events
2019-01-09T15:34:19.753396Z 0 [Note] Binlog end
2019-01-09T15:34:19.753868Z 0 [Note] Shutting down plugin 'ngram'
2019-01-09T15:34:19.753895Z 0 [Note] Shutting down plugin 'partition'
2019-01-09T15:34:19.753899Z 0 [Note] Shutting down plugin 'ARCHIVE'
2019-01-09T15:34:19.753902Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2019-01-09T15:34:19.753905Z 0 [Note] Shutting down plugin 'CSV'
2019-01-09T15:34:19.753908Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2019-01-09T15:34:19.753911Z 0 [Note] Shutting down plugin 'MyISAM'
2019-01-09T15:34:19.753918Z 0 [Note] Shutting down plugin 'MEMORY'
2019-01-09T15:34:19.753922Z 0 [Note] Shutting down plugin 'INNODB_TABLESPACES_SCRUBBING'
2019-01-09T15:34:19.753925Z 0 [Note] Shutting down plugin 'INNODB_TABLESPACES_ENCRYPTION'
2019-01-09T15:34:19.753928Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2019-01-09T15:34:19.753930Z 0 [Note] Shutting down plugin 'INNODB_CHANGED_PAGES'
2019-01-09T15:34:19.753933Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2019-01-09T15:34:19.753935Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2019-01-09T15:34:19.753937Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2019-01-09T15:34:19.753940Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2019-01-09T15:34:19.753943Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2019-01-09T15:34:19.753945Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2019-01-09T15:34:19.753947Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2019-01-09T15:34:19.753950Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2019-01-09T15:34:19.753952Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2019-01-09T15:34:19.753955Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2019-01-09T15:34:19.753957Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2019-01-09T15:34:19.753959Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2019-01-09T15:34:19.753962Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2019-01-09T15:34:19.753964Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2019-01-09T15:34:19.753967Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2019-01-09T15:34:19.753969Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2019-01-09T15:34:19.753972Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2019-01-09T15:34:19.753974Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2019-01-09T15:34:19.753976Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2019-01-09T15:34:19.753979Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2019-01-09T15:34:19.753981Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2019-01-09T15:34:19.753983Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2019-01-09T15:34:19.753986Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2019-01-09T15:34:19.753988Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2019-01-09T15:34:19.753991Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2019-01-09T15:34:19.753993Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2019-01-09T15:34:19.753996Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2019-01-09T15:34:19.753998Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2019-01-09T15:34:19.754000Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2019-01-09T15:34:19.754003Z 0 [Note] Shutting down plugin 'XTRADB_ZIP_DICT_COLS'
2019-01-09T15:34:19.754005Z 0 [Note] Shutting down plugin 'XTRADB_ZIP_DICT'
2019-01-09T15:34:19.754008Z 0 [Note] Shutting down plugin 'XTRADB_RSEG'
2019-01-09T15:34:19.754010Z 0 [Note] Shutting down plugin 'XTRADB_INTERNAL_HASH_TABLES'
2019-01-09T15:34:19.754013Z 0 [Note] Shutting down plugin 'XTRADB_READ_VIEW'
2019-01-09T15:34:19.754015Z 0 [Note] Shutting down plugin 'InnoDB'
2019-01-09T15:34:19.754060Z 0 [Note] InnoDB: FTS optimize thread exiting.
2019-01-09T15:34:19.754147Z 0 [Note] InnoDB: Starting shutdown...
2019-01-09T15:34:19.854451Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2019-01-09T15:34:19.854682Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 190109 15:34:19
2019-01-09T15:34:21.056288Z 0 [Note] InnoDB: Waiting for page_cleaner to finish flushing of buffer pool
2019-01-09T15:34:22.481778Z 0 [Note] InnoDB: Shutdown completed; log sequence number 11907957
2019-01-09T15:34:22.482870Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2019-01-09T15:34:22.482946Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2019-01-09T15:34:22.482997Z 0 [Note] Shutting down plugin 'sha256_password'
2019-01-09T15:34:22.483025Z 0 [Note] Shutting down plugin 'mysql_native_password'
2019-01-09T15:34:22.483315Z 0 [Note] Shutting down plugin 'binlog'
2019-01-09T15:34:22.489087Z 0 [Note] mysqld: Shutdown complete


MySQL init process done. Ready for start up.

2019-01-09T15:34:22.887285Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-01-09T15:34:22.888483Z 0 [Note] mysqld (mysqld 5.7.24-26) starting as process 1 ...
2019-01-09T15:34:22.905285Z 0 [Note] InnoDB: PUNCH HOLE support available
2019-01-09T15:34:22.905326Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-01-09T15:34:22.905330Z 0 [Note] InnoDB: Uses event mutexes
2019-01-09T15:34:22.905334Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2019-01-09T15:34:22.905337Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.7
2019-01-09T15:34:22.905340Z 0 [Note] InnoDB: Using Linux native AIO
2019-01-09T15:34:22.905545Z 0 [Note] InnoDB: Number of pools: 1
2019-01-09T15:34:22.905673Z 0 [Note] InnoDB: Using CPU crc32 instructions
2019-01-09T15:34:22.907384Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2019-01-09T15:34:22.911385Z 0 [Note] InnoDB: Completed initialization of buffer pool
2019-01-09T15:34:22.913562Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2019-01-09T15:34:22.958276Z 0 [Note] InnoDB: Crash recovery did not find the parallel doublewrite buffer at /var/lib/mysql/xb_doublewrite
2019-01-09T15:34:22.958752Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2019-01-09T15:34:23.265385Z 0 [Note] InnoDB: Created parallel doublewrite buffer at /var/lib/mysql/xb_doublewrite, size 3932160 bytes
2019-01-09T15:34:23.322423Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-01-09T15:34:23.322543Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-01-09T15:34:23.610988Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2019-01-09T15:34:23.613868Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2019-01-09T15:34:23.613974Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2019-01-09T15:34:23.615078Z 0 [Note] InnoDB: Waiting for purge to start
2019-01-09T15:34:23.665441Z 0 [Note] InnoDB: Percona XtraDB (http://www.percona.com) 5.7.24-26 started; log sequence number 11907957
2019-01-09T15:34:23.667076Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2019-01-09T15:34:23.669907Z 0 [Note] Plugin 'FEDERATED' is disabled.
2019-01-09T15:34:23.710311Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190109 15:34:23
2019-01-09T15:34:23.789586Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2019-01-09T15:34:23.789622Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2019-01-09T15:34:23.818544Z 0 [Warning] CA certificate ca.pem is self signed.
2019-01-09T15:34:23.818607Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2019-01-09T15:34:23.819813Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2019-01-09T15:34:23.830177Z 0 [Note] IPv6 is available.
2019-01-09T15:34:23.832877Z 0 [Note]   - '::' resolves to '::';
2019-01-09T15:34:23.832909Z 0 [Note] Server socket created on IP: '::'.
2019-01-09T15:34:23.974941Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:23.975039Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:23.975074Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:23.975087Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:23.975165Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:24.012752Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:24.012818Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
2019-01-09T15:34:24.037318Z 0 [Note] Event Scheduler: Loaded 0 events
2019-01-09T15:34:24.038135Z 0 [Note] mysqld: ready for connections.
Version: '5.7.24-26'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Percona Server (GPL), Release 26, Revision c8fe767


Теперь при повторном аттаче всё стало висеть - непонятно как-то
9 янв 19, 18:44    [21780961]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
questioner
Объясните, пожалуйста, русским по белому.
там же в документации все написано:
автор
Usage: docker attach [OPTIONS] CONTAINER

Attach local standard input, output, and error streams to a running container

т.е. attach нужно использовать тогда, когда нужно подсушить контейнеровские FD 0,1 и 2 к своим. Если вопрос состоит в том, когда такая тема может понадобиться, то ответ примерно такой: изначально (да и сейчас) предполагалось, что в докеровском контейнере (в lxc все не так) крутится один процесс и отличается оно от "локального" запуска того же процесса только тем, что процесс в докере крутится в изолированном окружении.
9 янв 19, 18:46    [21780964]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
Андрей Панфилов
т.е. attach нужно использовать тогда, когда нужно подсушить контейнеровские FD 0,1 и 2 к своим.


а что значит подсушить?
Что такое FD ?
Могу я как-то открыть баш в контейнере через аттач?
9 янв 19, 18:49    [21780966]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
questioner
Что такое FD ?
File descriptior - чуть ли не базовое понятие в UNIX.

questioner
а что значит подсушить?


Ну вот так примерно контейнеры работают:


root 155511 0.0 0.0 9048 1588 ? Sl 2018 2:58 | \_ docker-containerd-shim -namespace moby
root 155527 0.0 0.0 39644 132 ? Ss 2018 0:00 | | \_ nginx: master process nginx -g daemon off;

ls -la /proc/155527/fd/{0,1,2}
lr-x------ 1 root root 64 Jan 9 11:07 /proc/155527/fd/0 -> pipe:[166910912]
l-wx------ 1 root root 64 Jan 9 11:07 /proc/155527/fd/1 -> pipe:[166910913]
l-wx------ 1 root root 64 Jan 9 11:07 /proc/155527/fd/2 -> pipe:[166910914]

ls -la /proc/155511/fd
total 0
dr-x------ 2 root root 0 Jan 9 11:08 .
dr-xr-xr-x 9 root root 0 Dec 27 12:26 ..
lr-x------ 1 root root 64 Jan 9 11:08 0 -> /dev/null
l-wx------ 1 root root 64 Jan 9 11:08 1 -> /dev/null
lr-x------ 1 root root 64 Jan 9 11:08 10 -> pipe:[166910913]
l--------- 1 root root 64 Jan 9 11:08 11 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stdout
lr-x------ 1 root root 64 Jan 9 11:08 12 -> pipe:[166910914]
l-wx------ 1 root root 64 Jan 9 11:08 13 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stdout
l--------- 1 root root 64 Jan 9 11:08 14 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stdout
lr-x------ 1 root root 64 Jan 9 11:08 15 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stdout
l--------- 1 root root 64 Jan 9 11:08 16 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stderr
l-wx------ 1 root root 64 Jan 9 11:08 17 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stderr
l--------- 1 root root 64 Jan 9 11:08 18 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stderr
lr-x------ 1 root root 64 Jan 9 11:08 19 -> /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stderr
l-wx------ 1 root root 64 Jan 9 11:08 2 -> /dev/null
lrwx------ 1 root root 64 Jan 9 11:08 4 -> anon_inode:[eventpoll]
lrwx------ 1 root root 64 Jan 9 11:08 5 -> anon_inode:[eventpoll]
lrwx------ 1 root root 64 Jan 9 11:08 6 -> socket:[167091395]
lrwx------ 1 root root 64 Jan 9 11:08 7 -> socket:[166910910]
lr-x------ 1 root root 64 Jan 9 11:08 8 -> pipe:[166910912]

ls -la /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stdout
prwx------ 1 root root 0 Jan 5 08:26 /run/docker/containerd/61241e6529fe785b84c3a9c9ffc43a1dde60df368260d10618bd37ec2b825b75/init-stdout

т.е. 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
9 янв 19, 19:21    [21780987]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
Андрей Панфилов
автор
т.е. 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 .

То есть судя по всему так по умолчанию и есть или я что-то не так понимаю.
9 янв 19, 21:58    [21781061]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
Андрей Панфилов,

у меня на виндосе стоит докер.

Я заранил image percona(mysql)

docker run --name my_percona_test -e MYSQL_ROOT_PASSWORD=password percona

Правильно я понимаю, что attach аттачит STDIN/STDOUT(не уверен, что я правильно понимаю, что это такое) приложения percona к консоли докера, но так как percona ничего не пишет в STDOUT и ничего не ждёт из STDIN, то ничего и не происходит.

STDIN/STDOUT частный случай это консоль?

Что я ожидал от команды attach?

я хотел подключиться к консоли в контейнере. Чтобы я там мог написать
mysql -u root -p
и там уже смотреть базы данных и таблицы.
9 янв 19, 22:23    [21781075]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
и ещё почему-то аттач случается только один раз.

даже после docker restart аттач не срабатывает
9 янв 19, 22:56    [21781093]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
То есть при первичном docker run, из image делается изолированный процесс(контейнер, который как бы является linux виртуалкой)
Далее в этой виртуалке открывается консоль и в ней стартует команда для инсталла mysql percona. И при аттаче к этой консоли мы и аттачимся?
9 янв 19, 23:16    [21781108]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3247
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 янв 19, 09:08    [21781262]     Ответить | Цитировать Сообщить модератору
 Re: Когда использовать docker attach ?  [new]
questioner
Member

Откуда:
Сообщений: 1712
Андрей Панфилов,

Спасибо за разъяснения
10 янв 19, 16:39    [21781907]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить