Docker入門第九章

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!

# 即使將容器刪除,主機的數據也是不會丟失的!這就實現容器數據持久化功能!