前几天我看到自己处于必须在我的电脑上安装mariadb已经拥有mysql的阶段,我设法让这两个实例都归功于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
提前感谢您的帮助
答案 0 :(得分:1)
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
命令更新它。请参阅文档docker container update。