最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)

 更新時(shí)間:2022年03月26日 10:22:44   作者:.NET開(kāi)發(fā)菜鳥  
這篇文章介紹了Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、前言

我們知道,鏡像是只讀的,容器是在鏡像的基礎(chǔ)上加了一層讀寫層,這樣容器就可以寫了。既然容器可以進(jìn)行寫入了,那么我們就可以把一些數(shù)據(jù)放進(jìn)容器里面。但是這樣會(huì)有一種問(wèn)題:如果容器被刪除了,那么容器里面的數(shù)據(jù)也將會(huì)被刪除。這該怎么解決呢?這時(shí)我們就可以使用Volume來(lái)解決這種問(wèn)題。

二、volume

1、什么是volume

我們先來(lái)考慮這樣一個(gè)問(wèn)題:如何把源代碼放進(jìn)容器里面

  • 可以在制作鏡像時(shí)直接把源代碼嵌入里面。(不考慮這種方式)
  • 把源代碼掛載到容器的可讀寫層。

那么什么是Volume呢?

  • Volume(卷)是容器中一個(gè)特別種類的目錄,通常叫做數(shù)據(jù)volume,顧名思義,里面可以放置各種類型的數(shù)據(jù),例如代碼、日志文件、數(shù)據(jù)文件等等。
  • Volume可以在容器間被共享和復(fù)用??梢宰尪鄠€(gè)容器對(duì)同一個(gè)volume進(jìn)行讀寫,也可以讓一個(gè)容器讀寫多個(gè)volume。
  • 對(duì)鏡像的更新并不會(huì)影響volume。
  • Volume是被持久化的,即使容器被刪除,它仍然存在。

我們可以用下面的一張圖來(lái)理解Volume

藍(lán)色的部分表示容器,淺綠色的部分表示volume??梢栽谌萜骼锩娑x一個(gè)Volume,在容器里面的路徑定義為/var/www,這里的路徑是任意的。如果我們想把源代碼寫到/var/www路徑里面,這個(gè)路徑不應(yīng)該是在容器里面,應(yīng)該是在容器外部,否則容器被刪除了,里面的數(shù)據(jù)也就隨之被刪除。

在來(lái)看下面一張圖

在上圖中,我們?cè)谌萜骼锩娴?var/www路徑里面寫入了一些東西,而這個(gè)路徑就是Docker宿主里面掛載的一個(gè)文件夾。我們用上面的截圖來(lái)說(shuō)明,容器里面的/var/www的路徑就是對(duì)于的docker宿主里面的/mnt路徑,這個(gè)路徑也是可以自定義的。 如果使用的是Linux操作系統(tǒng)或者Windows Server2016及以上版本的操作系統(tǒng),這里的Docker宿主機(jī)就是操作系統(tǒng)。而在Windows10上面,其實(shí)是使用的一個(gè)Linux的虛擬機(jī),這時(shí)的Docker宿主機(jī)是Linux虛擬機(jī)。

我們往容器的/var/www路徑里面寫入東西,其實(shí)是寫入到了Docker宿主的/mnt路徑下面,這樣即使把容器刪除掉了,數(shù)據(jù)還是會(huì)保存在Docker的宿主里面。除非docker宿主機(jī)的文件也被刪除了,否則數(shù)據(jù)就會(huì)一直存在。

看下面的一個(gè)例子

docker run --name=nginx -d -p 4030:80 -v /var/www nginx

對(duì)上面命令的解釋:

  • -v:表示在容器里面創(chuàng)建一個(gè)volume。指定容器里面創(chuàng)建的volume路徑是/var/www,也就是路徑的別名。這里沒(méi)有指定docker宿主機(jī)里面的路徑,docker就會(huì)在宿主機(jī)里面自動(dòng)指定一個(gè)路徑

如圖所示

我們看到這個(gè)容器已經(jīng)在運(yùn)行了。我們使用inspect命令查看容器信息

docker inspect nginx

這里使用的是容器名稱,也可以使用容器ID。

我們查看Mounts節(jié)點(diǎn)信息

在這個(gè)節(jié)點(diǎn)里面,我們可以看到容器里面的地址和Docker宿主機(jī)里面的地址。

我們進(jìn)入Docker宿主機(jī)的目錄查看

在docker的宿主機(jī)里面就可以看到自動(dòng)生成的路徑了。

上面的例子中,我們是使用的Docker自動(dòng)生成的路徑,我們還可以自定義寫入路徑。

我們?cè)赿emo目錄下面創(chuàng)建一個(gè)MyVolumn目錄,然后把容器里面的路徑指定到創(chuàng)建的MyVolumn目錄

然后在執(zhí)行下面的命令

docker run --name=nginx -d -p 4030:80 -v /demo/MyVolumn:/var/www nginx

對(duì)上面命令的解釋如下

  • /demo/MyVolumn:表示Docker宿主機(jī)定義的目錄。
  • /var/www:表示容器里面的目錄。

如圖所示

我們?cè)谑褂胕nspect命令查看

查看Mounts節(jié)點(diǎn)

這里就是我們自定義的路徑了。

2、寫入操作

上面的兩個(gè)例子中都沒(méi)有數(shù)據(jù)寫入操作,我們只看到生成了路徑,不能知道路徑下面有沒(méi)有數(shù)據(jù)生成。下面看一個(gè)有寫入操作的例子,通過(guò)這個(gè)例子,我們可以更直觀地明白volume的作用。

我們使用VS2019創(chuàng)建一個(gè)ASP.NET Core MVC項(xiàng)目,然后在Program的Main方法里面寫日志

using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace VolumnDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // 寫文件,模擬寫入功能
            using(StreamWriter sw=new StreamWriter(@"/var/www/text.txt",true))
            {
                sw.WriteLine("test");
                sw.Close();
            }
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

然后添加Dockerfile文件,項(xiàng)目在本地發(fā)布之后拷貝到Linux服務(wù)器上面。這里不在演示。

我們創(chuàng)建一個(gè)VolumnDemo目錄

然后把剛才的項(xiàng)目拷貝到這個(gè)目錄下面

使用下面的命令來(lái)構(gòu)建一個(gè)鏡像

docker build -t volumndemo .

如圖所示

鏡像構(gòu)建成功以后運(yùn)行容器,volume目錄指向MyVolumn目錄

docker run --name=volumndemo -d -p 9020:80 -v /demo/MyVolumn:/var/www volumndemo

如圖所示

然后我們?cè)跒g覽器里面訪問(wèn)9020端口

查看/demo/MyVolumn目錄里面有沒(méi)有文件生成

可以看到生成了text.txt文件。然后查看文件內(nèi)容

我們?cè)谶M(jìn)入容器里面查看/var/www目錄下面有沒(méi)有文件生成

可以看到,www目錄下面也有了text.txt文件生成。這個(gè)路徑是在隱藏目錄里面,所以要使用ls -a命令查看所有的目錄,包括隱藏目錄。

我們查看text.txt文件內(nèi)容

這樣就實(shí)現(xiàn)了容器里面的目錄和docker宿主機(jī)目錄的映射。 可以保證數(shù)據(jù)不丟失。

到此這篇關(guān)于Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker?中?MySQL?的部署與管理技巧

    Docker?中?MySQL?的部署與管理技巧

    這篇文章主要介紹了Docker?中?MySQL?的部署與管理技巧,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Docker 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址

    Docker 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址

    這篇文章主要介紹了Docker 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn)

    Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn)

    Docker的端口映射和容器互聯(lián)是構(gòu)建和管理微服務(wù)架構(gòu)時(shí)重要的概念,本文主要介紹了Docker 端口映射與容器互聯(lián)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • linux環(huán)境部署及docker安裝redis的方法

    linux環(huán)境部署及docker安裝redis的方法

    這篇文章主要介紹了linux環(huán)境部署及docker安裝redis的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Docker拉取鏡像過(guò)慢或卡死的解決方法(親測(cè)有效)

    Docker拉取鏡像過(guò)慢或卡死的解決方法(親測(cè)有效)

    本文主要介紹了Docker拉取鏡像過(guò)慢或卡死的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Docker一鍵部署SpringBoot項(xiàng)目的多種方式

    Docker一鍵部署SpringBoot項(xiàng)目的多種方式

    這篇文章主要介紹了Docker一鍵部署SpringBoot項(xiàng)目的多種方式,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • Dockerfile與.gitlab-ci.yml的關(guān)系以及構(gòu)建自動(dòng)化鏡像方式

    Dockerfile與.gitlab-ci.yml的關(guān)系以及構(gòu)建自動(dòng)化鏡像方式

    GitLabCI/CDPipeline中構(gòu)建Docker鏡像的步驟如下:1.了解Dockerfile和.gitlab-ci.yml之間的關(guān)系;2.定義構(gòu)建Docker鏡像的階段;3.在階段中調(diào)用Dockerfile來(lái)構(gòu)建鏡像
    2024-11-11
  • Docker構(gòu)建pinpoint部署的方法

    Docker構(gòu)建pinpoint部署的方法

    這篇文章主要介紹了Docker構(gòu)建pinpoint部署的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Docker容器無(wú)法停止刪除的解決方案

    Docker容器無(wú)法停止刪除的解決方案

    這篇文章主要介紹了Docker容器無(wú)法停止刪除的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Docker如何掛載mysql

    Docker如何掛載mysql

    這篇文章主要介紹了Docker如何掛載mysql問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

阳朔县| 清水河县| 神木县| 类乌齐县| 炎陵县| 沅陵县| 河北区| 晋中市| 平舆县| 罗甸县| 徐水县| 同江市| 马公市| 区。| 武安市| 响水县| 望江县| 黑河市| 高尔夫| 甘孜县| 洪江市| 阜城县| 綦江县| 海口市| 凤阳县| 宁夏| 青海省| 永胜县| 交口县| 巴中市| 龙海市| 邢台市| 禹城市| 娱乐| 孟州市| 张掖市| 通海县| 汉中市| 安吉县| 昆明市| 喀喇|