欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

數(shù)據(jù)卷(Data Volumes)及dockefile詳解

 更新時(shí)間:2023年01月04日 10:00:38   作者:天蝎座的程序媛  
在生產(chǎn)環(huán)境中使用Docker,往往需要對數(shù)據(jù)進(jìn)行持久化,或者需要在多個(gè)容器之間進(jìn)行數(shù)據(jù)共享,這必然涉及容器的數(shù)據(jù)管理操作,今天給大家介紹下數(shù)據(jù)卷(Data Volumes)及dockefile的相關(guān)知識,感興趣的朋友一起看看吧

1、Docker 數(shù)據(jù)管理

在生產(chǎn)環(huán)境中使用 Docker ,往往需要對數(shù)據(jù)進(jìn)行持久化,或者需要在多個(gè)容器之間進(jìn)行數(shù)據(jù)共享,這必然涉及容器的數(shù)據(jù)管理操作

容器中的管理數(shù)據(jù)主要有兩種方式:
數(shù)據(jù)卷 Data Volumes 容器內(nèi)數(shù)據(jù)直接映射到本地主機(jī)環(huán)境;
數(shù)據(jù)卷容器(Data Volume Containers 使用特定容器維護(hù)數(shù)據(jù)卷

注1:上章節(jié)還介紹過cp命令在宿主機(jī)和docker容器之間復(fù)制文件
        docker cp 宿主機(jī)絕對路徑  容器id:路徑

2、數(shù)據(jù)卷(Data Volumes)

數(shù)據(jù)卷是一個(gè)可供一個(gè)或多個(gè)容器使用的特殊目錄,它將主機(jī)操作系統(tǒng)目錄直接映射進(jìn)容器,它可以提供很多有用的特性:
   1.數(shù)據(jù)卷 可以在容器之間共享和重用
   2.對數(shù)據(jù)卷的修改會(huì)立馬生效
   3.對數(shù)據(jù)卷的更新,不會(huì)影響鏡像
   4.數(shù)據(jù)卷 默認(rèn)會(huì)一直存在,即使容器被刪除

 

數(shù)據(jù)卷相關(guān)操作:

2.1.創(chuàng)建數(shù)據(jù)卷

docker volume create my-vol

 此時(shí),數(shù)據(jù)卷默認(rèn)會(huì)放到/var/lib/docker/volumes路徑下,會(huì)發(fā)現(xiàn)所新建的數(shù)據(jù)卷位置,查看命令如下:

 ## 參數(shù)可以為數(shù)字“1”,字母L:大小寫均可,但效果不一樣 
     ls -1 /var/lib/docker/volumes

2.2.查看所有的數(shù)據(jù)卷

docker volume ls

2.3.查看指定數(shù)據(jù)卷的詳細(xì)信息(顯示一個(gè)JSON格式的數(shù)據(jù))

docker volume inspect my-vol 

2.4.刪除一個(gè)volume

docker volume rm my-vol

注1:數(shù)據(jù)卷 是被設(shè)計(jì)用來持久化數(shù)據(jù)的,它的生命周期獨(dú)立于容器,Docker不會(huì)在容器被刪除后自動(dòng)刪除數(shù)據(jù)卷,并且也不存在垃圾回收這樣的機(jī)制來處理沒有任何容器引用的數(shù)據(jù)卷,無主的數(shù)據(jù)卷可能會(huì)占據(jù)很多空間,所以要及時(shí)刪除

## 掛載數(shù)據(jù)卷,最好是通過run而非create/start創(chuàng)建啟動(dòng)容器
## create/start命令創(chuàng)建啟動(dòng)容器后,再掛載數(shù)據(jù)卷相當(dāng)麻煩,要修改很多配置文件,但并非不可以

2.5.啟動(dòng)一個(gè)掛載數(shù)據(jù)卷的容器

## demo1
     docker run -d \
       -it \
       --name tomcat01 \
       --mount source=my-vol,target=/webapp \
       centos:latest
 ## demo2
     docker run -d \
       -it \
       --name tomcat02 \
       --mount type=bind,source=/root/webapp02,target=/root/webapp02 \
       centos:latest        

注1:linux命令結(jié)尾加斜杠有什么用
          加了“\”意為將最后的回車換行給注釋了,系統(tǒng)理解為命令還沒有結(jié)束,因而是繼續(xù)等待用戶進(jìn)行輸入,直到讀到結(jié)束符,如回車

 注2:source=my-vol,target=/webapp
          my-vol為要掛載的數(shù)據(jù)卷,如果數(shù)據(jù)卷不存在,docker會(huì)自動(dòng)創(chuàng)建
          /webapp為容器上目錄,如果目錄不存在, Docker會(huì)自動(dòng)創(chuàng)建   

 注3:mount選項(xiàng)高級用法
          --mount選項(xiàng)的type參數(shù)支持三種類型的數(shù)據(jù)卷
          --mount標(biāo)志:由多個(gè)名值對組成,逗號分隔,每個(gè)鍵值由 <key> = <value> 元組組成 
          1.type=volume普通數(shù)據(jù)卷(默認(rèn)即這種類型),映射到主機(jī)/var/lib/docker/volumes路徑下;   
            --mount type=volume,source=my-vol,target=/webapp
            注:type的默認(rèn)值,提前先創(chuàng)建數(shù)據(jù)卷
          2.bind:綁定數(shù)據(jù)卷,映射到主機(jī)指定路徑下;
            --mount type=bind,source=/webapp,destination=/webapp2
          3.tmpfs :臨時(shí)數(shù)據(jù)卷,只存在于內(nèi)存中
            docker run -d \
              -it \
              --name tmptest \
              --mount type=tmpfs,destination=/app \
              nginx:latest

3、數(shù)據(jù)卷容器

如果用戶需要在多個(gè)容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡單的方式是使用數(shù)據(jù)卷容器。數(shù)據(jù)卷容器也是一個(gè)容器,但是它的目的是專門提供數(shù)據(jù)卷給其他容器掛載

  

數(shù)據(jù)卷容器相關(guān)操作:

3.1.新建數(shù)據(jù)卷容器

docker run -it -d --name db_data -v /db_data centos:latest

3.2.用容器db1測試數(shù)據(jù)卷容器是否可用

docker run -it -d --name db1 --volumes-from db_data centos:latest
     docker exec -it db1 bash
     cd db_data
     ## 使用echo命令向db1_test.txt中寫入內(nèi)容
     echo "db1 beifen test" > db1_test.txt

3.3.備份數(shù)據(jù)卷容器

docker run --rm --name beifen --volumes-from db_data -v /zking:/container_backup centos:latest tar cvf /container_backup/backup.tar /db_data

新建1個(gè)名為beifen的(暫時(shí)性,之后會(huì)刪除)容器,由于volumes-from了db_data,所以在根目錄下也會(huì)生成1個(gè)db_data文件夾,經(jīng)過執(zhí)行命令后,將db_data文件下的數(shù)據(jù)壓縮在container_backup文件夾下,并存在宿主機(jī)上的host_backup_path下

   注:
   1)run:create+start
   2)--rm:創(chuàng)建之后刪除容器
   3)--name:容器名稱
   4)--volumes-from:來自于哪個(gè)數(shù)據(jù)卷容器的容器NAME
   5)-v:給容器掛載存儲(chǔ)卷,掛載到容器的某個(gè)目錄

3.4.還原數(shù)據(jù)卷容器

1.新建一個(gè)數(shù)據(jù)卷容器db_data2
       docker run -it -d --name db_data2 -v /db_data centos:latest

2.docker run --rm --name huanyuan --volumes-from db_data2 -v ~/host_backup:/container_backup centos:latest tar xvf /container_backup/backup.tar -C /db_data
       新建1個(gè)名為huanyuan的(暫時(shí)性,之后會(huì)刪除)容器,由于volumes-from了db_data2,所以在根目錄下也會(huì)生成1個(gè)db_data文件夾,宿主機(jī)上的host_backup_path下的壓縮數(shù)據(jù)映射到了container_backup文件夾下,并解壓至db_data文件夾下     

4、dockerfile

dockerfile 是一個(gè)文本格式的配置文件, 用戶可以使用 Dockerfile 來快速創(chuàng)建自定義的鏡像,另外,使用Dockerfile去構(gòu)建鏡像好比使用pom去構(gòu)建maven項(xiàng)目一樣,有異曲同工之妙

  

5、dockerfile基本結(jié)構(gòu)

dockerfile基本結(jié)構(gòu)
   Dockerfile 由一行行命令語句組成, 并且支持以#開頭的注釋行,一般而言, Dockerfile 主體內(nèi)容分為四部分:
   基礎(chǔ)鏡像信息、 維護(hù)者信息、 鏡像操作指令和容器啟動(dòng)時(shí)執(zhí)行指令。

   部分                                   命令
   基礎(chǔ)鏡像信息                     FROM
   維護(hù)者信息                        MAINTAINER
   鏡像操作指令                    RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
   容器啟動(dòng)時(shí)執(zhí)行指令          CMD、ENTRYPOINT

6、docker使用Dockerfile創(chuàng)建jdk容器

啟動(dòng)虛擬機(jī),進(jìn)入CentOS

6.1 創(chuàng)建文件夾上傳jdk的安裝包,和在同級目錄下編寫Dockerfile文件

      $ mkdir –p /zking/java
      # 注意d是大寫
      $ touch Dockerfile 

      將jdk-8u221-linux-x64.tar.gz上傳到Linux或者使用cp命令復(fù)制一個(gè)本地已經(jīng)有的jdk-8u221-linux-x64.tar.gz文件到指定目錄中
      $ cp /lky/tools/jdk-8u221-linux-x64.tar.gz /zking/java

6.2 編寫 Dockerfile 文件

      6.2.1 vi Dockerfile進(jìn)入編輯模式
      :wq  #退出并保存文件
      :q!  #退出不保存文件
      按i鍵進(jìn)入insert編輯模式

      6.2.2 指定基礎(chǔ)鏡像,并且必須是第一條指令
      FROM centos:latest

      6.2.3 指明該鏡像的作者和其電子郵件

      MAINTAINER zs "zs@qq.com"

      6.2.4 在構(gòu)建鏡像時(shí),指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會(huì)創(chuàng)建目錄

      WORKDIR /zking/java

      6.2.5 一個(gè)復(fù)制命令,把jdk安裝文件復(fù)制到鏡像中,語法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相對路徑

      ADD jdk-8u151-linux-x64.tar.gz /zking/java/
      注:如果在宿主機(jī)的當(dāng)前路徑下,文件直接使用相對路徑即可;

      6.2.6 配置環(huán)境變量

      ENV JAVA_HOME=/zking/java/jdk1.8.0_151
      ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      ENV PATH=$JAVA_HOME/bin:$PATH
      #容器啟動(dòng)時(shí)需要執(zhí)行的命令
      #CMD ["java","-version"]

6.3 執(zhí)行Dockerfile文件,初次依賴鏡像的時(shí)候會(huì)下載相應(yīng)鏡像

      docker build -t jdk8:v1.0 .
      注1:-t  jdk8:v1.0  給新構(gòu)建的鏡像取名為 jdk8, 并設(shè)定版本為v1.0
      注2:注意最后有個(gè)點(diǎn),代表使用當(dāng)前路徑的 Dockerfile 進(jìn)行構(gòu)建 

6.4 查看鏡像

      docker images

6.5 創(chuàng)建并啟動(dòng)容器

      docker run -it jdk8:v1.0 /bin/bash

6.6 檢查是否有問題

      javac

7、dockerfile實(shí)踐經(jīng)驗(yàn)

1. 精簡鏡像用途:盡量讓每個(gè)鏡像的用途都比較集中單一,避免構(gòu)造大而復(fù)雜、多功能的鏡像
2. 選用合適的基礎(chǔ)鏡像:容器的核心是應(yīng)用,選擇過大的父鏡像(如CentOS系統(tǒng)鏡像)會(huì)造成最終生成應(yīng)用鏡像的臃腫,推薦選用瘦身過的應(yīng)用鏡像或者較為小巧的系統(tǒng)鏡像(alpine)

附錄一:SecureCRT上傳文件到Linux服務(wù)器上
1. 輸入rz命令,看是否已經(jīng)安裝了lrzsz,如果沒有安裝則執(zhí)行 apt install lrzsz -y 命令進(jìn)行安裝。
2. 安裝成功后,輸入rpm命令確認(rèn)是否正確安裝
3. 使用 rz -y命令進(jìn)行文件上傳,此時(shí)會(huì)彈出上傳的窗口
還可以通過sz下載文件

到此這篇關(guān)于數(shù)據(jù)卷(Data Volumes)以及dockefile詳解的文章就介紹到這了,更多相關(guān)數(shù)據(jù)卷Data Volumes內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker使用Link在容器之間建立連接

    Docker使用Link在容器之間建立連接

    這篇文章主要介紹了Docker使用Link在容器之間建立連接的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • docker 內(nèi)存監(jiān)控與壓測方式

    docker 內(nèi)存監(jiān)控與壓測方式

    這篇文章主要介紹了docker 內(nèi)存監(jiān)控與壓測方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker時(shí)間不一致,時(shí)區(qū)設(shè)置方式

    Docker時(shí)間不一致,時(shí)區(qū)設(shè)置方式

    這篇文章主要介紹了Docker時(shí)間不一致,時(shí)區(qū)設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker安裝MySql8并遠(yuǎn)程訪問的實(shí)現(xiàn)

    Docker安裝MySql8并遠(yuǎn)程訪問的實(shí)現(xiàn)

    本文主要介紹了Docker安裝MySql8并遠(yuǎn)程訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • centos修改docker網(wǎng)絡(luò)配置方法分享

    centos修改docker網(wǎng)絡(luò)配置方法分享

    本文給大家分享的是centos修改docker網(wǎng)絡(luò)配置的方法,非常的實(shí)用,有需要的小伙伴可以參考下
    2017-03-03
  • Docker安裝配置Oracle詳細(xì)步驟記錄(以作持久化處理)

    Docker安裝配置Oracle詳細(xì)步驟記錄(以作持久化處理)

    docker是一個(gè)用Go語言實(shí)現(xiàn)的開源項(xiàng)目,可以讓我們方便的創(chuàng)建和使用容器,下面這篇文章主要給大家介紹了關(guān)于Docker安裝配置Oracle詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Docker部署SQL?Server及最佳應(yīng)用小結(jié)

    Docker部署SQL?Server及最佳應(yīng)用小結(jié)

    SQL?Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS),本文總結(jié)了容器環(huán)境下的部署及實(shí)踐應(yīng)用,需要的朋友可以參考下
    2022-08-08
  • Docker鏡像加速的詳細(xì)教程

    Docker鏡像加速的詳細(xì)教程

    Docker 鏡像非常輕量級,它們是基于分層的文件系統(tǒng)構(gòu)建的,因此許多 Docker 鏡像可以共享相同的基礎(chǔ)鏡像,這也使得它們在存儲(chǔ)和傳輸時(shí)非常高效,這篇文章主要介紹了Docker鏡像加速的詳細(xì)教程,需要的朋友可以參考下
    2024-02-02
  • CentOS 7.x docker使用overlay2存儲(chǔ)方式

    CentOS 7.x docker使用overlay2存儲(chǔ)方式

    這篇文章主要介紹了CentOS 7.x docker使用overlay2存儲(chǔ)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟

    IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟

    這篇文章主要介紹了IDEA使用Docker插件遠(yuǎn)程部署項(xiàng)目到云服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論