我按照官方指南 docker mysql getting started使用 docker 安装了 mysql8
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=xxx -d mysql:8.0
我注意到以下现象:
- 我没有
-v
在docker run
命令中使用volume,但是在stop and start之后,我可以看到我添加的数据库和数据还在。(我在教程中发现重启容器后没有体积规格数据会丢失) - root 用户没有
'%'
允许的域,但它可以以某种方式登录 mysql 服务器,如下所示:
docker exec -it mysql8 mysql -uroot -p
主机服务器与mysql服务器在同一个域中吗?
- 虽然我可以使用 root 帐户在主机中登录 mysql,并且我在主机
pwd
文件夹中有一个 some.sql 文件,但我无法source some.sql
在 mysql cli 中运行。我认为这是因为它们不在同一个域中,并且 mysql 在其容器中看不到 some.sql 文件。
请帮忙解释以上3项。谢谢。
数据将在容器重新启动后保留下来,但在删除和重新创建时不会保留。音量不会受到它的影响。
您正在容器中执行该命令,而不是在主机上,因此从 MySQL 服务器的角度来看,连接来自
localhost
. 您可以使用mysql
安装在主机或另一个容器中的客户端来建立连接,但这是行不通的。那是无关紧要的。
这是现场。容器与主机隔离。它无法访问其文件系统。这就是容器化的重点:您希望东西与主机隔离运行,并且不影响它。
您可以使用卷 (
-v /some/dir/on/host:/some/dir/in/container
)共享文件或目录,也可以使用docker cp
.