我试着从docker运行mysql5.6,如下所示:
docker run --name mysqlxx -e MYSQL_ROOT_PASSWORD=xxx
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
-d mysql:5.6
但是得到了以下错误
unknown flag: --character-set-server
有人知道会发生什么吗?它是mysql5.6 Dockerfile的一个bug吗?
图像是从https://hub.docker.com/_/mysql
您所写的内容意味着您将--character-set-server
和--collation-server
作为参数传递给docker
,并将NOT传递给mysql
。
一旦这些标志与MySQL相关,就必须将它们传递给MySQL服务,而不是docker。容器的命令行开始于图像名称(mysql:5.6
)之后。这看起来像:
docker run --name mysqlxx -e MYSQL_ROOT_PASSWORD=xxx -d mysql:5.6 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果您可以将它们作为环境提供,那么最好使用这种方法,但您必须为每个环境变量准备-e
。对不起,我不知道MySQL是否接受环境中的这些参数
正如@grapes所说,参数应该放在图像名称之后。以下命令有效。
docker run --name mysqlxx -p 3336:3306
-e MYSQL_ROOT_PASSWORD=xxx -d mysql:5.6
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci