gpt4 book ai didi

mysql - 在 Docker 容器中运行 MySQL

转载 作者:可可西里 更新时间:2023-11-01 07:44:39 24 4
gpt4 key购买 nike

所以我的最终目标是运行一个 MySQL Docker 容器(比如公共(public)注册表中的 tutum/mysql),然后将 Gitlab Docker 容器(比如 sameersbn/gitlab)链接到它,两个容器都使用持久存储。

但是,我卡在了 MySQL 部分。每次我尝试运行预制的 MySQL Docker 容器(mysql、tutum/mysql 和 sameersbn/mysql)时,我都会得到以下输出。

步骤

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

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

输出:

root@1bbeb34f3491:/# mysqld

140730 4:49:04 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.

140730 4:49:04 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.

140730 4:49:04 [Note] Plugin 'FEDERATED' is disabled.

mysqld: Table 'mysql.plugin' doesn't exist

140730 4:49:04 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

140730 4:49:04 InnoDB: The InnoDB memory heap is disabled

140730 4:49:04 InnoDB: Mutexes and rw_locks use GCC atomic builtins

140730 4:49:04 InnoDB: Compressed tables use zlib 1.2.8

140730 4:49:04 InnoDB: Using Linux native AIO

140730 4:49:04 InnoDB: Initializing buffer pool, size = 128.0M

140730 4:49:04 InnoDB: Completed initialization of buffer pool

140730 4:49:04 InnoDB: highest supported file format is Barracuda.

140730 4:49:04 InnoDB: Waiting for the background threads to start

140730 4:49:05 InnoDB: 5.5.37 started; log sequence number 1595675

140730 4:49:05 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306

140730 4:49:05 [Note] - '0.0.0.0' resolves to '0.0.0.0';

140730 4:49:05 [Note] Server socket created on IP: '0.0.0.0'.

140730 4:49:05 [ERROR] Can't start server : Bind on unix socket: Permission denied

140730 4:49:05 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?

140730 4:49:05 [ERROR] Aborting

140730 4:49:05 InnoDB: Starting shutdown...140730 4:49:06 InnoDB: Shutdown completed; log sequence number 1595675140730 4:49:06 [Note] mysqld: Shutdown complete

解决错误

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

root@1bbeb34f3491:/# mysql_upgrade

Looking for 'mysql' as: mysql

Looking for 'mysqlcheck' as: mysqlcheck

FATAL ERROR: Upgrade failed

  • “您是否已经在套接字上运行了另一个 mysqld 服务器”=> 没有。运行 service 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。

我不太确定该解释什么,因为这个问题对我来说似乎很奇怪。如果有任何我遗漏的内容,请询问,我会为您添加。

谢谢,詹姆斯·斯图威

最佳答案

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

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

关于mysql - 在 Docker 容器中运行 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com