mysql docker容器首次运行后存储密码

krugob8w  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(306)

到目前为止,我与docker的所有经验使我相信容器是无状态的。
如果是这样的话,为什么我的容器会存储我在第一次运行后更改的密码呢?如果我没有指定卷或绑定挂载的话?我尤其感到困惑,因为我对dbms所做的其他编辑(比如创建表)都不会持久。
其他详细信息:
版本:
1docker-18.09.0内部版本4d60db4
2图片-mysql/mysql-server:latest
命令:
1 $ docker run --name=sql -d mysql/mysql-server:latest 2 $ docker logs sql 2>&1 | grep GENERATED 获取第一次登录时生成的密码
三。 $ docker exec -it sql mysql -uroot -p 4 mysql> Enter Password: <generated password> 5 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'stkoverflw'; 6 mysql> exit 7 $ docker stop sql 8 $ docker start sql 9 $ docker exec -it sql mysql -uroot -p 10 mysql> Enter Password: <stkoverflw> 密码配置如何在容器的重新启动期间保持?

juud5qan

juud5qan1#

容器不是无状态的。容器很容易创建和销毁,因此它们可以用来运行无状态的服务,但每个容器本身都是有状态的。
当容器运行时,存在一个包含其根文件系统的卷。你不必告诉docker去创建它。docker必须创建它,否则容器的文件会去哪里?
当你说 docker stop ,容器停止运行但未被销毁。当你说 docker start ,相同的容器使用相同的根卷恢复。这就是更改后的密码持续存在的地方。容器中运行的进程已停止,新进程已启动(因此内存中保存的状态将丢失),但文件系统仍然存在。
要除去容器(包括更改的密码),请说 docker rm . 那你可以说 docker run 从头开始。

相关问题