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

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

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

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

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

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

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

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

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

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

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

數(shù)據(jù)卷是 Docker容器中用于持久化數(shù)據(jù)的一種機制,它可以將容器內的數(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ù)據(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)理解為命令還沒有結束,因而是繼續(xù)等待用戶進行輸入,直到讀到結束符,如回車。

使用自定義目錄充當數(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ù)卷,只存在于內存中

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

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

數(shù)據(jù)卷容器是一個特殊的容器,它的主要目的是提供一個持久化的存儲空間,其他容器可以通過掛載這個容器中的數(shù)據(jù)卷來共享數(shù)據(jù)。數(shù)據(jù)卷容器本身不運行任何應用程序,它只是提供一個數(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ù)卷容器可以獨立于其他容器進行管理和維護,可以方便地備份和恢復數(shù)據(jù)。

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

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

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

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

 創(chuàng)建一個名為 db1 的容器,并設定數(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 文件夾,經過執(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 是用來構建 Docker 鏡像的文本格式的配置文件,是由一系列命令參數(shù)構成的腳本。

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

基本結構

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

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

常用指令

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

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

快速入門

啟動虛擬機,進入 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 命令復制一個本地已經有的 jdk-8u221-linux-x64.tar.gz 文件到指定目錄中。

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

touch Dockerfile

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

編寫Dockerfile文件

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

FROM centos:latest

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

MAINTAINER kongkong "kongkong@qq.com"

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

WORKDIR /ceshi/java

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

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

構建鏡像并測試

docker build -t jdk8:v1.0 .

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

查看鏡像:

docker images

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

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

測試:

java -version

總結 

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

相關文章

  • Docker 入門快速上手指南

    Docker 入門快速上手指南

    本篇文章主要介紹了詳解Docker 快速上手指南,記錄 Docker 中的常用操作、指令,使得大家能夠快速地使用 Docker。
    2017-03-03
  • 如何使用docker創(chuàng)建minio鏡像并上傳文件并提供demo

    如何使用docker創(chuàng)建minio鏡像并上傳文件并提供demo

    這篇文章主要介紹了使用docker創(chuàng)建minio鏡像并上傳文件,提供demo,minio還是很方便的,從部署到使用,都可以非??焖俚拇罱?而且比較穩(wěn)定,需要的朋友可以參考下
    2023-09-09
  • Docker制作鏡像的兩種方式(在線制作和離線制作)

    Docker制作鏡像的兩種方式(在線制作和離線制作)

    我們知道要創(chuàng)建一個Docker容器,要先有Docker鏡像,Docker鏡像怎么創(chuàng)建的呢?下面這篇文章主要給大家介紹了關于Docker制作鏡像的兩種方式(在線制作和離線制作)的相關資料,需要的朋友可以參考下
    2023-03-03
  • docker如何查看容器/刪除(所有)容器/刪除鏡像

    docker如何查看容器/刪除(所有)容器/刪除鏡像

    這篇文章主要介紹了docker如何查看容器/刪除(所有)容器/刪除鏡像問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker上部署FastApi的示例代碼

    Docker上部署FastApi的示例代碼

    本文主要介紹了Docker上部署FastApi的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Docker?link實現(xiàn)容器互聯(lián)的方式

    Docker?link實現(xiàn)容器互聯(lián)的方式

    通過link方式創(chuàng)建容器,然后我們可以使用被link容器的別名進行訪問。本文重點給大家介紹Docker?link實現(xiàn)容器互聯(lián)的方式,感興趣的朋友一起看看吧
    2021-12-12
  • Navicat 連接服務器端中的docker數(shù)據(jù)庫的方法

    Navicat 連接服務器端中的docker數(shù)據(jù)庫的方法

    這篇文章主要介紹了Navicat 連接服務器端中的docker數(shù)據(jù)庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • docker-compose中變量的使用方式

    docker-compose中變量的使用方式

    這篇文章主要介紹了docker-compose中變量的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker進行RocketMq集群部署方式

    docker進行RocketMq集群部署方式

    這篇文章主要介紹了docker進行RocketMq集群部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Docker鏡像的遷移與備份及Dockerflie 使用方法詳解

    Docker鏡像的遷移與備份及Dockerflie 使用方法詳解

    遷移和備份主要有三個操作命令將容器保存為鏡像、備份鏡像(將鏡像導出為一個文件)、鏡像的遷移與恢復,這篇文章主要介紹了Docker鏡像的遷移與備份、Dockerflie 使用方法,需要的朋友可以參考下
    2022-07-07

最新評論