溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker中數(shù)據(jù)持久化是什么樣的

發(fā)布時(shí)間:2021-10-19 17:55:45 來源:億速云 閱讀:116 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了docker中數(shù)據(jù)持久化是什么樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

  • 方式一 (bind moumting)

先看一個(gè)Nginx dockerfile

FROM nginx
WORKDIR /usr/nginx/html
COPY index.html index.html

我們想吧容器里的工作目錄掛載到我們 服務(wù)器 的數(shù)據(jù)卷上,以免容器刪除后數(shù)據(jù)丟失。

  •     首先我們build dockerfile成一個(gè)image 取名為 saniii/my-nginx-mount

docker build -t saniii/my-nginx-mount .

docker中數(shù)據(jù)持久化是什么樣的

  • 運(yùn)行容器

docker run -d -p 3331:80 -v $(pwd):/usr/nginx/html --name nginx1 saniii/my-nginx-mount

-d 后臺(tái)運(yùn)行

-p 綁定主機(jī)端口到容器端口 3331:表示服務(wù)器的端口 :80 表示容器里的端口


-v 數(shù)據(jù)綁定 $(pwd) 代表當(dāng)前路徑 :/usr/nginx/html 為要綁定的容器里的路徑 

 --name  容器命名為 nginx 1 

 saniii/my-nginx-mount 運(yùn)行的容器名

docker中數(shù)據(jù)持久化是什么樣的

  • 看下數(shù)據(jù)有沒有綁定成功

docker exec -it nginx1 /bin/bash

交互式運(yùn)行容器

我們?cè)谌萜骼飫?chuàng)建一個(gè)文件,退出

docker中數(shù)據(jù)持久化是什么樣的

  • 方式二(Volume)

我們可以在dockerfile中定義我們數(shù)據(jù)的在容器中的持久化路徑

https://github.com/docker-library/mysql/blob/9d1f62552b5dcf25d3102f14eb82b579ce9f4a26/5.7/Dockerfile

上面是 mysql 官方dockerfile中的最佳實(shí)踐 mysql在容器中運(yùn)行的時(shí)候數(shù)據(jù)持久化在以下的路徑

命令
  
  sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7


-v 數(shù)據(jù)綁定 將我們數(shù)據(jù)volume命名為mysql   /var/lib/mysql容器中數(shù)據(jù)卷的路徑  -e MYSQL_ALLOW_EMPTY_PASSWORD=true 設(shè)置mysql無密碼

docker中數(shù)據(jù)持久化是什么樣的

正在運(yùn)行的Volume
  
  docker volume ls
查看Volume在主機(jī)上的持久化地址

docker volume inspect mysql

docker中數(shù)據(jù)持久化是什么樣的

驗(yàn)證數(shù)據(jù)有沒有成功持久化

交互式運(yùn)行容器
	docker exec -it mysql1 /bin/bash

登錄mysql 查看數(shù)據(jù)庫 mysql -uroot -hlocalhost -p

我們創(chuàng)建一個(gè)數(shù)據(jù)庫

docker中數(shù)據(jù)持久化是什么樣的

退出容器并刪除。

docker rm -f mysql1
	 -f 強(qiáng)制刪除正在運(yùn)行的容器

我們?cè)賳?dòng)一個(gè)mysql容器,使用之前的Volume mysql

sudo docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7

docker中數(shù)據(jù)持久化是什么樣的

我們發(fā)現(xiàn)數(shù)據(jù)還是存在的。

這樣我們就可以做到數(shù)據(jù)的持久化了。

上述內(nèi)容就是docker中數(shù)據(jù)持久化是什么樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI