在对“ my.cnf”进行编辑后,当我尝试启动容器时,我现在在Mac上从Kitematic收到一个错误:
mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 19! mysqld:
[ERROR] Fatal error in defaults handling. Program aborted!
我尝试通过以下方式访问容器:
docker exec -it [container] bash
...但是我得到了错误:
Error response from daemon: Container [container] is not running
我能够通过图像访问某物,但是文件看起来并不相同,所以我不确定发生了什么(我不太熟悉Docker。 )。
在此阶段,进行适当的编辑并修复容器,或者以某种方式将MySQL数据克隆到另一个容器将是理想的选择。
答案 0 :(得分:2)
要修复my.cnf,可以使用docker container cp
。它适用于停止的容器。
试试
docker container cp [container]:/etc/mysql/my.cnf container-my.cnf
然后编辑container-my.cnf并复制回去:
docker container cp container-my.cnf [container]:/etc/mysql/my.cnf
要在新容器中使用现有的MySQL数据,
docker container inspect -f '{{.Mounts}}' [container]
为您提供数据所在的卷名(键volume
)。然后启动一个新的mysql容器,并将卷安装在/var/lib/mysql
下:
docker container run -d -v [volume_name]:/var/lib/mysql [image]
此后,您可以删除旧容器(实际上您可以在创建新容器之前将其删除)
答案 1 :(得分:1)
如果您使用的是来自
的官方 mysql docker 镜像https://hub.docker.com/_/mysql
您可以使用覆盖 my.cnf 的自定义 MySQL 配置文件
如果/my/custom/config-file.cnf是你自定义配置文件的路径和名字,你可以这样启动你的mysql容器(注意这个命令只使用了自定义配置文件的目录路径):
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
这将启动一个新容器 some-mysql,其中 MySQL 实例使用来自 /etc/mysql/my.cnf 和 /etc/mysql/conf.d/config-file.cnf 的组合启动设置,以及来自后者优先。