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

【云原生】Docker-compose中所有模塊學(xué)習(xí)

這篇具有很好參考價(jià)值的文章主要介紹了【云原生】Docker-compose中所有模塊學(xué)習(xí)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【云原生】Docker-compose中所有模塊學(xué)習(xí),云原生,開發(fā)語言,架構(gòu),容器

?

compose模塊

????????模板文件是使用 Compose 的核心,涉及到的指令關(guān)鍵字也比較多。但大家不用擔(dān)心,這里面大部分指令跟 docker run 相關(guān)參數(shù)的含義都是類似的。

默認(rèn)的模板文件名稱為 docker-compose.yml,格式為 YAML 格式。

version: "3"
services:
  webapp:
 ?  image: examples/web
 ?  ports:
 ? ?  \- "80:80"
 ?  volumes:
 ? ?  \- "/data"

注意每個(gè)服務(wù)都必須通過 image 指令指定鏡像或 build 指令(需要 Dockerfile)等來自動構(gòu)建生成鏡像。

如果使用 build 指令,在 Dockerfile 中設(shè)置的選項(xiàng)(例如:CMD, EXPOSE, VOLUME, ENV 等) 將會自動被獲取,無需在 docker-compose.yml 中重復(fù)設(shè)置。

下面分別介紹各個(gè)指令的用法。

build

指定 Dockerfile 所在文件夾的路徑(可以是絕對路徑,或者相對 docker-compose.yml 文件的路徑)。 Compose 將會利用它自動構(gòu)建這個(gè)鏡像,然后使用這個(gè)鏡像。

version: '3'
services:
  webapp:
  build: ./dir

你也可以使用 context 指令指定 Dockerfile 所在文件夾的路徑。

使用 dockerfile 指令指定 Dockerfile 文件名。

使用 arg 指令指定構(gòu)建鏡像時(shí)的變量。

version: '3'
services:
  webapp:
  build:
 ?  context: ./dir
 ?  dockerfile: Dockerfile-alternate
 ?  args:
 ? ?  buildno: 1

使用 cache_from 指定構(gòu)建鏡像的緩存

build:
  context: .
  cache_from:
 ? ? - alpine:latest
 ?  - corp/web_app:3.14

cap_add, cap_drop

指定容器的內(nèi)核能力(capacity)分配。

例如,讓容器擁有所有能力可以指定為:

cap_add:

- ALL

去掉 NET_ADMIN 能力可以指定為:

cap_drop:

- NET_ADMIN

command

覆蓋容器啟動后默認(rèn)執(zhí)行的命令。

command: echo "hello world"

configs

僅用于 Swarm mode,詳細(xì)內(nèi)容請查看 Swarm mode 一節(jié)。

cgroup_parent

指定父 cgroup 組,意味著將繼承該組的資源限制。

例如,創(chuàng)建了一個(gè) cgroup 組名稱為 cgroups_1。

cgroup_parent: cgroups_1

container_name

指定容器名稱。默認(rèn)將會使用 項(xiàng)目名稱_服務(wù)名稱_序號 這樣的格式。

container_name: docker-web-container

注意: 指定容器名稱后,該服務(wù)將無法進(jìn)行擴(kuò)展(scale),因?yàn)?Docker 不允許多個(gè)容器具有相同的名稱。

deploy

僅用于 Swarm mode,詳細(xì)內(nèi)容請查看 Swarm mode 一節(jié)

devices

指定設(shè)備映射關(guān)系。

devices:

- "/dev/ttyUSB1:/dev/ttyUSB0"

depends_on

解決容器的依賴、啟動先后的問題。以下例子中會先啟動 redis db 再啟動 web

version: '3'
?
services:
  web:
 ?  build: .
 ?  depends_on:
 ? ? - db
 ? ? - redis
?
redis:
  image: redis
?
db:
  image: postgres

注意:web 服務(wù)不會等待 redis db 「完全啟動」之后才啟動。

dns

自定義 DNS 服務(wù)器??梢允且粋€(gè)值,也可以是一個(gè)列表。

dns: 8.8.8.8

dns:
  - 8.8.8.8
  - 114.114.114.114

dns_search

配置 DNS 搜索域。可以是一個(gè)值,也可以是一個(gè)列表。

dns_search: example.com

dns_search:
  \- domain1.example.com
  \- domain2.example.com

tmpfs

掛載一個(gè) tmpfs 文件系統(tǒng)到容器。

tmpfs: /run

tmpfs:
  \- /run
  \- /tmp

env_file

從文件中獲取環(huán)境變量,可以為單獨(dú)的文件路徑或列表。

如果通過 docker-compose -f FILE 方式來指定 Compose 模板文件,則 env_file 中變量的路徑會基于模板文件路徑。

如果有變量名稱與 environment 指令沖突,則按照慣例,以后者為準(zhǔn)。

env_file: .env

env_file:
  \- ./common.env
  \- ./apps/web.env
  \- /opt/secrets.env

環(huán)境變量文件中每一行必須符合格式,支持 # 開頭的注釋行。

# common.env: Set development environment

PROG_ENV=development

environment

設(shè)置環(huán)境變量。你可以使用數(shù)組或字典兩種格式。

只給定名稱的變量會自動獲取運(yùn)行 Compose 主機(jī)上對應(yīng)變量的值,可以用來防止泄露不必要的數(shù)據(jù)。

environment:
  RACK_ENV: development
  SESSION_SECRET:
environment:
  \- RACK_ENV=development
  \- SESSION_SECRET

如果變量名稱或者值中用到 true|false,yes|no 等表達(dá) 布爾 含義的詞匯,最好放到引號里,避免 YAML 自動解析某些內(nèi)容為對應(yīng)的布爾語義。這些特定詞匯,包括

y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF

expose

暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問。

僅可以指定內(nèi)部端口為參數(shù)

expose:
 - "3000"
 - "8000"

external_links

注意:不建議使用該指令。

鏈接到 docker-compose.yml 外部的容器,甚至并非 Compose 管理的外部容器。

external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql

extra_hosts

類似 Docker 中的 --add-host 參數(shù),指定額外的 host 名稱映射信息。

extra_hosts:
 - "googledns:8.8.8.8"
 - "dockerhub:52.1.157.61"

會在啟動后的服務(wù)容器中 /etc/hosts 文件中添加如下兩條條目。

8.8.8.8 googledns

52.1.157.61 dockerhub

healthcheck

通過命令檢查容器是否健康運(yùn)行。

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]
  interval: 1m30s
  timeout: 10s
  retries: 3

image

指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試?yán)∵@個(gè)鏡像。

image: ubuntu

image: orchardup/postgresql

image: a4bc65fd

labels

為容器添加 Docker 元數(shù)據(jù)(metadata)信息。例如可以為容器添加輔助說明信息。

labels:
  com.startupteam.description: "webapp for a startup team"
  com.startupteam.department: "devops department"
  com.startupteam.release: "rc3 for v1.0"

links

注意:不推薦使用該指令。

logging

配置日志選項(xiàng)。

logging:
  driver: syslog
  options:
 ?  syslog-address: "tcp://192.168.0.42:123"

目前支持三種日志驅(qū)動類型。

driver: "json-file"
driver: "syslog"
driver: "none"

options 配置日志驅(qū)動的相關(guān)參數(shù)。

options:
  max-size: "200k"
  max-file: "10"

network_mode

設(shè)置網(wǎng)絡(luò)模式。使用和 docker run--network 參數(shù)一樣的值。

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

networks

配置容器連接的網(wǎng)絡(luò)。

version: "3"
services:
?
  some-service:
 ?  networks:
 ? ?  \- some-network
 ? ?  \- other-network
?
networks:
  some-network:
  other-network:

pid

跟主機(jī)系統(tǒng)共享進(jìn)程命名空間。打開該選項(xiàng)的容器之間,以及容器和宿主機(jī)系統(tǒng)之間可以通過進(jìn)程 ID 來相互訪問和操作。

pid: "host"

ports

暴露端口信息。

使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者僅僅指定容器的端口(宿主將會隨機(jī)選擇端口)都可以。

ports:
  - "3000"
  - "8000:8000"
  - "49100:22"
  - "127.0.0.1:8001:8001"

注意:當(dāng)使用 *HOST:CONTAINER* 格式來映射端口時(shí),如果你使用的容器端口小于 60 并且沒放到引號里,可能會得到錯誤結(jié)果,因?yàn)?/em> *YAML* 會自動解析 *xx:yy* 這種數(shù)字格式為 60 進(jìn)制。為避免出現(xiàn)這種問題,建議數(shù)字串都采用引號包括起來的字符串格式。

secrets

存儲敏感數(shù)據(jù),例如 mysql 服務(wù)密碼。

version: "3.1"
services:
?
mysql:
  image: mysql
  environment:
 ?  MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
  secrets:
 ?  - db_root_password
 ?  - my_other_secret
?
secrets:
  my_secret:
 ?  file: ./my_secret.txt
  my_other_secret:
 ?  external: true

security_opt

指定容器模板標(biāo)簽(label)機(jī)制的默認(rèn)屬性(用戶、角色、類型、級別等)。例如配置標(biāo)簽的用戶名和角色名。

security_opt:
 ?  - label:user:USER
 ?  - label:role:ROLE

stop_signal

設(shè)置另一個(gè)信號來停止容器。在默認(rèn)情況下使用的是 SIGTERM 停止容器。

stop_signal: SIGUSR1

sysctls

配置容器內(nèi)核參數(shù)。

sysctls:
  net.core.somaxconn: 1024
  net.ipv4.tcp_syncookies: 0
?
sysctls:
  - net.core.somaxconn=1024
  - net.ipv4.tcp_syncookies=0

ulimits

指定容器的 ulimits 限制值。

例如,指定最大進(jìn)程數(shù)為 65535,指定文件句柄數(shù)為 20000(軟限制,應(yīng)用可以隨時(shí)修改,不能超過硬限制) 和 40000(系統(tǒng)硬限制,只能 root 用戶提高)。

  ulimits:
 ?  nproc: 65535
 ?  nofile:
 ? ?  soft: 20000
 ? ?  hard: 40000

volumes

數(shù)據(jù)卷所掛載路徑設(shè)置。可以設(shè)置為宿主機(jī)路徑(HOST:CONTAINER)或者數(shù)據(jù)卷名稱(VOLUME:CONTAINER),并且可以設(shè)置訪問模式 (HOST:CONTAINER:ro)。

該指令中路徑支持相對路徑。

volumes:
  - /var/lib/mysql
  - cache/:/tmp/cache
  - ~/configs:/etc/configs/:ro

如果路徑為數(shù)據(jù)卷名稱,必須在文件中配置數(shù)據(jù)卷。

version: "3"
?
services:
  my_src:
 ?  image: mysql:8.0
 ?  volumes:
 ? ?  - mysql_data:/var/lib/mysql
?
volumes:
  mysql_data: ?

其它指令

此外,還有包括 domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir 等指令,基本跟 docker run 中對應(yīng)參數(shù)的功能一致。

指定服務(wù)容器啟動后執(zhí)行的入口文件。

entrypoint: /code/entrypoint.sh

指定容器中運(yùn)行應(yīng)用的用戶名。

user: nginx

指定容器中工作目錄。

working_dir: /code

指定容器中搜索域名、主機(jī)名、mac 地址等。

domainname: your_website.com

hostname: test

mac_address: 08-00-27-00-0C-0A

允許容器中運(yùn)行一些特權(quán)命令。

privileged: true

指定容器退出后的重啟策略為始終重啟。該命令對保持服務(wù)始終運(yùn)行十分有效,在生產(chǎn)環(huán)境中推薦配置為 always 或者 unless-stopped

restart: always

以只讀模式掛載容器的 root 文件系統(tǒng),意味著不能對容器內(nèi)容進(jìn)行修改。

read_only: true

打開標(biāo)準(zhǔn)輸入,可以接受外部輸入。

stdin_open: true

模擬一個(gè)偽終端。

tty: true

讀取變量

Compose 模板文件支持動態(tài)讀取主機(jī)的系統(tǒng)環(huán)境變量和當(dāng)前目錄下的 .env 文件中的變量。

例如,下面的 Compose 文件將從運(yùn)行它的環(huán)境中讀取變量 ${MONGO_VERSION} 的值,并寫入執(zhí)行的指令中。

version: "3"

services:

db:

image: "mongo:${MONGO_VERSION}"

如果執(zhí)行 MONGO_VERSION=3.2 docker-compose up 則會啟動一個(gè) mongo:3.2 鏡像的容器;如果執(zhí)行 MONGO_VERSION=2.8 docker-compose up 則會啟動一個(gè) mongo:2.8 鏡像的容器。

若當(dāng)前目錄存在 .env 文件,執(zhí)行 docker-compose 命令時(shí)將從該文件中讀取變量。

在當(dāng)前目錄新建 .env 文件并寫入以下內(nèi)容。

# 支持 # 號注釋

MONGO_VERSION=3.6

執(zhí)行 docker-compose up 則會啟動一個(gè) mongo:3.6 鏡像的容器。

常用模塊

1.build指令

通過docker-compose在啟動容器之前現(xiàn)根據(jù)dockerfile構(gòu)建鏡像,然后根據(jù)構(gòu)建鏡像啟動容器

2.command

覆蓋容器啟動后默認(rèn)執(zhí)行的命令

3.container_name

用來指定docker-compose啟動容器名稱 注意:不推薦指定容器名稱

4.depends_on

解決容器的依賴,啟動先后的問題

5.environment

用來給容器啟動指定環(huán)境變量 相當(dāng)于docker run -e

6.env_file

用來給容器啟動指定環(huán)境變量文件

7.expose

用來指定構(gòu)建鏡像過程中容器暴露的端口號 docker run -p 端口:端口

8.image

用來指定啟動容器使用鏡像 docker run image(鏡像名或ID)

9.networks

用來指定容器啟動的網(wǎng)絡(luò) docker run --network

10.ports

用來指定宿主機(jī)和容器端口映射 docker run -p

11.volumes

用來指定宿主機(jī)中容器目錄映射 docker run -v

12.restart

用來指定docker容器是否總是運(yùn)行 docker run --restart=always文章來源地址http://www.zghlxwxcb.cn/news/detail-630806.html

到了這里,關(guān)于【云原生】Docker-compose中所有模塊學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(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-compose單機(jī)容器集群編排

    【云原生】Docker-compose單機(jī)容器集群編排

    Compose是單機(jī)編排容器集群或者是分布式服務(wù)容器的應(yīng)用工具。通過Compose,可以使用YAML文件來配置應(yīng)用程序的服務(wù)。然后,使用一個(gè)命令,就可以從配置中創(chuàng)建并啟動所有服務(wù)。 Docker-Compose是一個(gè)容器編排工具。通過一個(gè).yml或.yaml文件,將所有的容器的部署方法、文件映射、

    2024年02月09日
    瀏覽(30)
  • [云原生1. ] 使用Docker-compose一鍵部署Wordpress平臺

    [云原生1. ] 使用Docker-compose一鍵部署Wordpress平臺

    docker-compose 是實(shí)現(xiàn)在單機(jī)上對容器集群編排管理的工具。 docker-compose 是基于python開發(fā)的,能運(yùn)行docker的平臺,都能用docker-compose編排管理容器。 本質(zhì)就是在 yaml格式 的 docker-compose配置模板文件 里定義多個(gè)容器的啟動參數(shù)和依賴關(guān)系,并使用 docker-compose 根據(jù)這個(gè)模板文件的配

    2024年02月07日
    瀏覽(58)
  • 【深入淺出Docker原理及實(shí)戰(zhàn)】「原理實(shí)戰(zhàn)體系」零基礎(chǔ)+全方位帶你學(xué)習(xí)探索Docker容器開發(fā)實(shí)戰(zhàn)指南(Docker-compose使用全解 一)

    【深入淺出Docker原理及實(shí)戰(zhàn)】「原理實(shí)戰(zhàn)體系」零基礎(chǔ)+全方位帶你學(xué)習(xí)探索Docker容器開發(fā)實(shí)戰(zhàn)指南(Docker-compose使用全解 一)

    Docker Compose是一款用于定義和運(yùn)行復(fù)雜應(yīng)用程序的Docker工具。在使用Docker容器的應(yīng)用中,通常由多個(gè)容器組成。使用Docker Compose可以擺脫使用shell腳本來啟動容器的繁瑣過程。 Compose通過一個(gè)配置文件來管理多個(gè)Docker容器。在配置文件中,我們使用services來定義所有的容器。然后

    2024年01月17日
    瀏覽(26)
  • Docker-compose 啟動 lnmp 開發(fā)環(huán)境

    Docker-compose 啟動 lnmp 開發(fā)環(huán)境

    GitHub傳送陣 docker-lnmp 項(xiàng)目幫助開發(fā)者快速構(gòu)建本地開發(fā)環(huán)境,包括Nginx、PHP、MySQL、Redis 服務(wù)鏡像,支持配置文件和日志文件映射,不限操作系統(tǒng); 此項(xiàng)目適合個(gè)人開發(fā)者本機(jī)部署,可以快速切換服務(wù)版本滿足學(xué)習(xí)服務(wù)新版本的需求; 也適合團(tuán)隊(duì)中統(tǒng)一開發(fā)環(huán)境,設(shè)定好配置

    2024年02月01日
    瀏覽(18)
  • docker學(xué)習(xí):dockerfile和docker-compose

    docker學(xué)習(xí):dockerfile和docker-compose

    以下內(nèi)容,部分來自gpt生成,里面的描述可能會出現(xiàn)問題,但代碼部分,我都會進(jìn)行測試。 對于一個(gè)docker,例如python,我們需要其在構(gòu)建成容器時(shí),就有np。有以下兩種方法: pull python,并run后,在里面pip install numpy,隨后對這個(gè)容器進(jìn)行打包保存 在pull python時(shí),就將pip ins

    2024年02月08日
    瀏覽(21)
  • Docker Dockerfile Docker-compose學(xué)習(xí)筆記

    Docker Dockerfile Docker-compose學(xué)習(xí)筆記

    Docker目前支持Centos7及以后的版本。64位操作系統(tǒng),內(nèi)核版本至少為3.10 安裝軟件源,以及devicemapper存儲類型 添加Docker yum源 安裝Docker 啟動Docker 測試是否能獲取鏡像 查看獲取的鏡像 生效配置信息 安裝Docker需要保證你的電腦開啟虛擬化 進(jìn)入任務(wù)管理器→點(diǎn)擊性能→看一下CPU是

    2024年02月12日
    瀏覽(47)
  • vue項(xiàng)目docker docker-compose 本地開發(fā)環(huán)境配置

    配置Docker Compose用于在本地開發(fā)Vue項(xiàng)目是一個(gè)方便且高效的方法。Docker Compose允許您定義和管理多個(gè)容器組成的應(yīng)用程序。 一、配置Docker Compose文件,用于在本地開發(fā)Vue項(xiàng)目 docker-compose.yaml 二、配置 Dockerfile Dockerfile 三、在終端中進(jìn)入Vue項(xiàng)目的根目錄,然后運(yùn)行以下命令來啟動

    2024年02月15日
    瀏覽(88)
  • 【Docker學(xué)習(xí)】—— docker-compose部署之nacos

    【Docker學(xué)習(xí)】—— docker-compose部署之nacos

    注意:nacos在2.1.0之后的版本對配置文件內(nèi)的參數(shù)key做了修改,根據(jù)所部署的版本使用正確的配置文件 文件名:hosts-prod(用于docker-compose等文件獲取統(tǒng)一環(huán)境變量) 文件名:prod.env(用于sh腳本使用docker-compose啟動時(shí)的環(huán)境變量設(shè)置) 接下來執(zhí)行sh腳本就好啦,注意觀察是否部

    2024年02月09日
    瀏覽(17)
  • Docker學(xué)習(xí)(3)-CentOS安裝Docker及Docker-Compose

    Docker學(xué)習(xí)(3)-CentOS安裝Docker及Docker-Compose

    目錄 1.安裝及配置 1.1 在線安裝 1.1.1 安裝docker 1.1.2 安裝docker-compose 1.2 離線安裝 1.2.1 安裝docker 1.2.2 安裝docker-compose 1.3 docker配置 1.3.1 配置docker鏡像(可選,如不修改存放位置可忽略) 1.3.2?docker?登錄鏡像倉庫? 2 docker 常用操作和命令 2.1 docker清理鏡像 2.2 docker-compose常用命令

    2024年04月14日
    瀏覽(24)
  • 【云原生】docker-compose安裝,解決Warning: the “docker“ command appears to already exist on this system.3的問題

    【云原生】docker-compose安裝,解決Warning: the “docker“ command appears to already exist on this system.3的問題

    https://docs.docker.com/compose/compose-file/compose-file-v3/ 參考:https://github.com/docker/compose/releases 國內(nèi)源安裝(不推薦): 查看版本: 出現(xiàn)以下問題: appears to already exist on this system. If you already have Docker installed, this script can cause trouble, which is why we’re displaying this warning and provide the opp

    2023年04月09日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包