我已从docker hub中提取了MySQL图像并尝试使用
运行它docker run (-i) (-t) -d -p 3306:3306 --name test-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:latest —innodb_buffer_pool_size=1G —character-set-server=utf8 —collation-server=utf8_general_ci —lower_case_table_names=1
但容器会立即退出。
docker ps
的输出为空,而docker ps -a
的输出为:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
93ffbf44b3c6 mysql:latest "docker-entrypoint..." 9 seconds ago Exited (127) 8 seconds ago test-mysql
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/mysql-56-centos7 latest 1d5bc23ca83b 25 hours ago 401MB
mysql latest 11615e225c92 5 days ago 408MB
我在AWS上的CentOS上运行docker,从MySQL Docker file我可以看到该图像使用的是Debian库。
我还尝试在前景和背景上运行图像,但似乎都不起作用。
我也试过使用CentOS base,但即使这样也会立即退出。
我以root身份运行docker。
答案 0 :(得分:2)
首先要做的事情。你正在运行什么操作系统并不重要。构建映像的操作系统无关紧要。这就是Docker的力量。您可以在Ubuntu中运行基于CentOS的容器,反之亦然。
如果容器已退出,则在容器内运行进程时会出现一些错误。代码128太模糊了。要找出真正阻止您运行MySQL容器的内容,请查看容器日志:
docker logs [containerId]
答案 1 :(得分:1)
错误发生在运行命令本身上。应该使用双重而不是单个破折号来覆盖数据库配置属性。所以正确的docker run命令如下
docker run -d -p 3306:3306 --name test-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:latest --innodb_buffer_pool_size=1G --character-set-server=utf8 --collation-server=utf8_general_ci --lower_case_table_names=1
感谢提示@Sergey Kovalev