使用Docker啟動MySQL容器可以方便快捷地搭建開發環境,但是有些人可能會遇到突然關閉容器后再次啟動時數據丟失的問題。這是因為,在默認情況下,Docker MySQL容器是使用容器存儲來保存數據的。
當容器關閉時,容器存儲也會被刪除,從而導致數據的丟失。為了解決這個問題,我們可以使用“docker volume”命令將MySQL數據保存到宿主機上的一個獨立卷中。
$ docker volume create my-mysql-data
$ docker run -p 3306:3306 --name mysql \
-v my-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d mysql:latest
在這個例子中,我們創建了一個名為“my-mysql-data”的卷,并將其掛載到MySQL容器的“/var/lib/mysql”目錄下。此外,我們還通過定義“MYSQL_ROOT_PASSWORD”環境變量來設置了MySQL數據庫的根密碼。
現在,當我們啟動/停止該容器時,不會丟失MySQL數據,因為數據仍然存在于“my-mysql-data”卷中。如果我們想保留該卷以便后續使用,則可以使用以下命令:
$ docker volume prune -f
這將刪除未使用的數據卷,但不會刪除我們剛剛創建的“my-mysql-data”卷。