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! # 即使將容器刪除,主機的資料也是不會丟失的!這就實現容器資料持久化功能!