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

Docker學(xué)習之數(shù)據(jù)卷和Dockerfile詳解

 更新時間:2024年04月16日 09:52:32   作者:空空bye  
在容器化應(yīng)用的開發(fā)和部署過程中,數(shù)據(jù)的持久化和共享是一個重要的問題,下面這篇文章主要給大家介紹了關(guān)于Docker學(xué)習之數(shù)據(jù)卷和Dockerfile的相關(guān)資料,需要的朋友可以參考下

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

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

容器中的管理數(shù)據(jù)主要有兩種方式:

  • 數(shù)據(jù)卷(Data Volumes):容器內(nèi)數(shù)據(jù)直接映射到本地主機環(huán)境;

  • 數(shù)據(jù)卷容器(Data Volume Containers): 使用特定容器維護數(shù)據(jù)卷;

如何使用docker cp命令在宿主機和docker容器之間復(fù)制文件:

docker cp 宿主機絕對路徑 容器id:路徑

二、數(shù)據(jù)卷

數(shù)據(jù)卷是 Docker容器中用于持久化數(shù)據(jù)的一種機制,它可以將容器內(nèi)的數(shù)據(jù)存儲到宿主機中,以便在容器被刪除或重新創(chuàng)建時保留數(shù)據(jù)。

它可以提供很多有用的特性:

  • 數(shù)據(jù)卷可以在容器之間共享和重用;

  • 對數(shù)據(jù)卷的修改會立馬生效;

  • 對數(shù)據(jù)卷的更新,不會影響鏡像;

  • 數(shù)據(jù)卷默認會一直存在,即使容器被刪除;

注意:數(shù)據(jù)卷的生命周期獨立于容器的生命周期,因此即使容器被刪除,數(shù)據(jù)卷中的數(shù)據(jù)仍然可以被保留。

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

docker volume create 數(shù)據(jù)卷名稱

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

ls -1 /var/lib/docker/volumes

查看數(shù)據(jù)卷

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

docker volume ls

查看指定數(shù)據(jù)卷的詳細信息(顯示一個 JSON 格式的數(shù)據(jù)):

docker volume inspect 數(shù)據(jù)卷名稱

刪除數(shù)據(jù)卷

docker volume rm 數(shù)據(jù)卷名稱

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

掛載數(shù)據(jù)卷

創(chuàng)建數(shù)據(jù)卷并掛載中指定容器:

docker run -d \
       -it \
       --name tomcat01 \
       --mount source=my-vol,target=/webapp \
       centos:latest

上述命令是將 my-vol 數(shù)據(jù)卷掛載中容器 tomcat01 中的 webapp 目錄。

注意: 1)my-vol 為要掛載的數(shù)據(jù)卷,如果數(shù)據(jù)卷不存在,docker 會自動創(chuàng)建;/webapp 為容器上目錄,如果目錄不存在, docker會自動創(chuàng)建。 2)加了“\”意為將最后的回車換行給注釋了,系統(tǒng)理解為命令還沒有結(jié)束,因而是繼續(xù)等待用戶進行輸入,直到讀到結(jié)束符,如回車。

使用自定義目錄充當數(shù)據(jù)卷并掛載到指定容器:  

docker run -d \
       -it \
       --name tomcat02 \
       --mount type=bind,source=/root/webapp02,target=/root/webapp02 \
       centos:latest  

--mount 選項的 type 參數(shù)支持三種類型的數(shù)據(jù)卷:

屬性說明
type=volume

普通數(shù)據(jù)卷(默認即這種類型),映射到主機/var/lib/docker/volumes路徑下

例如:--mount type=volume,source=my-vol,target=/webapp

type=bind

綁定數(shù)據(jù)卷,映射到主機指定路徑下

例如:--mount type=bind,source=/webapp,target=/webapp2

type=tmpfs

臨時數(shù)據(jù)卷,只存在于內(nèi)存中

例如:--mount type=tmpfs,target=/app

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

數(shù)據(jù)卷容器是一個特殊的容器,它的主要目的是提供一個持久化的存儲空間,其他容器可以通過掛載這個容器中的數(shù)據(jù)卷來共享數(shù)據(jù)。數(shù)據(jù)卷容器本身不運行任何應(yīng)用程序,它只是提供一個數(shù)據(jù)卷的存儲空間。

當我們需要在多個容器之間共享數(shù)據(jù)時,可以使用數(shù)據(jù)卷容器。我們可以在一個容器中創(chuàng)建一個數(shù)據(jù)卷容器,并將需要共享的數(shù)據(jù)卷掛載到該容器中,其他容器可以通過掛載該數(shù)據(jù)卷容器中的數(shù)據(jù)卷來訪問這些數(shù)據(jù)。

數(shù)據(jù)卷容器的好處是,它可以提供一個中心化的存儲空間,容器之間可以通過掛載數(shù)據(jù)卷容器中的數(shù)據(jù)卷來共享數(shù)據(jù),而不需要每個容器都去管理數(shù)據(jù)卷。此外,數(shù)據(jù)卷容器可以獨立于其他容器進行管理和維護,可以方便地備份和恢復(fù)數(shù)據(jù)。

創(chuàng)建數(shù)據(jù)卷容器

創(chuàng)建一個名為 db_data 的容器,并設(shè)定該容器中的數(shù)據(jù)卷為 db_data 目錄。

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

測試數(shù)據(jù)卷容器

 創(chuàng)建一個名為 db1 的容器,并設(shè)定數(shù)據(jù)卷容器為 db_data

docker run -it -d --name db1 --volumes-from db_data centos:latest

進入 db1 容器,并在容器的數(shù)據(jù)卷中創(chuàng)建文件測試是否掛載成功:

# 進入db1容器
docker exec -it db1 bash
# 切換進數(shù)據(jù)卷
cd db_data
# 創(chuàng)建文件
echo "db1 beifen test" > db1_test.txt

這時,可以發(fā)現(xiàn)在容器 db1 中創(chuàng)建的文件,同時出現(xiàn)在了 db_data 容器中的 db_data 數(shù)據(jù)卷目錄中,則證明數(shù)據(jù)卷容器掛載測試成功。  

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

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

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

屬性介紹:

屬性說明
runcreate+start
--rm創(chuàng)建之后刪除容器
--name容器名稱
--volumes-from來自于哪個數(shù)據(jù)卷容器的容器NAME
-v給容器掛載存儲卷,掛載到容器的某個目錄

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

新建一個數(shù)據(jù)卷容器 db_data2 :

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

新建1個名為 huanyuan 的(暫時性,之后會刪除)容器,由于 volumes-from 了 db_data2,所以在根目錄下也會生成1個 db_data 文件夾,宿主機上的 host_backup 目錄映射到了容器中的 container_backup 文件夾下,并解壓至 db_data 文件夾下

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

四、Dockerfile

什么是Dockerfile

Dockerfile 是用來構(gòu)建 Docker 鏡像的文本格式的配置文件,是由一系列命令參數(shù)構(gòu)成的腳本。

總之,用戶可以使用 Dockerfile 來快速創(chuàng)建自定義的鏡像。

基本結(jié)構(gòu)

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

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

常用指令

指令名稱說明格式示例
FROM定義基礎(chǔ)鏡像FROM <image_name>:<tag>
MAINTAINER`定義鏡像作者MAINTAINER <author_name>
RUN在鏡像中執(zhí)行命令RUN <command>
CMD定義容器啟動后默認執(zhí)行的命令CMD <command>
EXPOS指定容器對外暴露的端口EXPOSE <port>
ENV設(shè)置環(huán)境變量ENV <key> <value>
ADD將本地文件添加到鏡像中ADD <source> <destination>
COPY將本地文件復(fù)制到鏡像中COPY <source> <destination>
WORKDIR指定容器內(nèi)的工作目錄WORKDIR <path>

注意:ADD和COPY的區(qū)別!ADD命令用于復(fù)制操作,但是會對壓縮文件(tar, gzip, bzip2, etc)做提取和解壓操作;而COPY僅限于復(fù)制。

快速入門

啟動虛擬機,進入 CentOS7 系統(tǒng)。創(chuàng)建文件夾上傳 jdk 的安裝包:

# 創(chuàng)建文件夾
mkdir -p /ceshi/java
# 使用rz命令上傳jdk安裝包
rz jdk-8u221-linux-x64.tar.gz

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

在同級目錄下創(chuàng)建 Dockerfile 文件。

touch Dockerfile

注意:Dockerfile 文件沒有后綴,文件名D必須是大寫。

編寫Dockerfile文件

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

FROM centos:latest

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

MAINTAINER kongkong "kongkong@qq.com"

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

WORKDIR /ceshi/java

jdk安裝文件復(fù)制到鏡像中,并完成解壓操作:

ADD jdk-8u151-linux-x64.tar.gz /ceshi/java/

注:如果在宿主機的當前路徑下,文件直接使用相對路徑即可;

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

ENV JAVA_HOME=/ceshi/java/jdk1.8.0_151
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

構(gòu)建鏡像并測試

docker build -t jdk8:v1.0 .

-t jdk8:v1.0 用于給新構(gòu)建的鏡像取名為jdk8 , 并設(shè)定版本為 v1.0 ;注意最后有個點,代表使用當前路徑的 Dockerfile 進行構(gòu)建 。

查看鏡像:

docker images

創(chuàng)建并啟動容器:

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

測試:

java -version

總結(jié) 

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

相關(guān)文章

  • docker之點到點的容器網(wǎng)絡(luò)的配置

    docker之點到點的容器網(wǎng)絡(luò)的配置

    本篇文章主要介紹了docker之點到點的容器網(wǎng)絡(luò)的配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Docker push鏡像失敗解決方法

    Docker push鏡像失敗解決方法

    這篇文章主要介紹了Docker push鏡像失敗解決方法的相關(guān)資料,這里對解決push 鏡像失敗提供了解決方案,需要的朋友可以參考下
    2016-12-12
  • Docker部署Rabbitmq容器實現(xiàn)過程解析

    Docker部署Rabbitmq容器實現(xiàn)過程解析

    這篇文章主要介紹了Docker部署Rabbitmq容器實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-11-11
  • docker安裝clickhouse過程詳解

    docker安裝clickhouse過程詳解

    這篇文章主要為大家介紹了docker安裝clickhouse過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Docker出現(xiàn)tag顯示none鏡像的處理方案

    Docker出現(xiàn)tag顯示none鏡像的處理方案

    本文介紹了Docker中出現(xiàn)REPOSITORY和TAG都顯示為<none>的鏡像,即懸掛鏡像的原因,并提供了解決方法,包括查找和刪除懸掛鏡像,以及為它們指定新的標簽
    2025-02-02
  • 使用Docker遷移服務(wù)到離線服務(wù)器的過程

    使用Docker遷移服務(wù)到離線服務(wù)器的過程

    最近遇到的這個場景,需要把之前開發(fā)的一套系統(tǒng)遷移到一個離線的服務(wù)器上,這個服務(wù)器有點麻煩,接入VPN后通過堡壘機才能訪問,速度也很慢,遇到不少坑,本文記錄一下遷移過程,需要的朋友可以參考下
    2023-06-06
  • Docker MySQL無法被宿主機訪問的問題解決

    Docker MySQL無法被宿主機訪問的問題解決

    本文主要介紹了Docker MySQL無法被宿主機訪問的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-07-07
  • Docker實現(xiàn)TLS和CA認證的方法步驟

    Docker實現(xiàn)TLS和CA認證的方法步驟

    為了更便捷地連接Docker服務(wù)器,Docker服務(wù)器需要開放2375端口才能連接docker,本文主要介紹了Docker實現(xiàn)TLS和CA認證的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Docker Compose安裝部署PostgreSQL數(shù)據(jù)庫的實現(xiàn)步驟

    Docker Compose安裝部署PostgreSQL數(shù)據(jù)庫的實現(xiàn)步驟

    本文主要介紹了使用DockerCompose在Linux服務(wù)器上部署PostgreSQL,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2024-12-12
  • Docker數(shù)據(jù)存儲之Bind mounts詳解

    Docker數(shù)據(jù)存儲之Bind mounts詳解

    今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲之Bind mounts詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

黔西县| 沙洋县| 石渠县| 彭州市| 牙克石市| 灵川县| 海门市| 河池市| 丰都县| 凭祥市| 偃师市| 阜城县| 申扎县| 赤壁市| 江山市| 德兴市| 威宁| 天柱县| 松原市| 平塘县| 姜堰市| 鄯善县| 铜鼓县| 涿州市| 砀山县| 柳州市| 深州市| 邹城市| 宽甸| 肃宁县| 额济纳旗| 资溪县| 年辖:市辖区| 卢龙县| 宁国市| 沈丘县| 通城县| 土默特右旗| 嘉禾县| 曲阜市| 金山区|