柚子快報邀請碼778899分享:運維 Docker學(xué)習(xí)筆記
柚子快報邀請碼778899分享:運維 Docker學(xué)習(xí)筆記
Docker學(xué)習(xí)筆記
Docker鏡像、容器、工作進程關(guān)系圖安裝與卸載Docker(CentOS)安裝卸載
常用命令幫助啟動類命令鏡像命令列出本地主機上的鏡像查找遠程倉庫中的指定鏡像下載鏡像查看鏡像/容器/數(shù)據(jù)卷所占的空間刪除某個鏡像問題:什么是Docker虛懸鏡像
容器命令新建并啟動容器列出當(dāng)前所有正在運行的容器退出容器啟動已經(jīng)停止的容器重啟、停止、強制停止容器刪除已停止的容器啟動守護容器詳解何為守護容器?機制解析
查看容器日志查看容器內(nèi)運行的進程查看容器內(nèi)部細節(jié)進入正在運行的容器并以命令行交互(重要)docker exec命令docker attach命令兩者區(qū)別例子:進入正在運行的redis容器并以命令行形式進行交互
從容器內(nèi)拷貝命令到主機上導(dǎo)入和導(dǎo)出容器(用于自己制作鏡像)方式1:export和import方式2:commit兩者區(qū)別
容器數(shù)據(jù)卷查看容器的掛載目錄(文件)容器卷之間的繼承掛載權(quán)限問題
Dockerfile(重點)Docker執(zhí)行Dockerfile的大致流程常用保留字*
DockerNetWork(重點)DockerNetWork的作用docker網(wǎng)絡(luò)模式設(shè)置方式bridge模式(常用)host模式none模式container模式
自定義docker網(wǎng)絡(luò)(常用)創(chuàng)建和加入命令注意點(關(guān)注)
查看docker網(wǎng)絡(luò)查看網(wǎng)絡(luò)源數(shù)據(jù)
Docker Compose容器編排(重點)安裝容器編排步驟Compose 模板文件指令
Docker鏡像、容器、工作進程關(guān)系圖
安裝與卸載Docker(CentOS)
官網(wǎng)安裝教程地址
安裝
如果已經(jīng)安裝過舊版本的docker需要先通過以下命令刪除
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
然后通過以下命令確認CentOS的版本在7及以上(這里使用的是7.6.1810版本)
cat /etc/centos-release
然后通過以下命令安裝gcc環(huán)境
sudo yum -y install gcc
sudo yum -y install gcc-c++
然后通過以下命令安裝yum-utils
sudo yum install -y yum-utils
然后設(shè)置stable鏡像倉庫(用于下載docker遠程倉庫中的鏡像,因為在大陸所以建議采用阿里或騰訊等的源) 這里采用阿里云的源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
然后最好更新以下yum軟件包索引 注意:CentOS8要去掉fast
sudo yum makecache fast
然后要安裝Docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
安裝完以上環(huán)境后就可以啟動Docker了
sudo systemctl start docker
啟動后通過以下命令測試是否啟動完成
sudo docker version
如果出現(xiàn)以下信息則說明安裝成功 注意:Client端和Server端的版本號要一致 可以再使用以下命令進行驗證
sudo docker run hello-world
如果出現(xiàn)以下內(nèi)容說明docker運行正常
卸載
# 停止服務(wù)
sudo systemctl stop docker
# 移除docker依賴
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 移除本地配置文件和各種第三方依賴
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
常用命令
幫助啟動類命令
鏡像命令
列出本地主機上的鏡像
docker images
如下圖所示: 各個表格項說明: REPOSITORY:表示鏡像的倉庫源 TAG:鏡像的標(biāo)簽(相當(dāng)于版本號) IMAGE ID:鏡像唯一ID CREATED:鏡像創(chuàng)建時間 SIZE:鏡像大小
同一倉庫源可以有多個TAG版本,代表這個倉庫源的不同個版本,我們使用REPOSITORY:TAG來定義不同的鏡像。如果你不指定一個鏡像的版本標(biāo)簽,例如你只使用ubuntu,docker將默認使用ubuntu:latest鏡像
常用參數(shù):
-a:列出本地所有的鏡像(含歷史映像層)
-q:只顯示鏡像ID
查找遠程倉庫中的指定鏡像
docker search 鏡像名稱
比如查找redis鏡像: 各個表格項說明: NAME:鏡像名稱 DESCRIPTION:鏡像說明 STARS:點贊數(shù)量 OFFICIAL:是否是官方的 AUTOMATED:是否是自動構(gòu)建的
常用參數(shù):
--limit :只列出N個鏡像,默認25個
比如:docker search --limit 5 redis
下載鏡像
docker pull 鏡像名稱[:TAG]
沒有TAG就是最新版 等價于
docker pull 鏡像名字:latest
查看鏡像/容器/數(shù)據(jù)卷所占的空間
docker system df
如下:
刪除某個鏡像
docker rmi 某個鏡像名字或ID
當(dāng)被刪除的鏡像已經(jīng)創(chuàng)建了實例容器后,需要用以下參數(shù)強制刪除:
-f
比如:docker rmi -f redis
強制刪除多個:
docker rmi -f 鏡像名1[:TAG] 鏡像名2[:TAG] ...
問題:什么是Docker虛懸鏡像
倉庫名、標(biāo)簽都是
容器命令
新建并啟動容器
docker run [options] image [command] [arg...]
run執(zhí)行流程圖 常用選項(options,重點):
--name="容器新名字" 為容器指定一個名稱;
-d:后臺運行容器并返回容器ID,也即啟動守護式容器(后臺運行);
-i:以交互模式運行容器,通常與t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;
也即啟動交互式容器(前臺有偽終端,等待交互);
-P:隨機端口映射,大寫P
-p:指定端口映射,小寫p
釋義: 1.啟動一個交互式容器,比如一個centos系統(tǒng) 如果使用的不是鏡像的latest版本則需要在后面加上版本號
啟動完成后注意觀察終端的用戶名稱,會變?yōu)樾陆K端的名稱。此時可以進行交互
2.端口映射的作用
列出當(dāng)前所有正在運行的容器
docker ps [options]
常用選項:
-a:列出當(dāng)前所有正在運行的容器+歷史上運行過的
-l:顯示最近創(chuàng)建的容器
-n:顯示最近n個創(chuàng)建的容器
-q:靜默模式,只顯示容器編號
退出容器
1、使用exit命令退出 run進去容器,exit退出,容器停止 2、ctrl+p+q run進去容器,ctrl+p+q退出,容器不停止
啟動已經(jīng)停止的容器
docker start 容器ID或者容器名
重啟、停止、強制停止容器
#重啟
docker restart 容器ID或者容器名
#停止
docker stop 容器ID或者容器名
#強制停止
docker kill 容器ID或者容器名
刪除已停止的容器
一定要先停止容器才能刪除
docker rm 容器ID
常用選項
-f:強制刪除某個容器,即使正在運行
一次性刪除多個容器實例
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
啟動守護容器詳解
何為守護容器?
在大部分的場景下,我們希望docker的服務(wù)是在后臺運行的,我們可以過 -d 指定容器的后臺運行模式。
機制解析
很重要的一點: Docker容器后臺運行,就必須有一個前臺進程 容器運行的命令如果不是那些一直掛起的命令(比如運行top,tail),就是會自動退出的。
例子:以守護容器的方式啟動redis
查看容器日志
docker logs 容器ID
查看容器內(nèi)運行的進程
docker top 容器ID
查看容器內(nèi)部細節(jié)
docker inspect 容器ID
進入正在運行的容器并以命令行交互(重要)
docker exec命令
docker exec [options] 容器ID 命令行環(huán)境(bash或者/bin/bash或者/bin/sh)
常用選項
-d:后臺運行容器并返回容器ID,也即啟動守護式容器(后臺運行);
-i:以交互模式運行容器,通常與t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;
也即啟動交互式容器(前臺有偽終端,等待交互);
docker attach命令
docker attach 容器ID
兩者區(qū)別
attach直接進入容器啟動命令的終端,不會啟動新的進程用exit退出,會導(dǎo)致容器的停止。 exec是在容器中打開新的終端,并且可以啟動新的進程用exit退出,不會導(dǎo)致容器的停止。
推薦使用exec
例子:進入正在運行的redis容器并以命令行形式進行交互
從容器內(nèi)拷貝命令到主機上
docker cp 容器ID:容器內(nèi)路徑 目的主機路徑
導(dǎo)入和導(dǎo)出容器(用于自己制作鏡像)
方式1:export和import
注意:導(dǎo)入的容器會作為一個鏡像?。?!
#導(dǎo)出
docker export 容器ID > 文件名.tar(或者一個新文件的絕對路徑,只有文件名即導(dǎo)入到當(dāng)前目錄下)
# 導(dǎo)入
cat 文件名.tar(或者一個新文件的絕對路徑) | docker import - 鏡像用戶/鏡像名:鏡像版本號
鏡像用戶、鏡像名、鏡像版本號均可自定義,注意:橫杠和后面的內(nèi)容直接有空格
export導(dǎo)出容器的內(nèi)容流作為一個tar歸檔文件[對應(yīng)import命令] import 從tar包中的內(nèi)容創(chuàng)建一個新的文件系統(tǒng)再導(dǎo)入為鏡像[對應(yīng)export命令]
方式2:commit
通過該命令將一個容器處理成一個鏡像
docker commit -m="提交的信息" -a="作者" 容器ID 要創(chuàng)建的目標(biāo)鏡像名[:版本號]
兩者區(qū)別
方式一相當(dāng)于先把一個容器打包成壓縮包然后導(dǎo)入成一個鏡像其本質(zhì)是一個壓縮包,每次都是一個整體。方式二相當(dāng)于在Base鏡像的基礎(chǔ)上擴展,如下圖:
容器數(shù)據(jù)卷
主要作用: 1.將容器內(nèi)的數(shù)據(jù)備份到宿主機對應(yīng)目錄中,防止數(shù)據(jù)丟失 2.在讀寫權(quán)限允許的情況下,可以在宿主機目錄中對映射的容器內(nèi)對應(yīng)文件進行修改而不必進入容器修改。簡化操作 語法:
1.使用命令
使用多個-v命令可以掛載多個文件或目錄 如果要設(shè)置讀寫權(quán)限則在后面加上即可,如下 (默認為rw):
這里的權(quán)限限制的是容器內(nèi)的目錄或文件而不是宿主機 2.使用docker-compose編排服務(wù)
個人理解: 比如在宿主機A中有個xxx.txt文件,在容器B中有個yyy.txt文件。 此時通過 -v命令 將宿主機A中的xxx.txt文件與容器B中的yyy.txt文件進行映射(即將容器B中的yyy.txt文件掛載到宿主機A中的xxx.txt文件)。這種映射可以是文件,也可以是目錄。 此時如果容器中對應(yīng)文件是可讀寫的,那么當(dāng)在容器B內(nèi)修改yyy.txt文件的內(nèi)容時宿主機A中的xxx.txt文件的內(nèi)容也會相應(yīng)更改,反之亦然。 如果映射的是目錄也是同理,比如在宿主機A的XXX目錄中新建了一個xxx.txt文件則在容器內(nèi)對應(yīng)的YYY目錄中也會新增一個xxx.txt文件,反之亦然。 上述操作,即使容器已經(jīng)停止了,只要再啟動回來也依舊能進行同步。
查看容器的掛載目錄(文件)
通過以下命令查看:
docker inspect 容器ID
容器卷之間的繼承
語法:
1.使用命令
個人理解: 現(xiàn)在有兩個容器B1和B2,其中容器B1已經(jīng)與宿主機建立了某種映射關(guān)系?,F(xiàn)在通過以上命令將容器B2繼承容器B1的映射關(guān)系。此時容器B2與宿主機的映射關(guān)系就相同了。此時哪怕容器B1停止甚至銷毀了,容器B2與宿主機之間的映射關(guān)系都不會消失。
掛載權(quán)限問題
如果使用命令則加上--privileged=true即可: 如果使用的是docker-compose編排服務(wù)的方式則通過以下配置開啟權(quán)限:
Dockerfile(重點)
Dockerfile是用來構(gòu)建Docker鏡像的文本文件,是由一條條構(gòu)建鏡像所需的指令和參數(shù)構(gòu)成的腳本。 相當(dāng)于一個清單,里面包含構(gòu)建當(dāng)前鏡像所需要的所有構(gòu)建命令。
在Dockerfile中: 1:每條保留字指令都必須為大寫字母且后面要跟隨至少一個參數(shù) 2:指令按照從上到下,順序執(zhí)行 3:#表示注釋 4:每條指令都會創(chuàng)建一個新的鏡像層并對鏡像進行提交
Docker執(zhí)行Dockerfile的大致流程
(1)docker從基礎(chǔ)鏡像運行一個容器 (2)執(zhí)行一條指令并對容器作出修改 (3)執(zhí)行類似docker commit的操作提交一個新的鏡像層 (4) docker再基于剛提交的鏡像運行一個新容器 (5)執(zhí)行dockerfile中的下一條指令直到所有指令都執(zhí)行完成
常用保留字*
FROM 基礎(chǔ)鏡像,當(dāng)前新鏡像是基于哪個鏡像的,指定一個已經(jīng)存在的鏡像作為模板,第一條必須是from
MAINTAINER(已棄用) 鏡像維護者的姓名和郵箱地址
RUN 指定容器構(gòu)建時需要運行的命令 兩種格式: 1.shell格式:RUN <命令行命令> <命令行命令>等同于,在終端操作的shell命令。 2.exec格式 RUN [“可執(zhí)行文件”,“參數(shù)1”,“參數(shù)2”] 例如: RUN [ “./test.php”, “dev”, “offline”]等價于RUN ./test.php dev offline
EXPOSE 當(dāng)前容器對外暴露出的端口
WORKDIR 指定在創(chuàng)建容器后,終端默認登錄進來的工作目錄,一個落腳點。即運行該容器后所在的容器內(nèi)部目錄
USER 指定該鏡像以什么樣的用戶去執(zhí)行,如果都不指定,默認是root
ENV 用來在構(gòu)建鏡像過程中設(shè)置環(huán)境變量
VOLUME 容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作
ADD與COPY ADD:將宿主機目錄下的文件拷貝進鏡像里的目錄且會自動處理URL和解壓tar壓縮包 COPY:拷貝文件和目錄到鏡像中。將從構(gòu)建上下文目錄中<源路徑>的文件/目錄復(fù)制到新的一層的鏡像內(nèi)的<目標(biāo)路徑>位置
CMD與ENTRYPOINT 都是指定容器啟動后(run之后) 要干的事情 CMD:
ENTRYPOINT:
DockerNetWork(重點)
docker在啟動后會產(chǎn)生一個名為docker0的虛擬網(wǎng)橋:
DockerNetWork的作用
1.用于進行docker的網(wǎng)絡(luò)管理和容器調(diào)用之間的規(guī)劃 2.容器ip變動時候可以通過服務(wù)名直接網(wǎng)絡(luò)通信而不受到影響。docker容器的ip會因為容器的重啟、重新創(chuàng)建等產(chǎn)生變動所以推薦用服務(wù)名來進行網(wǎng)絡(luò)通信,避免寫死ip
針對第二個作用例子如下: 我們在容器編排時,編排了兩個服務(wù)mysql和redis: 同時將它們劃歸到了同一個名為darkforest_net的自定義docker網(wǎng)絡(luò)下
此時在springboot項目的配置文件中就可以直接采用服務(wù)名來連接服務(wù)了,而無需寫死ip地址:
采用這種方式后,無論mysql和redis兩個服務(wù)的ip地址如何變化,docker都能自動映射。無需手動變更ip
docker網(wǎng)絡(luò)模式
設(shè)置方式
bridge模式(常用)
例子: 通過ip addr命令查看宿主機中的ip分配情況:
以同樣的方式查看容器中的ip分配情況:
可以注意到是存在對應(yīng)關(guān)系的,這里描述的就是上面圖中bridge上的情況。
host模式
none模式
container模式
要注意:諸如tomcat等容器會默認使用8080端口,此時如果有個tomcat容器采用這種方式共用另一個tomcat容器的網(wǎng)絡(luò)模式則會造成端口沖突(因為ip和端口都一樣)。此時可以選擇更改其中一個tomcat容器的默認端口(8080)。
自定義docker網(wǎng)絡(luò)(常用)
作用:將一個或一組容器劃歸到同一個自定義網(wǎng)絡(luò)中(即處在同一網(wǎng)段),以便通過服務(wù)名實現(xiàn)容器間的數(shù)據(jù)互通和進行網(wǎng)絡(luò)管理。通過創(chuàng)建多個自定義網(wǎng)絡(luò)來管理多組容器
自定義網(wǎng)絡(luò)默認使用bridge模式
創(chuàng)建和加入命令
創(chuàng)建自定義網(wǎng)絡(luò)命令:
docker network create 自定義網(wǎng)絡(luò)名稱
docker-compose配置文件中:
加入自定義網(wǎng)絡(luò)選項:
--network 自定義的網(wǎng)絡(luò)名稱
docker-compose配置文件中:
注意點(關(guān)注)
1.采用docker-compose配置文件的方式創(chuàng)建自定義網(wǎng)絡(luò)時,網(wǎng)絡(luò)名稱會帶上所在目錄的前綴 在lighthouse目錄下執(zhí)行該docker-compose.yml文件后查看當(dāng)前所有的docker網(wǎng)絡(luò)
可以發(fā)現(xiàn)多了一個所在目錄的前綴
2.docker-compose配置文件中為容器服務(wù)配置的網(wǎng)絡(luò),一定要在docker-compose配置文件中創(chuàng)建。不能先創(chuàng)建再執(zhí)行會報找不到網(wǎng)絡(luò)的錯,即便加上目錄前綴也沒用。(docker版本:20.10.21;docker-compose版本:2.12.2)
查看docker網(wǎng)絡(luò)
命令:
docker network ls
查看網(wǎng)絡(luò)源數(shù)據(jù)
命令:
docker network inspect 網(wǎng)絡(luò)ID
Docker Compose容器編排(重點)
安裝
見官網(wǎng)地址 官網(wǎng)下載較慢,可以使用國內(nèi)網(wǎng)站提供的鏡像
容器編排步驟
實際生產(chǎn)場景中一般使用一下命令來將容器實例運行為后臺服務(wù):
docker-compose up -d
Compose 模板文件指令
模板文件是使用 Docker Compose 的核心,涉及到的指令關(guān)鍵字也比較多。默認的模板文件名稱為 docker-compose.yml ,格式為YAML 格式。一個 docker-compose.yml 文件可以分為三層:
#第一層 版本號
version: "3.8" #代表使用docker-compose項目的版本號
#第二層:services 服務(wù)配置
services:
web:
build: .
ports: #宿主機和容器的端口映射
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
# 第三層 其他配置 網(wǎng)絡(luò)、卷、全局規(guī)劃
...
build 指令
指定 Dockerfile 所在文件夾的路徑(可以是絕對路徑,或者相對 docker-compose.yml 文件的路徑)。 Compose 將會利用它自動構(gòu)建這個鏡像,然后使用這個鏡像。
version: "3.8"
services:
web:
build: . #指定Dockerfile的上下文目錄為當(dāng)前目錄
如上例子:要求構(gòu)建web鏡像的Dockerfile與 docker-compose.yml 文件在同一目錄下。
你也可以使用 context 指令指定 Dockerfile 所在文件夾的路徑。 使用 dockerfile 指令指定 Dockerfile 文件名。 使用 arg 指令指定構(gòu)建鏡像時的變量。 如下例子:
version: '3'
services:
webapp:
build:
context: ./dir #指定Dockerfile的上下文目錄為當(dāng)前目錄的dir目錄下
dockerfile: Dockerfile-alternate #指定要運行的Dockerfile文件名為Dockerfile-alternate
args:
buildno: 1
command 指令
覆蓋容器啟動后默認執(zhí)行的命令,類似于docker run image 命令 以下面的Dockerfile文件為例,容器啟動后執(zhí)行的是 java -jar apps.jar
FROM openjdk:8-jre
EXPOSE 8081
ENV APP_PATH=/apps
WORKDIR $APP_PATH
COPY apps.jar $APP_PATH
ENTRYPOINT ["java","-jar"]
CMD ["apps.jar"]
如果我們想要容器啟動后執(zhí)行的是 java -jar test.jar, 在docker-compose.yml文件中使用指令 command: [“test.jar”]
version: '3'
services:
webapp:
build:
context: ./dir #定Dockerfile的上下文目錄為當(dāng)前目錄的dir目錄下
dockerfile: Dockerfile-alternate
args:
buildno: 1
command: ["test.jar"]
container_name 指令(不推薦使用)
指定容器名稱。默認將會使用 所在目錄名_服務(wù)名稱_序號 這樣的格式。
container_name: docker-web-container
注意: 指定容器名稱后,該服務(wù)將無法進行擴展(scale),因為 Docker 不允許多個容器具有相同的名稱。
depends_on 指令
解決容器的依賴、啟動先后的問題。以下例子中會先啟動 redis 、db 再啟動 web:
version: '3'
services:
web:
build: .
depends_on: # web服務(wù)依賴于db和web服務(wù)
- db
- redis
redis:
image: redis
db:
image: postgres
注意:在啟動web服務(wù)時,并不會等待 redis 、db 服務(wù)進入ready狀態(tài),而只是等到它們被啟動狀態(tài)(running狀態(tài))。
environment 指令
設(shè)置環(huán)境變量,相當(dāng)于 docker run -e。你可以使用數(shù)組或字典兩種格式。
只給定名稱的變量會自動獲取運行 Compose 的宿主機上對應(yīng)變量的值,可以用來防止泄露不必要的數(shù)據(jù)。
version: '3'
services:
mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root #字典格式
#====================================================
environment:
- "MYSQL_ROOT_PASSWORD=root" #數(shù)組格式
- "SESSION_SECRET"
env_file 指令
從文件中獲取環(huán)境變量,可以為單獨的文件路徑或列表。 如果通過 docker-compose -f FILE 方式來指定 Compose 模板文件,則 env_file 中變量的路徑會基于模板文件路徑。 如果有變量名稱與 environment 指令沖突,則按照慣例,以 environment 為準(zhǔn)。
env_file: .env
env_file: #指定多個環(huán)境變量文件
- ./common.env
- ./.env
- /opt/secrets.env
環(huán)境變量文件中每一行必須符合格式,支持 # 開頭的注釋行。
環(huán)境變量文件 .env:推薦使用這種命名,因為在Linux下,這種方式命名的文件屬于隱藏文件,一定程度上防止泄露不必要的數(shù)據(jù)。
expose 指令
用來指定鏡像構(gòu)建過程中容器暴露的端口號,但不映射到宿主機,只被連接的服務(wù)訪問。 該指令compose配置文件中一般不用,都在Dockerfile文件中使用EXPOSE指定。
image 指令
指定創(chuàng)建容器實例服務(wù)所依賴的鏡像,一般為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試拉取這個鏡像,相當(dāng)于 docker run image(鏡像名)。
networks 指令
指定啟動容器時使用的網(wǎng)絡(luò),相當(dāng)于 docker run --network 詳情見Docker network章節(jié)
version: "3"
services:
some-service:
networks:
- some-network #指定使用的網(wǎng)絡(luò)
- other-network
networks: #創(chuàng)建網(wǎng)絡(luò)
some-network:
other-network:
ports 指令
指定宿主機和容器端口映射,或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。 注意:當(dāng)使用 HOST:CONTAINER格式來映射端口時,如果你使用的容器端口小于 60 并且沒放到引號里,可能會得到錯誤結(jié)果,因為YAML會自動解析xx:yy這種數(shù)字格式為 60 進制。為避免出現(xiàn)這種問題,建議數(shù)字串都采用引號包括起來的字符串格式。
volumes 指令
用來指定宿主機目錄(或文件)和容器目錄(或文件)映射。目錄(或文件)不存在時會自動創(chuàng)建 詳情見容器數(shù)據(jù)卷章節(jié)
version: "3"
services:
my_src:
image: mysql:8.0
volumes: #數(shù)據(jù)卷名稱掛載
- mysql_data:/var/lib/mysql
volumes: #定義數(shù)據(jù)卷名稱
mysql_data:
restart 指令
指定容器退出后的重啟策略為始終重啟。該命令對保持服務(wù)始終運行十分有效。
restart: always
柚子快報邀請碼778899分享:運維 Docker學(xué)習(xí)筆記
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。