繁体   English   中英

在Docker容器中运行MySQL

[英]Running MySQL in a Docker container

因此,我的最终目标是运行MySQL Docker容器(例如来自公共注册表的tutum / mysql),然后将Gitlab Docker容器(比如sameersbn / gitlab)链接到两个容器使用持久存储的容器。

但是,我被困在MySQL部分。 每次我尝试运行一个预制的MySQL Docker容器(mysql,tutum / mysql和sameersbn / mysql),如下所述,我得到以下输出。

脚步

这只是获取下面的错误消息的一种方法。

  1. docker.io pull tutum / mysql:latest
  2. docker.io运行-it tutum / mysql bash
  3. 一旦附加到新容器运行“/run.sh”(根据tutum / mysql dockerfile)
  4. 此时,“等待确认MySQL服务启动”消息不断重复。
  5. 此时,如果我取消“/run.sh”命令并自己启动MySQL,我会收到以下错误消息。

输出:

root @ 1bbeb34f3491:/#mysqld

140730 4:49:04 [警告]不推荐使用唯一选项前缀key_buffer而不是key_buffer_size,将在以后的版本中删除。 请改用全名。

140730 4:49:04 [警告]不推荐使用唯一选项前缀myisam-recover而不是myisam-recover-options,将在以后的版本中删除。 请改用全名。

140730 4:49:04 [注意]插件'FEDERATED'被禁用。

mysqld:表'mysql.plugin'不存在

140730 4:49:04 [ERROR]无法打开mysql.plugin表。 请运行mysql_upgrade来创建它。

140730 4:49:04 InnoDB:InnoDB内存堆被禁用

140730 4:49:04 InnoDB:Mutexes和rw_locks使用GCC原子内置

140730 4:49:04 InnoDB:压缩表使用zlib 1.2.8

140730 4:49:04 InnoDB:使用Linux原生AIO

140730 4:49:04 InnoDB:初始化缓冲池,大小= 128.0M

140730 4:49:04 InnoDB:完成缓冲池的初始化

140730 4:49:04 InnoDB:最高支持的文件格式是Barracuda。

140730 4:49:04 InnoDB:等待后台线程开始

140730 4:49:05 InnoDB:5.5.37开始; 日志序列号1595675

140730 4:49:05 [注意]服务器主机名(bind-address):'0.0.0.0'; 港口:3306

140730 4:49:05 [注意] - '0.0.0.0'解析为'0.0.0.0';

140730 4:49:05 [注意]在IP上创建的服务器套接字:'0.0.0.0'。

140730 4:49:05 [错误]无法启动服务器:在unix套接字上绑定:权限被拒绝

140730 4:49:05 [错误]你是否已在socket上运行另一个mysqld服务器:/var/run/mysqld/mysqld.sock?

140730 4:49:05 [错误]中止

140730 4:49:05 InnoDB:开始关机... 140730 4:49:06 InnoDB:关机完成; 日志序列号1595675 140730 4:49:06 [注意] mysqld:关闭完成

解决错误

  • “请运行mysql_upgrade来创建它”=>运行mysql_upgrade命令输出

root @ 1bbeb34f3491:/#mysql_upgrade

寻找'mysql'为:mysql

寻找'mysqlcheck'为:mysqlcheck

致命错误:升级失败

  • “你是否已经在socket上运行了另一个mysqld服务器”=> Nope。 运行服务mysql stop什么都不做,运行ps不显示mysqld。 运行ls -a / var / run / mysqld /表明套接字文件不存在。

无论我尝试哪个MySQL容器,最终当我启动MySQL时,出现了相同的错误消息。 这几乎可以肯定意味着我的设置出了问题让我感到困惑,因为我认为没有暴露端口或持久存储的Docker容器会与系统中的Docker隔离?

我还尝试使用-d标志运行MySQL容器,然后运行链接到它的新的ubuntu 14.04容器(docker.io run -it -link mysql:mysql ubuntu:14.04 bash)。 在Ubuntu容器上,我通过apt-get安装了mysql-client,并尝试连接到MYSQL_PORT_3306_TCP_ADDR中的ip地址上的MySQL容器,但这也不起作用。

同样问题可能是我不明白Docker是如何工作的。 如果是这种情况,有人可以创建一组步骤,使用Docker索引上的一个MySQL容器,然后将容器链接到可以连接的容器。 这也有助于查看我的Docker安装是否有问题(或导致此问题的其他一些未知问题)。

我的主机系统运行的是Ubuntu 14.04,Docker是通过apt-get安装的,版本是0.9.1。

我不太清楚在这个解释中应该放什么,因为这个问题对我来说似乎很奇怪。 如果有什么我错过了请问,我会为你添加。

谢谢JamesStewy

这适用于我: docker run -d -p 3306:3306 -e MYSQL_PASS="mypass" tutum/mysql

无需从bash运行脚本,不需要任何聪明的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM