几天前,我看到自己不得不在已经有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
事先谢谢你的帮助
1条答案
按热度按时间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容器更新。