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

Docker容器compose容器集群的快速編排方式

 更新時(shí)間:2023年11月23日 09:02:34   作者:啊啊啊啊啊建  
這篇文章主要介紹了Docker容器compose容器集群的快速編排方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

引言

Dockerfile可以讓用戶管理一個(gè)單獨(dú)的應(yīng)用容器,而Compose則允許用戶在一個(gè)模板(YAML)中定義一組相關(guān)聯(lián)的應(yīng)用容器(被稱為一個(gè)project,即項(xiàng)目),例如一個(gè)Web服務(wù)器加上后端的數(shù)據(jù)庫(kù)服務(wù)容器等。

一、Docker-compose簡(jiǎn)介

Docker-compose項(xiàng)目是基于Python開發(fā)的Docker官方開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì)Docker容器集群的快速編排

Docker-compose將所管理的容器分為三層,分別是工程(project),服務(wù)(service)以及容器(container)。

  • Docker-Compose運(yùn)行目錄下的所有文件(docker-compose.yml,extends文件或環(huán)境變量文件等)組成一個(gè)工程,若無(wú)特殊指定工程名即為當(dāng)前目錄名。
  • 一個(gè)工程當(dāng)中可包含多個(gè)服務(wù),每個(gè)服務(wù)中定義了容器運(yùn)行的鏡像、參數(shù)、依賴。
  • 一個(gè)服務(wù)當(dāng)中可括多個(gè)容器實(shí)例,Docker-compose并沒有解決負(fù)載均衡的問題,因此需要借助其他工具實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)及負(fù)載均衡,比如Consul

Docker-Compose的工程配置文件默認(rèn)為docker-compose.yml,可通過環(huán)境變量COMPOSE_FILE或-f參數(shù)自定義配置文件,其定義了多個(gè)有依賴關(guān)系的服務(wù)及每個(gè)服務(wù)運(yùn)行的容器。

使用一個(gè)Dockerfile模板文件,可以讓用戶很方便的定義一個(gè)單獨(dú)的應(yīng)用容器。在工作中,經(jīng)常會(huì)碰到需要多個(gè)容器相互配合來完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè)Web項(xiàng)目,除了Web服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫(kù)服務(wù)容器,甚至還包括負(fù)載均衡容器等。

Compose允許用戶通過一個(gè)單獨(dú)的docker-compose.yml模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應(yīng)用容器為一個(gè)項(xiàng)目(project)。

Docker-Compose項(xiàng)目由Python編寫,調(diào)用Docker服務(wù)提供的API來對(duì)容器進(jìn)行管理。因此,只要所操作的平臺(tái)支持Docker API, 就可以在其上利用Compose來進(jìn)行編排管理。

二、YAML文件格式及編寫注意事項(xiàng)

1.YAML文件格式

  • YAML 是一種標(biāo)記語(yǔ)言,它可以很直觀的展示數(shù)據(jù)序列化格式,可讀性高。
  • 類似于 json數(shù)據(jù)描述語(yǔ)言,語(yǔ)法比 json簡(jiǎn)單的很多。
  • YAML 數(shù)據(jù)結(jié)構(gòu)通過縮進(jìn)來表示,連續(xù)的項(xiàng)目通過減號(hào)來表示,鍵值對(duì)用冒號(hào)分隔,數(shù)組用中括號(hào) [ ] 括起來, hash 用花括號(hào) { }括起來。

2.YAML格式的注意事項(xiàng)

  • 不支持制表符 tab 鍵縮進(jìn),只能使用空格縮進(jìn)
  • 通常開頭縮進(jìn)2個(gè)空格
  • 字符后縮進(jìn)1個(gè)空格,如冒號(hào) : 、逗號(hào) , 、橫杠 -
  • 用 # 號(hào)注釋
  • 如果包含特殊字符用單引號(hào) ‘’ 引起來作為普通字符;如果用雙引號(hào)“”表示特殊字符本身的意思
  • 布爾值必須用引號(hào) “” 括起來
  • 區(qū)分大小寫

3.YAML數(shù)據(jù)結(jié)構(gòu)

對(duì)象: 鍵值對(duì)的字典
animal: pets
 
數(shù)組: 一組按次序排列的列表
- cat
- dog
- goldfish
 
布爾值
debug: "true"
debug: "false"
 
 
#Yaml示例
languages:  #序列的映射
  - Java
  - Golang
  - Python
websites:   #映射的映射
  Baidu: www.baidu.com
  Wangyi: www.163.com
  Souhu: www.souhu.com
  
 
#或者 
languages: ["Java","Golong","Python"]
websites: 
  Baidu: 
    www.baidu.com
  Wangyi: 
    www.163.com
  Souhu: 
    www.souhu.com
 
 
 
#Json格式
{
  languages: [
    'Java',
    'Golong',
    'Python',
  ],
  websites: [
    Baidu: 'www.baidu.com',
    Wangyi: 'www.163.com',
    Souhu: 'www.souhu.com',
  ]
}

三、Docker Compose配置常用字段

字段描述
build指定Dockerfile文件名(要指定的Dockerfile文件需要在build標(biāo)簽的子級(jí)標(biāo)簽中用dockerfile標(biāo)簽指定)
dockerfile構(gòu)建鏡像上下文路徑
context可以是dockerfile路徑,或者是執(zhí)行g(shù)it 倉(cāng)庫(kù)的url地址
image指定鏡像(已存在)
command執(zhí)行命令,會(huì)覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令(會(huì)覆蓋Dockerfile的CMD指令)
container_name指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無(wú)法scale指定容器數(shù)量
deploy指定部署和運(yùn)行服務(wù)相關(guān)配置,只能在Swarm模式使用
environment添加環(huán)境變量
networks加入網(wǎng)絡(luò),引用頂級(jí)networks下條目
network-mode設(shè)置容器的網(wǎng)絡(luò)模式
ports暴露容器端口,與-p 相同,但是端口不能低于60
volumes掛載一個(gè)宿主機(jī)目錄或命令卷到容器,命名卷要在頂級(jí)volumes 定義卷名稱
volumes_from從另一個(gè)服務(wù)或容器掛載卷,可選參數(shù) :ro 和 :rw,(僅版本‘2’支持)
hostnamehostname
hostname在容器內(nèi)設(shè)置內(nèi)核參數(shù)
links連接到另一個(gè)容器,- 服務(wù)名稱[ : ]
privileged用來給容器root權(quán)限,注意是不安全的,true
restart重啟策略,定義是否重啟容器;1.no,默認(rèn)策略,在容器退出時(shí)不重啟容器。2.on-failure,在容器非正常退出時(shí)(退出狀態(tài)非0),才會(huì)重啟容器。3.on-failure:3,在容器非正常退出時(shí)重啟容器,最多重啟3次。4.always,在容器退出時(shí)總是重啟容器。5.unless-stopped,在容器退出時(shí)總是重啟容器,但是不考慮在Docker守護(hù)進(jìn)程啟動(dòng)時(shí)就已經(jīng)停止了的容器。
depends_on此標(biāo)簽用于解決容器的依賴,啟動(dòng)先后問題。如啟動(dòng)應(yīng)用容器,需要先啟動(dòng)數(shù)據(jù)庫(kù)容器php:depends_on:- apache- mysql

四、Docker-compose常用命令

字段描述
build重新構(gòu)建服務(wù)
ps列出容器
up創(chuàng)建和啟動(dòng)容器
exec在容器里面執(zhí)行命令
scale指定一個(gè)服務(wù)容器啟動(dòng)數(shù)量
top顯示正在運(yùn)行的容器進(jìn)程
logs查看服務(wù)容器的輸出
down刪除容器、網(wǎng)絡(luò)、數(shù)據(jù)卷和鏡像
stop/start/restart停止/啟動(dòng)/重啟服務(wù)

五、compose部署

Docker-Compose 是 Docker 的獨(dú)立產(chǎn)品,因此需要安裝 Docker 之后在單獨(dú)安裝 Docker Compose。

//環(huán)境部署所有主機(jī)安裝docker環(huán)境(內(nèi)容為docker基礎(chǔ))
yum install docker-ce -y
//下載compose(上傳docker_compose)
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
cp -p docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
 
mkdir /root/compose_nginx
 
yum install -y tree
 
 
 
vim /root/compose_nginx/docker-compose.yml
 
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
       - 1216:80
       - 1217:443
    networks:
       - cluster     
    volumes:
       - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:

[root@docker /]# mkdir /opt/compose_nginx
[root@docker /]# vim /opt/compose_nginx/docker-compose.yml
[root@docker /]# vim /opt/compose_nginx/docker-compose.yml
[root@docker /]# cd /opt/compose_nginx/
[root@docker compose_nginx]# ls
docker-compose.yml
[root@docker compose_nginx]# mkdir nginx
[root@docker compose_nginx]# mkdir wwwroot
[root@docker compose_nginx]# ls
docker-compose.yml  nginx  wwwroot
[root@docker compose_nginx]# echo "i am superman" > wwwroot/index.html
[root@docker compose_nginx]# cat wwwroot/index.html
i am superman
[root@docker compose_nginx]# cd nginx
[root@docker nginx]# ls
nginx-1.22.0.tar.gz
[root@docker nginx]#

[root@docker nginx]# vim Dockerfile 
 
FROM centos:7 as build
ADD nginx-1.22.0.tar.gz /mnt
WORKDIR /mnt/nginx-1.22.0
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
 yum clean all && \
 sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
 ./configure --prefix=/usr/local/nginx &> /dev/null && \
 make &>/dev/null && \
 make install &>/dev/null && \
 rm -rf /mnt/nginx-1.22.0
 
FROM centos:7
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx","daemon off;"]

[root@docker compose_nginx]# tree ./
./
├── docker-compose.yml
├── nginx
│   ├── dockerfile
│   └── nginx-1.22.0.tar.gz
└── wwwroot
    └── index.html
 
2 directories, 4 files

docker-compose -f docker-compose.yml up -d
docker network ls

六、總結(jié)

  • Docker-Compose的工程配置文件默認(rèn)為docker-compose.yml
  • 使用一個(gè)Dockerfile模板文件,可以讓用戶很方便的定義一個(gè)單獨(dú)的應(yīng)用容器。
  • Compose允許用戶通過一個(gè)單獨(dú)的docker-compose.yml模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應(yīng)用容器為一個(gè)項(xiàng)目(project)。

docker-compose分三層:project,service,container

  • project:代表多個(gè)service組成的項(xiàng)目,默認(rèn)是用工作目錄的名稱作為project的工程名稱
  • service:一個(gè) service 可以包含一個(gè)或多個(gè)容器,在里面可以定義網(wǎng)絡(luò)模式端口鏡像數(shù)據(jù)卷等參數(shù)
  • container:可以直接由一個(gè)已存在的鏡像運(yùn)行實(shí)現(xiàn),也可以通過dockerfile構(gòu)建鏡像實(shí)現(xiàn)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker保存和加載tar及其tar.gz方式

    docker保存和加載tar及其tar.gz方式

    這篇文章主要介紹了docker保存和加載tar及其tar.gz方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法

    Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法

    這篇文章主要介紹了Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Docker部署RabbitMQ的實(shí)現(xiàn)方法(圖文并茂)

    Docker部署RabbitMQ的實(shí)現(xiàn)方法(圖文并茂)

    本文詳細(xì)介紹了如何使用Docker部署RabbitMQ的步驟,包括拉取RabbitMQ鏡像,創(chuàng)建與授權(quán)文件夾,創(chuàng)建RabbitMQ容器,查看啟動(dòng)日志,訪問控制臺(tái)和登錄等,全程詳細(xì)的參數(shù)解釋和操作步驟,讓Docker部署RabbitMQ變得簡(jiǎn)單易行
    2024-10-10
  • docker 安裝部署 Prometheus 與grafana的詳細(xì)過程

    docker 安裝部署 Prometheus 與grafana的詳細(xì)過程

    本文給大家詳細(xì)介紹了如何在CentOS 7上使用Docker和Docker Compose安裝和配置Prometheus和Grafana,并展示了如何進(jìn)行基本的監(jiān)控配置和數(shù)據(jù)可視化,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • docker安裝redis掛載容器卷同時(shí)開啟持久化

    docker安裝redis掛載容器卷同時(shí)開啟持久化

    本文主要介紹了docker安裝redis掛載容器卷同時(shí)開啟持久化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 基于Docker如何實(shí)現(xiàn)MySQL主從復(fù)制詳解

    基于Docker如何實(shí)現(xiàn)MySQL主從復(fù)制詳解

    這篇文章主要給大家介紹了關(guān)于基于Docker如何實(shí)現(xiàn)MySQL主從復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Docker 使用nsenter工具進(jìn)入容器的操作

    Docker 使用nsenter工具進(jìn)入容器的操作

    這篇文章主要介紹了Docker 使用nsenter工具進(jìn)入容器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker查看是否開機(jī)自啟及容器自啟動(dòng)設(shè)置

    Docker查看是否開機(jī)自啟及容器自啟動(dòng)設(shè)置

    Docker是當(dāng)前最流行的容器技術(shù),通過運(yùn)用容器打包應(yīng)用程序并部署到生產(chǎn)環(huán)境中,可大大提高部署的速度和可靠性,下面這篇文章主要給大家介紹了關(guān)于Docker查看是否開機(jī)自啟及容器自啟動(dòng)設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 創(chuàng)建Web項(xiàng)目的Docker鏡像實(shí)例講解

    創(chuàng)建Web項(xiàng)目的Docker鏡像實(shí)例講解

    這篇文章主要介紹了創(chuàng)建Web項(xiàng)目的Docker鏡像實(shí)例講解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Mac為docker和kubectl添加自動(dòng)補(bǔ)全命令的方法

    Mac為docker和kubectl添加自動(dòng)補(bǔ)全命令的方法

    很多朋友不太明白如何為docker和kubectl添加自動(dòng)補(bǔ)全命令,本文通過一些示例給大家介紹kubectl基礎(chǔ)概念及語(yǔ)法知識(shí),需要的朋友參考下吧
    2021-06-06

最新評(píng)論

伊金霍洛旗| 响水县| 靖西县| 讷河市| 周至县| 九台市| 宁晋县| 开鲁县| 临安市| 虹口区| 崇左市| 崇左市| 哈尔滨市| 瑞安市| 绥化市| 萍乡市| 伊川县| 古丈县| 根河市| 韶山市| 郧西县| 牙克石市| 南宫市| 兴文县| 海盐县| 德格县| 东源县| 肇东市| 五台县| 西华县| 平乡县| 怀仁县| 昌黎县| 肥西县| 英山县| 奉新县| 鹤庆县| 屯门区| 大连市| 龙陵县| 应用必备|