1. 程式人生 > 其它 >idea破解 監聽地址

idea破解 監聽地址

容器資料卷

一、什麼是容器資料卷

我們知道,docker是把應用和環境一起打包成一個映象釋出出去。如果我們的資料都在容器中,那麼我們把容器刪除之後,資料就會丟失。所以我們想要資料持久化。假如我們搞了個MySQL容器,如果一不小心將MySQL容器刪除了,就會很危險。所以我們需要MySQL的資料可以儲存在本地。於是基於上述兩種需求,我們就出現了容器資料卷的技術,容器之間有一個數據共享的技術。docker容器產生的資料同步到本地。說白了就是目錄的掛載,將我們容器的目錄掛載到Linux上面。

二、使用資料卷

方式一:直接使用命令來掛載  -v

命令

docker run -it -v 宿主機目錄:容器內目錄

測試

docker run -it -v /home/ceshi:/home centos /bin/bash
docker ps     # 檢視容器id
docker inspect 87e46c7dd4df

測試檔案的同步

再來測試

停止容器,在宿主機修改檔案,就算容器內關閉了,也會同步修改

修改宿主機上的檔案

再次啟動centos映象檢視檔案是否改變

好處:我們以後修改只需要在本地修改即可,容器內會自動同步!

三、實戰MySQL資料同步

思考:MySQL的資料持久化的問題!

1、獲取映象

docker search mysql       # 搜尋MySQL

docker pull mysql:
5.7 # 拉取MySQL5.7

2、執行容器,需要做資料掛載! 安裝啟動mysql 需要配置密碼

官方測試: docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

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

-d 後臺執行
-p 埠對映
-v 卷掛載 可配置多個 -v
-e 環境配置
--name 容器名字

測試連線(Navicat)

在本地測試建立一個test資料庫,在本地檢視是否存在。

即使容器刪除,宿主機資料依舊存在,這就實現了容器資料持久化功能!

四、具名和匿名掛載

1、匿名掛載

-v 容器內路徑!

docker run -d -P --name nginx01 -v /etc/nginx nginx

docker volume ls             # 檢視所有的 volume 的情況

2、具名掛載

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx         # -v 容器內路徑

檢視宿主機

docker 容器中所有的卷,在沒有指定目錄的情況下,都在"var/lib/docker/volumes/xxxxx/_data"

我們可以通過具名掛載找到卷的位置,大多數情況下,我們使用具名掛載

關於docker的掛載問題,有三個比較容易混淆的概念: (區分的方式)

(1)具名掛載:-v 引數 卷名:容器內路徑
(2)匿名掛載:-v 引數後面 沒有寫上容器之外的地址, docker 自己會在docker內部給你找個位置
(3)指定路徑掛載: -v /宿主機路徑::容器內路徑

拓展:

-v 容器內路徑:ro/rw 改變讀寫許可權

ro  readonly     # 只讀
rw  readwrite    # 可讀可寫

設定許可權之後,容器對我們掛載出來的內容就有限定(只能通過宿主機改變,容器內部無法改變)

例:
docker run -d  -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx        # 只能通過宿主機操作,容器內無法操作
docker run -d  -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx