Compose 是一個(gè)用于定義和運(yùn)行多容器 Docker 的工具。借助 Compose,您可以使用 YAML 文件來(lái)配置應(yīng)用程序的服務(wù)。
使用 Compose 基本上分為三步:
我們可以為同一個(gè)項(xiàng)目配置多個(gè)compose文件,使用多個(gè) Compose 文件使您能夠針對(duì)不同的環(huán)境或不同的工作流程自定義 Compose 應(yīng)用程序。
默認(rèn)情況下,Compose 讀取兩個(gè)文件,docker-compose.yml和一個(gè)可選的docker-compose.override.yml文件。按照慣例,docker-compose.yml包含您的基本配置。override.yml 文件,顧名思義,就是包含現(xiàn)有服務(wù)或全新服務(wù)的配置覆蓋。
如果在兩個(gè)文件中都定義了服務(wù),Compose 會(huì)使用 override 進(jìn)行合并配置。
要使用多個(gè)覆蓋文件或具有不同名稱的覆蓋文件,您可以使用該-f選項(xiàng)來(lái)指定文件列表。Compose 按照在命令行中指定的順序合并文件。
當(dāng)您使用多個(gè)配置文件時(shí),您必須確保文件中的所有路徑都相對(duì)于基本 Compose 文件( 指定的第一個(gè) Compose 文件-f)
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
版本信息,定義關(guān)乎于docker的兼容性,Compose 文件格式有3個(gè)版本,分別為1, 2.x 和 3.x
指定構(gòu)建鏡像的 dockerfile 的上下文路徑,或者詳細(xì)配置對(duì)象。
version: "3.9"
services:
webapp:
build: ./dir #指定路徑
或者更詳細(xì)配置的寫(xiě)法:
version: "3.9"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
默認(rèn)情況下,Compose為您的應(yīng)用程序設(shè)置單個(gè)網(wǎng)絡(luò)。services 服務(wù)的每個(gè)容器都加入默認(rèn)網(wǎng)絡(luò),并且可以被該網(wǎng)絡(luò)上的其他容器訪問(wèn)。
您的應(yīng)用程序網(wǎng)絡(luò)的名稱基于“項(xiàng)目名稱”,也就是其所在目錄的名稱。您可以使用 --project-name 命令行選項(xiàng) 或 COMPOSE_PROJECT_NAME 環(huán)境變量覆蓋項(xiàng)目名稱。
例如,假設(shè)您的應(yīng)用程序是在一個(gè)名為myapp目錄下,docker-compose.yml如下:
version: "3.9"
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
ports:
- "8001:5432"
運(yùn)行docker-compose up,會(huì)發(fā)生以下情況:
上面例子還有一個(gè)注意點(diǎn)就是端口號(hào),注意區(qū)分HOST_PORT和CONTAINER_PORT,以上面的db為例:
當(dāng)容器之間通訊時(shí) , 是通過(guò) CONTAINER_PORT 來(lái)連接的。
我們可以通過(guò)設(shè)置一級(jí)配置network自定義網(wǎng)絡(luò),創(chuàng)建更復(fù)雜的網(wǎng)絡(luò)選項(xiàng),也可以用來(lái)連接已經(jīng)存在的網(wǎng)絡(luò)(不是通過(guò)compose創(chuàng)建的)
每個(gè)service 配置下也可以指定networks配置,來(lái)指定一級(jí)配置的網(wǎng)絡(luò)。
version: "3"
services:
proxy:
build: ./proxy
networks:
- frontend
app:
build: ./app
networks:
- frontend
- backend
db:
image: postgres
networks:
- backend
networks:
frontend:
# Use a custom driver
driver: custom-driver-1
backend:
# Use a custom driver which takes special options
driver: custom-driver-2
driver_opts:
foo: "1"
bar: "2"
一級(jí)配置networks 創(chuàng)建了自定義的網(wǎng)絡(luò) 。這里配置了兩個(gè)frontend和backend ,且自定義了網(wǎng)絡(luò)類(lèi)型。
每一個(gè)services下,proxy , app , db都定義了networks配置。
同一網(wǎng)絡(luò)上的其他容器可以使用服務(wù)名稱或別名來(lái)連接到其他服務(wù)的容器
services:
some-service:
networks:
some-network:
aliases:
- alias1
- alias3
other-network:
aliases:
- alias2
加入網(wǎng)絡(luò)時(shí),還可以指定容器的靜態(tài) IP 地址。
version: "3.9"
services:
app:
image: nginx:alpine
networks:
app_net:
ipv4_address: 172.16.238.10
ipv6_address: 2001:3984:3989::10
networks:
app_net:
ipam:
driver: default
config:
- subnet: "172.16.238.0/24"
- subnet: "2001:3984:3989::/64"
一級(jí)networks還有如下這些配置:
driver: overlay
driver_opts:
foo: "bar"
baz: 1
networks:
mynet1:
driver: overlay
attachable: true
ipam:
driver: default
config:
- subnet: 172.28.0.0/16
version: "3.9"
services:
proxy:
build: ./proxy
networks:
- outside
- default
app:
build: ./app
networks:
- default
networks:
outside:
external: true
version: "3.9"
networks:
network1:
name: my-app-net
添加或刪除容器功能。
cap_add:
- ALL
cap_drop:
- NET_ADMIN
- SYS_ADMIN
為容器指定一個(gè)可選的父 cgroup。
cgroup_parent: m-executor-abcd
覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令
command: bundle exec thin -p 3000
command: ["bundle", "exec", "thin", "-p", "3000"]
為每個(gè)服務(wù)賦予相應(yīng)的configs訪問(wèn)權(quán)限
version: "3.9"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- my_config
- my_other_config
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
version: "3.9"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- source: my_config
target: /redis_config
uid: '103'
gid: '103'
mode: 0440
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
一級(jí)configs詳細(xì)配置:
在下面例子中,my_first_config是通過(guò)confif_data文件內(nèi)容創(chuàng)建的(就像 <stack_name>_my_first_config)部署堆棧時(shí)一樣,并且my_second_config已經(jīng)創(chuàng)建過(guò)。
configs:
my_first_config:
file: ./config_data
my_second_config:
external: true
當(dāng) Docker 中的配置名稱與服務(wù)中存在的名稱不同時(shí),可以使用name進(jìn)行配置。
configs:
my_first_config:
file: ./config_data
my_second_config:
external:
name: redis_config
指定自定義容器名稱,而不是生成的默認(rèn)名稱。由于 Docker 容器名稱必須是唯一的,因此如果您指定了自定義名稱,則不能將服務(wù)擴(kuò)展到 1 個(gè)以上的容器。
為托管服務(wù)帳戶配置憑據(jù)規(guī)范。此選項(xiàng)僅用于使用 Windows 容器的服務(wù)。在credential_spec上的配置列表格式為file://<filename>或registry://<value-name>
表示服務(wù)之間的依賴關(guān)系。服務(wù)依賴會(huì)導(dǎo)致以下行為:
version: "3.9"
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
指定與服務(wù)的部署和運(yùn)行有關(guān)的配置。只在 swarm 模式下才會(huì)有用。
version: "3.9"
services:
db:
image: postgres
deploy:
placement:
constraints:
- "node.role==manager"
- "engine.labels.operatingsystem==ubuntu 18.04"
preferences:
- spread: node.labels.zone
節(jié)點(diǎn)屬性 | 匹配 | 例子 |
node.id | 節(jié)點(diǎn) ID | node.id==2ivku8v2gvtg4 |
node.hostname | 節(jié)點(diǎn)主機(jī)名 | node.hostname!=node-2 |
node.role | 節(jié)點(diǎn)角色 ( manager/ worker) | node.role==manager |
node.platform.os | 節(jié)點(diǎn)操作系統(tǒng) | node.platform.os==windows |
node.platform.arch | 節(jié)點(diǎn)架構(gòu) | node.platform.arch==x86_64 |
node.labels | 用戶定義的節(jié)點(diǎn)標(biāo)簽 | node.labels.security==high |
engine.labels | Docker 引擎的標(biāo)簽 | engine.labels.operatingsystem==ubuntu-14.04 |
version: "3.9"
services:
redis:
image: redis:alpine
deploy:
resources:
limits:
cpus: '0.50'
memory: 50M
reservations:
cpus: '0.25'
memory: 20M
設(shè)備映射列表。使用與--devicedocker 客戶端創(chuàng)建選項(xiàng)格式相同。
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
自定義 DNS 服務(wù)器。可以是單個(gè)值或列表。
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
自定義 DNS 搜索域。可以是單個(gè)值或列表。
dns_search: example.com
dns_search:
- dc1.example.com
- dc2.example.com
在 Dockerfile 中有一個(gè)指令叫做ENTRYPOINT指令,用于運(yùn)行程序。在docker-compose.yml中可以定義覆蓋 Dockerfile 中定義的 entrypoint:
entrypoint: /code/entrypoint.sh
entrypoint: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"]
從文件添加環(huán)境變量。可以是單個(gè)值或列表。
如果您使用指定了 Compose 文件docker-compose -f FILE,則其中的路徑 env_file相對(duì)于該文件所在的目錄。
environment 聲明的環(huán)境變量會(huì)覆蓋這些值——即使這些值是空的或未定義的。
env_file: .env
env_file:
- ./common.env
- ./apps/web.env
- /opt/runtime_opts.env
添加環(huán)境變量。您可以使用數(shù)組或字典。任何布爾值(true、false、yes、no)都需要用引號(hào)括起來(lái),以確保它們不會(huì)被 YML 解析器轉(zhuǎn)換為 True 或 False。
一般 arg 標(biāo)簽的變量?jī)H用在構(gòu)建過(guò)程中。而environment和 Dockerfile 中的ENV指令一樣會(huì)把變量一直保存在鏡像、容器中,類(lèi)似docker run -e的效果
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問(wèn)。這個(gè)標(biāo)簽與 Dockerfile 中的EXPOSE指令一樣,用于指定暴露的端口,但是只是作為一種參考,實(shí)際上docker-compose.yml的端口映射還得ports這樣的標(biāo)簽。
鏈接到 docker-compose.yml 外部的容器,甚至 并非 Compose 項(xiàng)目文件管理的容器。
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
添加主機(jī)名映射。使用與 docker 客戶端--add-host類(lèi)似。
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
會(huì)往/etc/hosts文件中添加一些記錄,啟動(dòng)之后查看容器內(nèi)部 hosts可以看到:
162.242.195.82 somehost
50.31.209.229 otherhost
配置運(yùn)行的檢查以確定此服務(wù)的容器是否“健康”。
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
interval,timeout 和 start_period都是持續(xù)時(shí)間。test必須是字符串或列表。如果是列表,則第一項(xiàng)必須是NONE,CMD或CMD-SHELL。如果是字符串,則相當(dāng)于指定CMD-SHELL后跟該字符串。
# Hit the local web app
test: ["CMD", "curl", "-f", "http://localhost"]
test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]
test: curl -f https://localhost || exit 1
如果需要禁用鏡像的所有檢查項(xiàng)目,可以使用disable:true,相當(dāng)于test:["NONE"]
healthcheck:
disable: true
從指定的鏡像中啟動(dòng)容器,可以是存儲(chǔ)倉(cāng)庫(kù)、標(biāo)簽以及鏡像 ID
在容器內(nèi)運(yùn)行一個(gè) init 來(lái)轉(zhuǎn)發(fā)信號(hào)和取得進(jìn)程。將此選項(xiàng)設(shè)置true為服務(wù)啟用此功能。
version: "3.9"
services:
web:
image: alpine:latest
init: true
指定容器的隔離技術(shù)。在 Linux 上,唯一支持的值是default。在 Windows 上,可接受的值為default、process和hyperv。
使用 Docker 標(biāo)簽將元數(shù)據(jù)添加到容器,可以使用數(shù)組或字典。與 Dockerfile 中的LABELS類(lèi)似:
labels:
- "com.example.description=Accounting webapp"
- "com.example.department=Finance"
- "com.example.label-with-empty-value"
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
com.example.label-with-empty-value: ""
鏈接到另一個(gè)服務(wù)中的容器。指定服務(wù)名稱和鏈接別名 ("SERVICE:ALIAS"),或僅指定服務(wù)名稱。
它們不需要啟用服務(wù)進(jìn)行通信 - 默認(rèn)情況下,任何服務(wù)都可以以該服務(wù)的名稱訪問(wèn)任何其他服務(wù)。在以下示例中,web可以訪問(wèn)db,并且設(shè)置別名為database:
version: "3.9"
services:
web:
build: .
links:
- "db:database"
db:
image: postgres
日志記錄配置。
version: "3.9"
services:
some-service:
image: some-service
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
network_mode
網(wǎng)絡(luò)模式。使用與 docker 客戶端--network相同,可以使用特殊形式service:[service name]。
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
將 PID 模式設(shè)置為主機(jī) PID 模式。這會(huì)在容器和主機(jī)操作系統(tǒng)之間共享 PID 地址空間。使用此標(biāo)志啟動(dòng)的容器可以訪問(wèn)和操作裸機(jī)命名空間中的其他容器,反之亦然。
pid: "host"
暴露端口。
簡(jiǎn)短語(yǔ)法
共有三種寫(xiě)法:
ports:
- "3000"
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "49100:22"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
- "127.0.0.1::5000"
- "6060:6060/udp"
- "12400-12500:1240"
長(zhǎng)語(yǔ)法
ports:
- target: 80
published: 8080
protocol: tcp
mode: host
允許通過(guò)有選擇地啟用服務(wù)來(lái)針對(duì)各種用途和環(huán)境調(diào)整 Compose 應(yīng)用程序模型。這是通過(guò)將每個(gè)服務(wù)分配給單個(gè)或多個(gè)配置文件來(lái)實(shí)現(xiàn)的。如果未分配,則始終啟動(dòng)該服務(wù),但如果已分配,則僅在激活配置文件時(shí)才啟動(dòng)。
這允許人們?cè)趩蝹€(gè)docker-compose.yml文件中定義額外的服務(wù),這些服務(wù)應(yīng)該只在特定場(chǎng)景中啟動(dòng),例如用于調(diào)試或開(kāi)發(fā)任務(wù)。
profiles: ["frontend", "debug"]
profiles:
- frontend
- debug
no是默認(rèn)的重啟策略,在任何情況下都不會(huì)重啟容器。當(dāng)always指定時(shí),容器總是重新啟動(dòng)。on-failure如果退出代碼指示失敗錯(cuò)誤,則該策略會(huì)重新啟動(dòng)容器。unless-stopped總是重新啟動(dòng)容器,除非容器停止(手動(dòng)或其他方式)。
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
為每個(gè)服務(wù)機(jī)密授予相應(yīng)的訪問(wèn)權(quán)限
簡(jiǎn)短語(yǔ)法
簡(jiǎn)短的語(yǔ)法僅指定機(jī)密名稱。
以下示例授予redis服務(wù)對(duì)my_secret和my_other_secret機(jī)密的訪問(wèn)權(quán)限。./my_secret.txt文件的內(nèi)容被設(shè)置為 my_secret,my_other_secret被定義為外部機(jī)密,這意味著它已經(jīng)在Docker中定義,無(wú)論是通過(guò)運(yùn)行docker secret create命令還是通過(guò)另一個(gè)堆棧部署,都不會(huì)重新創(chuàng)建。如果外部機(jī)密不存在,堆棧部署將失敗并顯示secret not found錯(cuò)誤。
version: "3.9"
services:
redis:
image: redis:latest
deploy:
replicas: 1
secrets:
- my_secret
- my_other_secret
secrets:
my_secret:
file: ./my_secret.txt
my_other_secret:
external: true
長(zhǎng)語(yǔ)法
下面的示例表示將my_secret 命名為redis_secret,模式為0440(組可讀),和用戶組為103。該redis服務(wù)無(wú)權(quán)訪問(wèn)該my_other_secret機(jī)密。
version: "3.9"
services:
redis:
image: redis:latest
deploy:
replicas: 1
secrets:
- source: my_secret
target: redis_secret
uid: '103'
gid: '103'
mode: 0440
secrets:
my_secret:
file: ./my_secret.txt
my_other_secret:
external: true
一級(jí)secrets詳細(xì)配置:
在本示例中,my_first_secret在<stack_name>_my_first_secret 部署堆棧時(shí)創(chuàng)建 ,并且my_second_secret已存在于 Docker 中。
secrets:
my_first_secret:
file: ./secret_data
my_second_secret:
external: true
為每個(gè)容器覆蓋默認(rèn)的標(biāo)簽。簡(jiǎn)單說(shuō)來(lái)就是管理全部服務(wù)的標(biāo)簽,比如設(shè)置全部服務(wù)的 user 標(biāo)簽值為USER
security_opt:
- label:user:USER
- label:role:ROLE
指定在嘗試停止容器時(shí)等待多長(zhǎng)時(shí)間。
在docker stop命令執(zhí)行的時(shí)候,會(huì)先向容器中的進(jìn)程發(fā)送系統(tǒng)信號(hào)SIGTERM,然后等待容器中的應(yīng)用程序終止執(zhí)行。如果等待時(shí)間達(dá)到設(shè)定的超時(shí)時(shí)間,或者默認(rèn)的10秒,會(huì)繼續(xù)發(fā)送SIGKILL的系統(tǒng)信號(hào)強(qiáng)行kill掉進(jìn)程。
在容器中的應(yīng)用程序,可以選擇忽略和不處理SIGTERM信號(hào),不過(guò)一旦達(dá)到超時(shí)時(shí)間,程序就會(huì)被系統(tǒng)強(qiáng)行kill掉,因?yàn)镾IGKILL信號(hào)是直接發(fā)往系統(tǒng)內(nèi)核的,應(yīng)用程序沒(méi)有機(jī)會(huì)去處理它。
stop_grace_period: 1s
默認(rèn)情況下,stop在發(fā)送 SIGKILL 之前等待容器退出 10 秒。
設(shè)置一個(gè)替代信號(hào)來(lái)停止容器。默認(rèn)情況下stop使用 SIGTERM。使用stop_signal設(shè)置替代信號(hào)來(lái)stop。
stop_signal: SIGUSR1
在容器中設(shè)置的內(nèi)核參數(shù),可以為數(shù)組或字典
sysctls:
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0
在容器內(nèi)掛載一個(gè)臨時(shí)文件系統(tǒng)。可以是單個(gè)值或列表。
tmpfs: /run
tmpfs:
- /run
- /tmp
設(shè)置當(dāng)前進(jìn)程以及其子進(jìn)程的資源使用量,覆蓋容器的默認(rèn)限制,可以單一地將限制值設(shè)為一個(gè)整數(shù),也可以將soft/hard限制指定為映射
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
如果 Docker 守護(hù)程序配置了用戶命名空間,則禁用此服務(wù)的用戶命名空間。
userns_mode: "host"
掛載一個(gè)目錄或者一個(gè)已存在的數(shù)據(jù)卷容器,可以直接使用HOST:CONTAINER這樣的格式,或者使用HOST:CONTAINER:ro這樣的格式,后者對(duì)于容器來(lái)說(shuō),數(shù)據(jù)卷是只讀的,這樣可以有效保護(hù)宿主機(jī)的文件系統(tǒng)
您可以將主機(jī)路徑掛載為單個(gè)服務(wù)定義的一部分,無(wú)需在一級(jí)volumes鍵中定義它。
但是,如果您想在多個(gè)服務(wù)中重用一個(gè)卷,則需要在一級(jí)volumes 中定義一個(gè)命名卷。
如下實(shí)例,web 服務(wù)使用命名卷 (mydata),以及為單個(gè)服務(wù)定義的綁定安裝(dbservice下的第一個(gè)路徑volumes)。db服務(wù)還使用名為dbdata(dbservice下的第二個(gè)路徑volumes)的命名卷,使用了舊字符串格式定義它以安裝命名卷。命名卷必須列在頂級(jí)volumes鍵下。
version: "3.9"
services:
web:
image: nginx:alpine
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
mydata:
dbdata:
簡(jiǎn)短語(yǔ)法
簡(jiǎn)短語(yǔ)法使用通用[SOURCE:]TARGET[:MODE]格式,其中 SOURCE可以是主機(jī)路徑或卷名。TARGET是安裝卷的容器路徑。標(biāo)準(zhǔn)模式ro用于只讀和rw讀寫(xiě)(默認(rèn))。
您可以在主機(jī)上掛載一個(gè)相對(duì)路徑,該路徑相對(duì)于正在使用的 Compose 配置文件的目錄展開(kāi)。相對(duì)路徑應(yīng)始終以.或開(kāi)頭..。
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
# Specify an absolute path mapping
- /opt/data:/var/lib/mysql
# Path on the host, relative to the Compose file
- ./cache:/tmp/cache
# User-relative path
- ~/configs:/etc/configs/:ro
# 命名卷
- datavolume:/var/lib/mysql
長(zhǎng)語(yǔ)法
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
networks:
webnet:
volumes:
mydata:
一級(jí) Volume 詳細(xì)配置:
volumes:
example:
driver_opts:
type: "nfs"
o: "addr=10.40.0.199,nolock,soft,rw"
device: ":/docker/example"
version: "3.9"
volumes:
data:
name: my-app-data
你可以使用 $VARIABLE 或者 ${VARIABLE} 來(lái)置換變量
【摘抄于網(wǎng)絡(luò):https://zhuanlan.zhihu.com/p/387840381】
469人通關(guān)ZCCT在線認(rèn)證
日前,ZStack面向企業(yè)IT人士、云計(jì)算愛(ài)好者,疫情期間免費(fèi)開(kāi)放ZCCT在線認(rèn)證,并提供線上實(shí)驗(yàn)資源幫助學(xué)員完成上機(jī)實(shí)踐考試!截至當(dāng)前,已經(jīng)有600多名學(xué)員參與了培訓(xùn),并累計(jì)頒發(fā)469張ZCCT證書(shū)!
為什么要考ZCCT證書(shū)?
ZStack:從知識(shí)儲(chǔ)備來(lái)講,區(qū)別于OpenStack,ZStack是完全國(guó)產(chǎn)自研的開(kāi)源IaaS架構(gòu)。通過(guò)ZCCT在線認(rèn)證,可以快速掌握Z(yǔ)Stack云平臺(tái)安裝部署、運(yùn)維交付、云計(jì)算技術(shù)及銷(xiāo)售技能等知識(shí)。從職場(chǎng)加分項(xiàng)來(lái)看,目前已經(jīng)有超過(guò)1000家企業(yè)用戶選擇了ZStack云平臺(tái)作為云基礎(chǔ)架構(gòu),擁有ZCCT證書(shū)可以作為求職面試的加分項(xiàng)!
在ZCCT在線認(rèn)證通關(guān)的路上,我們建立了“ZStack中國(guó)社區(qū)QQ三群”,群內(nèi)的技術(shù)同仁們將即時(shí)答疑學(xué)習(xí)互助!同學(xué)們可以掃描下方二維碼加入:
以下我們節(jié)選了ZStack QQ社區(qū)群學(xué)員經(jīng)常遇到的問(wèn)題,為所有正在通關(guān)ZCCT的學(xué)員提供參考!
一 ZCCT在線認(rèn)證Q&A 第二期
Q1:在自有的虛擬化環(huán)境搭建ZStack,請(qǐng)務(wù)必開(kāi)啟嵌套虛擬化支持
A1:請(qǐng)?jiān)贙VM、VMWARE、VirtualBox、Hyperv、XEN等其他虛擬化平臺(tái)的CPU處理器設(shè)置里面開(kāi)啟Intel VirtualTechnology或AMD SVM選項(xiàng),或(Intel VT-x或AMV-v選項(xiàng))。
否則添加物理機(jī)會(huì)提示ERROR:could not 'kvm_intel':Operation not supported stdout
Q2:iSCSI加載集群失敗
A2:
iptables -F關(guān)閉防火墻,避免連接時(shí)連接不上
lsblk檢查磁盤(pán)使用是否已存在/dev/sda設(shè)備
檢查防火墻是否攔截了3260端口可通過(guò)此條命令查看:netstat -tulpn | grep 3260
“disksnumber by /dev/disk not equal to iscsiadm”此類(lèi)報(bào)錯(cuò)表示磁盤(pán)號(hào)不等于iscsiadm發(fā)現(xiàn)的,導(dǎo)致添加失敗。檢查磁盤(pán)是否分區(qū)將系統(tǒng)多余的分區(qū)刪除重新加載集群即可。
Q3:關(guān)于導(dǎo)出日志
A3:使用Linux跳板機(jī)在終端執(zhí)行命令從管理節(jié)點(diǎn)拷貝日志到跳板機(jī)scp $MNIP:/usr/local/zstack/apache-tomcat/logs/management-server.log /home/test MNIP請(qǐng)輸入正確的管理節(jié)點(diǎn)IP,接著通過(guò)瀏覽器從/home/test/management-server.log 選擇日志上傳。
Q4:關(guān)于文件的路徑
A4:管理節(jié)點(diǎn)日志路徑:/usr/local/zstack/apache-tomcat/logs/management-server.log
Q5:關(guān)于線上實(shí)驗(yàn)資源有效期
A5:線上實(shí)驗(yàn)資源有效期自發(fā)放之日起為3天,理論考試通關(guān)后請(qǐng)?jiān)诖稳?8:00左右登錄注冊(cè)郵箱,查收實(shí)驗(yàn)環(huán)境信息,并根據(jù)實(shí)驗(yàn)指導(dǎo)手冊(cè),完成實(shí)踐考試!線上資源過(guò)期的學(xué)員,請(qǐng)使用注冊(cè)郵箱主動(dòng)發(fā)送郵件到zcct@zstack.io申請(qǐng)實(shí)驗(yàn)資源。
Q6:注意事項(xiàng)
A6:
注冊(cè)時(shí),請(qǐng)?zhí)峁┱_的郵箱和真實(shí)的姓名,證書(shū)會(huì)通過(guò)注冊(cè)郵箱發(fā)送給大家。
請(qǐng)以注冊(cè)郵箱咨詢相關(guān)問(wèn)題,如果賬號(hào)不一致,則無(wú)法查詢相關(guān)考試信息。
郵件主題請(qǐng)說(shuō)明具體事項(xiàng),“理論考試通過(guò),3天未收到實(shí)驗(yàn)資源”,“實(shí)驗(yàn)考試通過(guò),3天未收到證書(shū)”。(郵件接收地址:zcct@zstack.io)
注意線上實(shí)驗(yàn)環(huán)境有效期3天,理論考試通過(guò)后請(qǐng)?jiān)?天內(nèi)完成線上實(shí)踐考試,過(guò)期需要自己主動(dòng)發(fā)送郵件重新申請(qǐng)。(參考本條第3點(diǎn))
如果理論考試通過(guò),但是視頻未全部看完,請(qǐng)看完所有視頻,并通過(guò)理論考試再進(jìn)行實(shí)驗(yàn)。
Q7:更多Q&A
A7:點(diǎn)擊https://www.zstack.io/help/FAQ/,輸入問(wèn)題關(guān)鍵詞檢索獲取答案。如果檢索失敗,可以加入ZStack社區(qū)三群(QQ群號(hào):741300236),與群里技術(shù)大牛即時(shí)互動(dòng),一起學(xué)習(xí)互助!
二 如何參與ZCCT在線認(rèn)證?
ZStack在疫情期間繼續(xù)免費(fèi)開(kāi)放ZCCT在線認(rèn)證,疫情不結(jié)束,ZCCT在線認(rèn)證不收費(fèi)!!
通關(guān)步驟只需4步:視頻學(xué)習(xí)》理論考試》實(shí)踐考試》頒發(fā)證書(shū)!
視頻學(xué)習(xí)和理論考試完成的學(xué)員,次日18:00左右登錄注冊(cè)郵箱,可以獲取線上實(shí)驗(yàn)資源繼續(xù)完成上機(jī)實(shí)踐考試!
快捷通道1:
https://www.zstack.io/account/site/login
登陸ZStack賬號(hào),直達(dá)課程系統(tǒng)
快捷通道2:
https://www.zstack.io/training/certification_training/
初級(jí)認(rèn)證下點(diǎn)擊“立即開(kāi)通”,進(jìn)入我的課程系統(tǒng)
ZStack社區(qū)QQ群助力:
學(xué)習(xí)的過(guò)程中,有問(wèn)題可以加入ZStack社區(qū)三群(QQ群號(hào):741300236),群里技術(shù)大牛將即時(shí)答疑,一起學(xué)習(xí)互助!
招募招募!ZStack高校合作伙伴火熱招募中!
歡迎廣大有云計(jì)算專業(yè)的高校,加入ZStack高校合作伙伴聯(lián)盟,共同開(kāi)設(shè)云計(jì)算專業(yè)線上教學(xué)和實(shí)驗(yàn)課程!優(yōu)秀學(xué)員優(yōu)先推薦就業(yè)機(jī)會(huì)!
山河有恙,匹夫有責(zé)!ZStack作為一家有責(zé)任感的國(guó)產(chǎn)云平臺(tái)公司,疫情期間,用實(shí)際行動(dòng)抗擊疫情、賦能伙伴!歡迎廣大合作伙伴按如下路徑參與:
1.請(qǐng)登錄ZStack官網(wǎng)注冊(cè)賬號(hào),申請(qǐng)成為ZStack的認(rèn)證或授權(quán)合作伙伴,獲取一對(duì)一的賦能幫助!
https://www.zstack.io/account/site/signup-partner
完成注冊(cè)后,如需獲取專業(yè)的行業(yè)解決方案或案例,請(qǐng)掃碼加入ZStack釘釘伙伴培訓(xùn)賦能群,探討交流!
2.如對(duì)項(xiàng)目實(shí)施和運(yùn)維技能感興趣,可登錄ZStack官網(wǎng)(培訓(xùn)-認(rèn)證培訓(xùn)欄目)開(kāi)通ZCCT在線認(rèn)證,如需互助答疑,請(qǐng)掃碼加入ZStack中國(guó)社區(qū)QQ三群,一起在云計(jì)算技術(shù)領(lǐng)域鉆研進(jìn)階!