Docker的mysql官方图片

在这个Dockerfile中 ,创build了一个“mysql”用户,但是没有“USER mysql”指令。 那么为什么当你运行没有“-u”或“–user”的映像时,mysqld是以“mysql”而不是“root”的名义运行的呢?

如果你看Dockerfile和docker-entrypoint.sh文件( 这里 ),你可以看到容器将会执行(除非你提供了一个differenct命令)

 docker-entrypoint.sh mysqld 

在那个脚本中,它会被执行

 exec gosu mysql "$BASH_SOURCE" "$@" 

$@是该脚本的参数,只有在这种情况下才是mysqld