docker小白入門(三)—— docker數據卷,即docker容器的數據持久化與掛載

個人理解,數據卷是一個遊離在docker之外的東西,他能持久化保存web項目上傳的文件、圖片、甚至是頁面等;同時,因爲訪問的是docker容器之外的文件,所以也可以做到及時更新、文件共享、不影響原鏡像、不會被docker刪除等一系列“優點”;
數據卷的概念讓我對docker有了一絲“懷疑”,但我有說不出問題點在哪…

掛載執行命令(docker -v)

下面是一個目錄結構的截圖,不涉及docker知識 ↓
在這裏插入圖片描述
如圖,我在根目錄下創建了“docker-v”文件夾(中間沒有空格),在文件夾中創建ROOT子文件夾,ROOT中只有一個index.html,內容是“Hello Docker -v ! ”;

現在,在啓動鏡像生成容器的時候,將項目指到容器中,所以,執行過程是在run命令下的

docker run --name tomcat -p 8080:8080 -d -v /docker-v/ROOT:/usr/local/tomcat/webapps/ROOT tomcat
docker run --name tomcat1 -p 8081:8080 -d -v /docker-v/ROOT:/usr/local/tomcat/webapps/ROOT tomcat

這就啓動了兩個容器,-v後面的參數,左邊是宿主機目錄(linux目錄),右邊是容器目錄,中間用冒號分割,不加空格;
含義是啓動了一個名字爲tomcat的鏡像,兩個容器將本身容器中的ROOT目錄替換爲了linux中的ROOT文件夾;

如果報錯沒有權限,如圖所示
在這裏插入圖片描述
在執行run命令的時候加上 --privileged=true 參數,即

docker run -d -p 8081:8080 -v /docker-v/ROOT:/usr/local/tomcat/webapps/ROOT --privileged=true  mydocker

以上是數據卷的內容,那將數據持久化其實就是將mysql或其他數據庫以數據卷的形式部署,以達到數據持久化的目的。

下面我將以mysql爲例再次說明掛載功能

安裝MySQL

docker pull mysql 5.7.22

運行容器化的MySQL

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22

在這裏插入圖片描述

注意:
MySQL搭好之後,有一個比較坑的限制,就是執行sql的時候不能超過1M,這個時候要更改MySQL的配置文件,/etc/mysql/mysql.conf.d/mysqld.cnf,追加一行“max_allowed_packet= 128M”

我們拷貝出mysql的配置文件到宿主機,然後就可以把宿主機當數據捲來公用數據庫

docker cp mysql:/etc/mysql .

注意後面一個點意味着當前文件夾,移動內容到上級目錄

mv *.* ..

這個時候我們可以用數據捲來“創建”數據庫

查看日誌

docker logs mydocker

監控日誌變化(類似 tail -f catalina.out)

docker logs -f mydocker
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章