如何执行mariadb的映像?

e7arh2l6  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(318)

几天前,我看到自己不得不在已经有mysql的pc上安装mariadb,多亏了docker,我成功地安装了这两个示例。我遵循这个出版物,并设法安装了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 user suggestion,我显示了执行命令的结果 `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

事先谢谢你的帮助

taor4pac

taor4pac1#

docker run 每次创建一个新容器。
所以,当你试图用运行这个来恢复旧容器时, docker run -e MYSQL_ROOT_PASSWORD=somepassword -p 127.0.0.1:3311:3306 -d mariadb:10.2.10 它实际上是在创建一个新容器。
因此,您的解决方案是:
请确保存在名为的上一个容器 mariadb-10.2.10-container (正如您在第一个命令中为此命名的容器)。
如果您看到 docker ps -a | grep mariadb ,那就是我们要找的古代容器!
现在,我们必须重新启动它。但在那之前我们需要阻止集装箱 48041cc27494 ,因为它正在监听 127.0.0.1:3311 . 快跑, docker stop 48041cc27494 . 应该成功停止。
现在开始 ancient 集装箱!你也可以跑 docker start 0fba8554b87f 或者 docker start $(docker ps -a -q -f name=mariadb-10.2.10-container) . 这两个命令中的任何一个都应该恢复容器。你的旧数据应该在那里。现在你可以像以前一样连接到它。
此外,您应该添加 restart 此容器的策略,这样您就不必每次停止时都重新启动它。
了解如何自动启动容器
由于您的容器已经创建,您应该用 docker container update 命令。参见doc docker容器更新。

相关问题