Commit映象
docker commit 提交容器成為一個新的副本
# 命令和git原理類似
docker commit -m="提交的描述資訊" -a="作者" 容器id 目標映象名:[TAG]
實戰測試
# 1.啟動一個預設的Tomcat
# 2.發現這個預設的tomcta 是沒有webapps應用,映象的原因,官方的映象預設webapps下面是沒有檔案的
# 進入Tomcat容器 cp -r webapps.dist/* webapps
# 3.將容器中的webapps.dist資料夾下面的檔案copy到webapps下
# 4.將我們操作過的容器通過commit提交為一個映象!我們以後就是用我們修改過的映象即可,這就是我們自己修改的映象
如果你想要儲存當前容器的狀態,就可以通過commit來提交,獲得一個映象類似於VM的快照!
容器資料卷的使用
docker的理念回想:
將應用和環境打包成一個映象!資料?如果資料都在容器中,那麼我們容器刪除,資料就會丟失!需求:資料可以持久化
Mysql,容器刪了,刪庫跑路!需求:Mysql資料可以儲存在本地!
容器之間可以有一個數據共享的技術!Docker容器中產生的資料,同步到本地!
這就是卷技術!目錄的掛載,將我們容器內的目錄,掛載到Linux上面!
使用資料卷
方式一:直接使用命令來掛載 -v
docker run -it -v 主機目錄:容器目錄
# 測試
docker run -it /home/ceshi:/home centos /bin/bash
#啟動起來時候我們可以通過 docker inspect 容器id
測試檔案的同步
可以看到在容器中的/home目錄中建立lvshihao.txt檔案後,在主機上的/home/ceshi問價夾中也同步了lvshihao.txt檔案
然後咱們把容器關掉,在主機上建立一個hello.txt檔案,然後啟動容器,可以看到容器的/home目錄中也同步了主機建立的hello.txt檔案
好處:我們以後修改只需要在本地修改即可,容器內會自動同步!
實戰:Mysql同步資料
思考:MySQL的資料持久化的問題!
# 獲取映象
docker pull mysql:5.7
# 執行容器 需要做資料掛載 # 安裝啟動mysql ,需要配置密碼的,這是要注意點!
# 官方測試。docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysql密碼 -d mysql:tag
# 啟動我們的
-d 後臺執行
-p 埠對映
-v 卷掛載
-e 環境配置
--name 容器名稱
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
# 啟動成功之後,我們在本地使用 navicat 來測試一下
# 連線伺服器的3310埠
# 在本地測試建立一個數據庫,檢視一下我們對映的路徑是否OK!
# 即使將容器刪除,主機的資料也是不會丟失的!這就實現容器資料持久化功能!