簡體   English   中英

MySQL Docker 容器在首次運行后存儲密碼

[英]MySQL Docker Container storing password after first run

到目前為止,我使用 Docker 的所有經驗都讓我相信容器是無狀態的。

如果是這樣,如果我在沒有指定卷或綁定安裝的情況下啟動它,為什么我的容器會存儲我在第一次運行后更改的密碼? 我特別困惑,因為我對 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 $ 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';
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從頭開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM