Qual è la differenza tra l'uso delle parentesi (`[` `]`) e la specifica del comando nell'opzione CMD in Dockerfiles?


8

Perché si CMD ["mysqld"]traduce in:

db_1   | 2017-05-14T16:34:11.829163Z 0 [Note] mysqld (mysqld 5.7.18) starting as process 1 ...
db_1   | 2017-05-14T16:34:11.833159Z 0 [Note] InnoDB: PUNCH HOLE support available
db_1   | 2017-05-14T16:34:11.833190Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
db_1   | 2017-05-14T16:34:11.833199Z 0 [Note] InnoDB: Uses event mutexes
db_1   | 2017-05-14T16:34:11.833211Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
db_1   | 2017-05-14T16:34:11.833222Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
db_1   | 2017-05-14T16:34:11.833232Z 0 [Note] InnoDB: Using Linux native AIO
db_1   | 2017-05-14T16:34:11.833583Z 0 [Note] InnoDB: Number of pools: 1
db_1   | 2017-05-14T16:34:11.833729Z 0 [Note] InnoDB: Using CPU crc32 instructions
db_1   | 2017-05-14T16:34:11.835500Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
db_1   | 2017-05-14T16:34:11.844395Z 0 [Note] InnoDB: Completed initialization of buffer pool
db_1   | 2017-05-14T16:34:11.846532Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().

e CMD mysqldin:

db_1   | 2017-05-14T16:35:43.121085Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1   | 2017-05-14T16:35:43.123152Z 0 [Note] mysqld (mysqld 5.7.18) starting as process 8 ...
db_1   | 2017-05-14T16:35:43.126844Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
db_1   | 
db_1   | 2017-05-14T16:35:43.126882Z 0 [ERROR] Aborting
db_1   | 
db_1   | 2017-05-14T16:35:43.126905Z 0 [Note] Binlog end
db_1   | 2017-05-14T16:35:43.127142Z 0 [Note] mysqld: Shutdown complete
db_1   | 
strength_db_1 exited with code 1

Risposte:


10

CMD con parentesi è contenuto in un array. Senza parentesi, il comando viene eseguito come /bin/sh -c mysqld. La migliore pratica di afaik è usare sempre le parentesi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.