所以我的最终目标是运行一个 MySQL Docker 容器(比如来自公共注册表的 tutum/mysql),然后将一个 Gitlab Docker 容器(比如 Sameersbn/gitlab)链接到它,其中两个容器都使用持久存储。
然而,我被困在 MySQL 部分。每次我尝试运行预制的 MySQL Docker 容器(mysql、tutum/mysql 和 Sameersbn/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 [错误] 无法打开 mysql.plugin 表。请运行 mysql_upgrade 来创建它。
140730 4:49:04 InnoDB:InnoDB 内存堆已禁用
140730 4:49:04 InnoDB:互斥锁和 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:37 年 5 月 5 日开始;日志序列号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 [错误] 您是否已经有另一个 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 容器,最终当我启动 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 安装是否有问题(或导致此问题的其他未知问题)。