在Docker容器中运行MySQL
在Docker容器中运行MySQL,mysql,ubuntu,docker,Mysql,Ubuntu,Docker,因此,我的最终目标是运行一个MySQL Docker容器(比如公共注册表中的tutum/MySQL),然后将一个Gitlab Docker容器(比如sameersbn/Gitlab)链接到它,其中两个容器都使用持久存储
然而,我被困在MySQL部分。每次我尝试运行一个预先制作好的MySQL Docker容器(MySQL、tutum/MySQL和sameersbn/MySQL),如下所述,我都会得到下面的输出
步骤
这只是获取以下错误消息的一种方法
docker.io pull tutum/mys
因此,我的最终目标是运行一个MySQL Docker容器(比如公共注册表中的tutum/MySQL),然后将一个Gitlab Docker容器(比如sameersbn/Gitlab)链接到它,其中两个容器都使用持久存储
然而,我被困在MySQL部分。每次我尝试运行一个预先制作好的MySQL Docker容器(MySQL、tutum/MySQL和sameersbn/MySQL),如下所述,我都会得到下面的输出
步骤
这只是获取以下错误消息的一种方法
docker.io pull tutum/mysql:最新版本
docker.io运行-it tutum/mysql bash
一旦连接到新容器run“/run.sh”(根据tutum/mysql dockerfile)
此时,“等待MySQL服务启动确认”消息不断重复
此时,如果我取消“/run.sh”命令并自己启动MySQL,我会收到下面的错误消息
输出:
root@1bbeb34f3491:/#mysqld
140730 4:49:04[警告]不推荐使用唯一选项前缀key\u buffer而不是key\u buffer\u size,并将在将来的版本中删除。请改用全名
140730 4:49:04[警告]不推荐使用唯一选项前缀myisam recover而不是myisam recover选项,并将在将来的版本中删除。请改用全名
140730 4:49:04[注意]插件“联合”已禁用
mysqld:表“mysql.plugin”不存在
140730 4:49:04[错误]无法打开mysql.plugin表。请运行mysql\u升级来创建它
140730 4:49:04 InnoDB:InnoDB内存堆已禁用
140730 4:49:04 InnoDB:互斥锁和rw_锁使用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[注意]服务器主机名(绑定地址):“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[错误]套接字:/var/run/mysqld/mysqld.sock上是否已运行另一个mysqld服务器
140730 4:49:05[错误]正在中止
140730 4:49:05 InnoDB:正在启动关机。。。
140730 4:49:06 InnoDB:关闭完成;日志序列号1595675
140730 4:49:06[注]mysqld:关闭完成
解决错误
- “请运行mysql\u upgrade来创建它”=>运行mysql\u upgrade命令,该命令输出
root@1bbeb34f3491:/#mysql#U升级
正在将“mysql”查找为:mysql
正在将“mysqlcheck”查找为:mysqlcheck
致命错误:升级失败
- “您是否已经有另一台mysqld服务器在套接字上运行”=>否。运行服务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客户端,并尝试连接到mysql\u PORT\u 3306\u TCP\u ADDR中ip地址上的mysql容器,但这也不起作用
同样的问题可能是我不理解Docker是如何工作的。如果是这种情况,是否有人可以创建一组步骤,使用Docker索引上的一个MySQL容器,然后将一个容器链接到可以连接的容器。这也将有助于查看我的Docker安装是否有问题(或导致此问题的其他未知问题)
我的主机系统运行的是Ubuntu 14.04,Docker是通过apt get安装的,版本是0.9.1
我不太确定该在这个解释中加入什么,因为这个问题在我看来很奇怪。如果我遗漏了什么,请询问,我会为您添加
谢谢,
JamesStewy这对我很有用:
docker run-d-p3306:3306-e MYSQL\u PASS=“mypass”tutuum/MYSQL
不需要运行bash的脚本,也不需要任何聪明的东西。我认为这个问题可能更适合确定:。想知道:你的主机是什么?您使用的是本地实际机器还是一些云VP?如果你说你使用docker 0.9.1,你应该试试最近的一款(我猜大概是1.1.1),来仔细检查这与bug无关。这是一台直接安装了Ubuntu 14.04的物理本地机器。昨天我意识到我的Docker版本落后了很多,但由于某些原因,apt get上的Docker包的版本只有0.9.1。所以我按照这些说明()进行操作,现在运行的是1.1.2。不幸的是,这并没有改变任何事情。@JamesStewy,你能想出这个吗?我也面临同样的问题。