国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker之?dāng)?shù)據(jù)卷和Dockerfile

這篇具有很好參考價值的文章主要介紹了Docker之?dāng)?shù)據(jù)卷和Dockerfile。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

目錄

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

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

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

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

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

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

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

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

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

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

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

四、Dockerfile

什么是Dockerfile

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

常用指令

快速入門

編寫Dockerfile文件

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


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

在生產(chǎn)環(huán)境中使用 Docker ,往往需要對數(shù)據(jù)進(jìn)行持久化,或者需要在多個容器之間進(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ù)卷;

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

docker cp 宿主機(jī)絕對路徑 容器id:路徑

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

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

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

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

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

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

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

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

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

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

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

ls -1 /var/lib/docker/volumes

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

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

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

docker volume ls

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

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

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

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

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

數(shù)據(jù)卷是被設(shè)計(jì)用來持久化數(shù)據(jù)的,它的生命周期獨(dú)立于容器,Docker不會在容器被刪除后自動刪除數(shù)據(jù)卷,并且也不存在垃圾回收這樣的機(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ù)等待用戶進(jìn)行輸入,直到讀到結(jié)束符,如回車。

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

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

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

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

屬性 說明
type=volume

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

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

type=bind

綁定數(shù)據(jù)卷,映射到主機(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ùn)行任何應(yīng)用程序,它只是提供一個數(shù)據(jù)卷的存儲空間。

當(dāng)我們需要在多個容器之間共享數(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ù)卷容器可以獨(dú)立于其他容器進(jìn)行管理和維護(hù),可以方便地備份和恢復(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

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

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

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

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

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

# 進(jìn)入db1容器
docker exec -it db1 bash
# 切換進(jìn)數(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ù)卷容器掛載測試成功。 ?

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

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

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

屬性介紹:

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

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

還原數(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 文件夾,宿主機(jī)上的 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ǔ)鏡像信息、 維護(hù)者信息、 鏡像操作指令和容器啟動時執(zhí)行指令。

部分 命令
基礎(chǔ)鏡像信息 FROM`
維護(hù)者信息 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 定義容器啟動后默認(rèn)執(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ù)制。

快速入門

啟動虛擬機(jī),進(jìn)入 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必須是大寫。

?Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

編寫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/

注:如果在宿主機(jī)的當(dāng)前路徑下,文件直接使用相對路徑即可;

配置環(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之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux

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

docker build -t jdk8:v1.0 .

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

查看鏡像:

docker images

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

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

測試:

java -version

Docker之?dāng)?shù)據(jù)卷和Dockerfile,Docker,docker,運(yùn)維,容器,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-847586.html

到了這里,關(guān)于Docker之?dāng)?shù)據(jù)卷和Dockerfile的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • docker 鏡像的創(chuàng)建dockerfile 和數(shù)據(jù)卷

    基于現(xiàn)有的鏡像創(chuàng)建鏡像 docker commit 基于模板創(chuàng)建鏡像 模板可以從OPENVZ開源項(xiàng)目下載 基于dockerfile創(chuàng)建 Docker鏡像是一個特殊的文件系統(tǒng),除了提供容器運(yùn)行時所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)

    2024年02月09日
    瀏覽(18)
  • 【Docker】Docker容器數(shù)據(jù)卷、容器卷之間的繼承和DockerFIle的詳細(xì)講解

    【Docker】Docker容器數(shù)據(jù)卷、容器卷之間的繼承和DockerFIle的詳細(xì)講解

    ??歡迎來到本文?? ??個人簡介:陳童學(xué)哦,目前學(xué)習(xí)C/C++、算法、Python、Java等方向,一個正在慢慢前行的普通人。 ??系列專欄:陳童學(xué)的日記 ??其他專欄:C++STL,感興趣的小伙伴可以看看。 ??希望各位→點(diǎn)贊?? + 收藏?? + 留言?? ? ??萬物從心起,心動則萬物動??

    2024年02月14日
    瀏覽(26)
  • Docker的數(shù)據(jù)管理和Dockerfile的指令

    Docker的數(shù)據(jù)管理和Dockerfile的指令

    管理 Docker 容器中數(shù)據(jù)主要有兩種方式: 數(shù)據(jù)卷(Data Volumes)和數(shù)據(jù)卷容器(DataVolumes Containers)。 1、數(shù)據(jù)卷 數(shù)據(jù)卷是一個供容器使用的特殊目錄,位于容器中??蓪⑺拗鳈C(jī)的目錄掛載到數(shù)據(jù)卷上,對數(shù)據(jù)卷的修改操作立刻可見,并且更新數(shù)據(jù)不會影響鏡像,從而實(shí)現(xiàn)數(shù)據(jù)在

    2024年02月15日
    瀏覽(19)
  • Docker 的數(shù)據(jù)管理與Dockerfile 鏡像的創(chuàng)建

    Docker 的數(shù)據(jù)管理與Dockerfile 鏡像的創(chuàng)建

    ------------------Docker 的數(shù)據(jù)管理--------------------- 管理 Docker 容器中數(shù)據(jù)主要有兩種方式:數(shù)據(jù)卷(Data Volumes)和數(shù)據(jù)卷容器(DataVolumes Containers)。 1.?dāng)?shù)據(jù)卷 數(shù)據(jù)卷是一個供容器使用的特殊目錄,位于容器中??蓪⑺拗鳈C(jī)的目錄掛載到數(shù)據(jù)卷上,對數(shù)據(jù)卷的修改操作立刻可見

    2024年02月07日
    瀏覽(18)
  • Docker進(jìn)階:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    Docker進(jìn)階:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? 1、完成數(shù)據(jù)持久化和共享數(shù)據(jù),docker容器中的數(shù)據(jù),同步到本地。 2、重要數(shù)據(jù)back_up 特點(diǎn): 實(shí)時生效、數(shù)據(jù)卷可在容器之間共享和重用數(shù)據(jù)、數(shù)據(jù)卷中的更改不會包含在鏡像更新中、數(shù)據(jù)卷的生命周期會一直延續(xù)到?jīng)]有容器使用它為止

    2024年02月09日
    瀏覽(27)
  • Docker基礎(chǔ)入門:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    Docker基礎(chǔ)入門:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? 1、完成數(shù)據(jù)持久化和共享數(shù)據(jù),docker容器中的數(shù)據(jù),同步到本地。 2、重要數(shù)據(jù)back_up 特點(diǎn): 實(shí)時生效、數(shù)據(jù)卷可在容器之間共享和重用數(shù)據(jù)、數(shù)據(jù)卷中的更改不會包含在鏡像更新中、數(shù)據(jù)卷的生命周期會一直延續(xù)到?jīng)]有容器使用它為止

    2024年02月10日
    瀏覽(21)
  • [運(yùn)維|數(shù)據(jù)庫] docker postgresql數(shù)據(jù)庫環(huán)境變量配置

    要配置Docker中的PostgreSQL數(shù)據(jù)庫的環(huán)境變量,可以使用以下方法: 使用Docker命令行: 將 用戶名 , 密碼 , 數(shù)據(jù)庫名 替換為你想要設(shè)置的實(shí)際值。這將創(chuàng)建一個名為 mypostgres 的容器,并將 PostgreSQL 的用戶名、密碼和數(shù)據(jù)庫名設(shè)置為指定的值。 -p 5432:5432 指定了容器內(nèi)部和主機(jī)之間

    2024年02月09日
    瀏覽(34)
  • 在Docker中使用Dockerfile實(shí)現(xiàn)ISO文件轉(zhuǎn)化為完整版Centos鏡像,并搭建集群數(shù)據(jù)倉庫

    在Docker中使用Dockerfile實(shí)現(xiàn)ISO文件轉(zhuǎn)化為完整版Centos鏡像,并搭建集群數(shù)據(jù)倉庫

    在上一篇文章中,我們提到了如何使用Docker官方版本的centos7搭建容器集群并實(shí)現(xiàn)同一ip下使用不同端口的ssh遠(yuǎn)程登錄,但是其中遇到了非常多的問題,例如: 官方的centos7過于“簡陋”,導(dǎo)致我們運(yùn)行腳本時因?yàn)闆]有預(yù)裝依賴包而報(bào)錯! 這個可太致命了,所以這篇文章教大家

    2024年02月12日
    瀏覽(22)
  • 【Docker】Docker 倉庫管理和Docker Dockerfile

    【Docker】Docker 倉庫管理和Docker Dockerfile

    作者簡介: 辭七七,目前大二,正在學(xué)習(xí)C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄: 七七的閑談 歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!???? 倉庫(Repository)是集中存放鏡像的地方。以下介紹一下 Docker Hub。當(dāng)然不止 docker hub,只是遠(yuǎn)程的服務(wù)商不一樣,

    2024年02月05日
    瀏覽(23)
  • docker/Dockerfile/docker compose

    https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/ 在x86環(huán)境下,由容器統(tǒng)一管理開發(fā)及運(yùn)行環(huán)境。 Docker https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/ sudo dockerd 手動啟動docker sudo service docker start 后臺啟動docker sudo dockerd 顯示啟動docker,看日志中的docker /var/log/docker.log sudo apt-key adv --keyserver key

    2024年02月08日
    瀏覽(67)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包