【问题标题】:How to execute an image of mariadb?如何执行mariadb的图像?
【发布时间】:2018-09-24 03:26:11
【问题描述】:

几天前,我看到自己不得不在已经安装了 mysql 的电脑上安装 mariadb,感谢 docker,我设法拥有了这两个实例。我关注了这个publication 并设法安装了 docker 和一个图像。

docker run --name mariadb-10.2.10-container -e MYSQL_ROOT_PASSWORD=somepassword -p 127.0.0.1:3311:3306 -d mariadb:10.2.10

电脑没有关机,直到今天突然报错,需要重启。

因为我以前没有任何 docker 经验,现在我尝试启动容器我没有实现它。

我分享我的尝试

docker images返回这个

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.5                 0da48351c371        4 weeks ago         205MB
mariadb             10.2.10             abcee1d29aac        4 months ago        396MB

当我尝试时

docker run -e MYSQL_ROOT_PASSWORD=somepassword -p 127.0.0.1:3311:3306 -d mariadb:10.2.10

在此之后,我希望通过端口 3311 连接到 Mariadb,因此我在事件发生前处理了我的应用程序。现在容器正在运行,但他似乎没有监听 3311 端口,因为我无法从应用程序或 MySQL 客户端进行连接。

docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
48041cc27494        mariadb:10.2.10     "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        127.0.0.1:3311->3306/tcp   heuristic_shaw

现在我成功连接,发现问题是数据库不存在

我丢失了我的数据库?,如果是这样,有没有办法恢复它?我做错了什么?

根据 SO 用户的建议,我显示了执行命令 docker ps -a | grep mariadb 的结果

48041cc27494        mariadb:10.2.10     "docker-entrypoint.s…"   About an hour ago   Up About an hour               127.0.0.1:3311->3306/tcp   heuristic_shaw
3af4187383a9        mariadb:10.2.10     "docker-entrypoint.s…"   About an hour ago   Exited (1) About an hour ago                              amazing_stonebraker
f1873e7b117c        mariadb:10.2.10     "docker-entrypoint.s…"   About an hour ago   Exited (1) About an hour ago                              confident_mayer
7d1d1fc27cf0        mariadb:10.2.10     "docker-entrypoint.s…"   About an hour ago   Exited (0) About an hour ago                              admiring_mendeleev
0a828a6ad5f4        mariadb:10.2.10     "docker-entrypoint.s…"   About an hour ago   Exited (1) About an hour ago                              tender_yonath
4802f926ef5d        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    wizardly_mcnulty
673898d10840        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    elated_banach
d444e40e5ccc        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (0) 2 hours ago                                    elated_cori
49fa7950e262        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (0) 2 hours ago                                    gifted_engelbart
987d5e8c80db        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    festive_boyd
6b30e16a91bf        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    wizardly_edison
3aea221c1477        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (0) 2 hours ago                                    inspiring_mcnulty
5e95beb0b4d4        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    sad_hoover
21f9df586582        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    goofy_archimedes
93b6c5db2178        mariadb:10.2.10     "docker-entrypoint.s…"   2 hours ago         Exited (1) 2 hours ago                                    sad_fermi
0fba8554b87f        mariadb:10.2.10     "docker-entrypoint.s…"   4 days ago          Exited (255) 2 hours ago       127.0.0.1:3311->3306/tcp   mariadb-10.2.10-container

提前感谢您的帮助

【问题讨论】:

  • 你能运行这个命令(检查旧容器是否仍然存在)并向我们展示输出吗? docker ps -a | grep mariadb
  • 感谢您的回答,这是一个非常广泛的结果,我把它放在了问题中

标签: mysql docker mariadb


【解决方案1】:

docker run 每次都会创建一个新容器。

因此,当您尝试通过运行它来恢复旧容器时, docker run -e MYSQL_ROOT_PASSWORD=somepassword -p 127.0.0.1:3311:3306 -d mariadb:10.2.10

它实际上是在创建一个新容器。

所以,你的解决方法是:

  1. 确保前一个容器存在,名称为 mariadb-10.2.10-container(因为您在第一个命令中将容器命名为该容器)。

如果您看到docker ps -a | grep mariadb 的输出的最后一行,那就是我们正在寻找的古代容器!

  1. 现在,我们必须重新启动它。但在此之前我们需要停止容器48041cc27494,因为它正在监听127.0.0.1:3311。运行,docker stop 48041cc27494。它应该成功停止。

  2. 现在启动ancient 容器!您可以运行docker start 0fba8554b87fdocker start $(docker ps -a -q -f name=mariadb-10.2.10-container)。这两个命令中的任何一个都应该恢复您的容器。你的旧数据应该在那里。现在您可以像以前一样连接到它了。

此外,您应该为此容器添加restart 策略,这样您就不需要在每次停止时都重新启动。

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2021-09-20
    • 2019-03-05
    • 2018-07-26
    • 2017-01-12
    • 2020-09-03
    • 2020-01-08
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多