gpt4 book ai didi

MySQL Docker 容器在首次运行后存储密码

转载 作者:行者123 更新时间:2023-12-02 04:26:58 25 4
gpt4 key购买 nike

到目前为止,我对 Docker 的所有体验让我相信容器是无状态的。

如果是这样,如果我在没有指定卷或绑定(bind)安装的情况下启动它,为什么我的容器会存储我在第一次运行后更改的密码?我特别困惑,因为我对 dbms 所做的其他编辑都没有持久化(比如创建表)。

其他详细信息:
版本:
1. Docker - 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获取首次登录生成的密码
3. $ 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>

密码配置如何在容器重启后保持不变?

最佳答案

容器不是无状态的。容器易于创建和销毁,因此它们可用于运行无状态的服务,但每个容器本身都是有状态的。

当容器运行时,有一个包含其根文件系统的卷。您不必告诉 Docker 来创建它。 Docker 必须创建它,否则容器的文件会去哪里?

当您说 docker stop 时,容器会停止运行但不会被销毁。当您说 docker start 时,同一个容器会恢复到同一个根卷。这就是更改后的密码持续存在的地方。在容器中运行的进程已停止并启动了一个新进程(因此内存中保存的状态将丢失),但文件系统仍然存在。

要删除容器(包括更改后的密码),请说 docker rm。然后你可以说 docker run 从头开始​​。

关于MySQL Docker 容器在首次运行后存储密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53549164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com