1. Docker-compose概述
1.1 簡介
docker-compose
是實現(xiàn)在單機上對容器集群編排管理的工具。
docker-compose
是基于python開發(fā)的,能運行docker的平臺,都能用docker-compose編排管理容器。
本質(zhì)就是在yaml格式
的docker-compose配置模板文件
里定義多個容器的啟動參數(shù)和依賴關系,并使用docker-compose
根據(jù)這個模板文件的配置啟動和管理容器集群。
Dockerfile 文件 --> docker build 一個個構建鏡像 --> docker run 一個個創(chuàng)建并啟動容器
Dockerfile 文件 --> docker-compose 自動完成所有的鏡像的構建和容器的創(chuàng)建、啟動
1.2 docker-compose 的三大概念
項目project -> 包含一個或多個服務service -> 包含一個或多個容器的鏡像、映射端口、環(huán)境變量等啟動參數(shù)
- 默認使用項目的目錄名做project項目名,支持使用
-p
或--project-name
來指定項目名 - 在項目目錄里要包含一個
docker-compose 配置模板文件
,默認為docker-compose.yml
,支持使用 -f 或 --file 來指定項目的配置模板文件 - 在配置模板文件里要包含一個或者多個服務,每個服務包含啟動容器的名稱、鏡像、映射端口、環(huán)境變量、掛載點、網(wǎng)絡模式、依賴關系等容器啟動的配置參數(shù)
1.3 docker-compose配置模板文件常用的字段
字段 | 用法 | 描述 |
---|---|---|
image | 現(xiàn)成的鏡像:標簽 | 指定鏡像 |
build | 指定 Dockerfile | 文件名 |
command | 容器啟動命令 | 執(zhí)行命令,覆蓋容器啟動后默認執(zhí)行的命令 |
container_name | –name | 指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale指定容器數(shù)量 |
environment | -e,-env | 添加環(huán)境變量 |
networks | –net,–network | 加入網(wǎng)絡,引用頂級networks下條目 |
ports | -p | 暴露容器端口,與 -p 相同,但端口不能低于 60 |
volumes | -v | 掛載一個宿主機目錄或命令卷到容器,命名卷要在頂級 volumes 定義卷名稱 |
volumes_from | –volumes-from,僅版本2支持,版本3 ,使用頂級卷進行共享 | 從另一個服務或容器掛載卷,可選參數(shù) :ro 和 :rw |
hostname | -h,–hostname | 容器主機名 |
sysctls | –sysctl | 在容器內(nèi)設置內(nèi)核參數(shù) |
links | –link | 連接到另外一個容器,- 服務名稱[:服務別名] |
privileged | –privileged | 用來給容器root權限,注意是不安全的,true |
restart | –restart | 重啟策略 |
depends_on | 定義服務之間依賴關系 |
depends_on:
- php
- httpd
1.4 docker-compose 常用命令及格式
docker-compose -f docker-compose.yml <選項> -d
-f, --file FILE :使用特定的 compose 模板文件,默認為 docker-compose.yml
-p, --project-name NAME :指定項目名稱,默認使用目錄名稱
-d :在后臺運行
選項 | 功能 |
---|---|
build | 重新構建服務 |
ps | 列出容器 |
up | 創(chuàng)建和啟動容器 |
exec | 在容器里面執(zhí)行命令 |
scale | 指定一個服務容器啟動數(shù)量 |
top | 顯示容器進程 |
logs | 查看容器輸出 |
down | 刪除容器、網(wǎng)絡、數(shù)據(jù)卷和鏡像 |
stop/start/restart | 停止/啟動/重啟容器 |
2. YAML 文件的詳細介紹及編寫注意事項
2.1 簡介
YAML 是一種標記語言,它可以很直觀的展示數(shù)據(jù)序列化格式,可讀性高。
類似于 json 數(shù)據(jù)描述語言
,語法比 json 簡單的很多。
- YAML 數(shù)據(jù)結構通過縮進來表示
- 連續(xù)的項目通過減號來表示
- 鍵值對用冒號分隔
- 數(shù)組用中括號 [] 括起來
- hash 用花括號 {} 括起來。
2.2 yaml的特性
2.2.1 語法特點
- 大小寫敏感
- 通過縮進表示層級關系
- 不支持制表符 tab 鍵縮進,只能使用空格縮進
- 縮進的空格數(shù)目不重要,只要相同層級左對齊,通常開頭縮進2個空格
- 用 # 號注釋
2.2.2 數(shù)據(jù)結構
- 對象: 鍵值對的字典
- 數(shù)組: 一組按次序排列的列表
- 純量: 單個的且不可再分的值
# 純量
hello
# 數(shù)組
- Cat
- Dog
- Goldfish
# 對象
animal: pets
2.2.3 引號的區(qū)別
#單引號(‘’): 特殊字符作為普通字符串處理
name: 'Hi,\nTom'
#雙引號(“”): 特殊字符作為本身想表示的意思
name: "Hi,\nTom"
2.2.4 內(nèi)置類型列表
# YAML允許使用個感嘆號(!)強制轉換數(shù)據(jù)類型
# 單嘆號通常是自定義類型,雙嘆號是內(nèi)置類型
money: !!str
123
date: !Boolean
true
對應編號 | 內(nèi)置類型 | 解釋說明 |
---|---|---|
1 | !!int | 整數(shù)類型 |
2 | !!float | 浮點類型 |
3 | !!bool | 布爾類型 |
4 | !!str | 字符串類型 |
5 | !!null | 空值 |
6 | !!set | 集合 |
7 | !!seq | 列表 |
8 | !!map | 鍵值表 |
9 | !!binary | 字符串類型 |
10 | !!timestamp | 日期時間類型 |
11 | !!omap/!!pairs | 鍵值列表 |
2.3 yaml文件格式
文件名格式以 .yml
或者.yaml
為后綴,用 空格縮進表示字段的層級關系,可讀性高,易于人類管理。
一個字段key有多個值的表達式
橫向?qū)懛ǎ?test: ["test1", "test2", "test3"]
縱向?qū)懛ǎ?ntest:
- "test1"
- "test2"
- "test3"
#多級字段的格式
頂級/一級字段:
二級字段1: ["值1", "值2"]
二級字段2:
三級字段: 值 對象object類型
value: value: 相當于echo helloworld!
hello
world!
value: | value: 相當于echo -e "hello\nworld!"
hello
world!
value: |- value: 相當于echo -n helloworld!
hello
world!
value: |+ value: 相當于echo -e "hello\nworld!\n"
hello
world!
value: > value: 相當于echo "hello world!"
hello
world!
name: &a aaa 相當于 a=yaml
book: *a 相當于 echo $a , book:aaa
2.4 json格式簡介 (拓展)
#json格式:文件名格式以 .json 為后綴,用 {} 表示字段的層級關系,程序接口解析效率高。
{ "字段": "值"}
{ "debug": true } 布爾值類型
{ "scj": "aaa" } 字符串類型
{
"k1": ["scj", "scj1", "scj2"],
"k2": ["zhangsan",
"lisi",
"wangwu"]
}
{
"websites": { 一級字段
"memory": "512M", 二級字段
"disk": "100G",
"cpu": { 三級字段
"name": ["inter", "amd"]
}
}
}
3. 部署docker-compose服務
3.1 前置準備
#服務器
192.168.67.100
提前安裝了nginx mysql php的鏡像
systemctl stop firewalld
setenfore 0
3.2 安裝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
#安裝
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version
3.3 創(chuàng)建工作目錄,編寫相關Dockerfile文件
3.3.1 創(chuàng)建工作目錄
mkdir /opt/compose_lnmp
cd /opt/compose_lnmp
mkdir nginx mysql php
3.3.2 編寫創(chuàng)建nginx、mysql、php的鏡像的Dockerfile文件
詳情見構建LNMP架構并運行Wordpress個人博客平臺
3.4 編寫配置文件docker-compose.yml
編寫配置文件~docker-compose.yml·
使用現(xiàn)有的鏡像創(chuàng)建容器(本地/倉庫) images: name:tag
或者現(xiàn)場構建,基于Dockerfile
cd /opt/compose_lnmp
#本次nginx使用現(xiàn)場構建,php和mysql使用本地鏡像
vim docker-compose.yml
version: '3'
services:
nginx:
image: nginx:lnmp
container_name: nginx
ports:
- 80:80
- 443:443
volumes:
- ./nginx/html/:/usr/local/nginx/html/
- ./nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf
networks:
lnmp:
ipv4_address: 172.18.0.10
mysql:
image: mysql:lnmp
container_name: mysql
privileged: true
volumes:
- db-dir:/usr/local/mysql
networks:
lnmp:
ipv4_address: 172.18.0.20
php:
image: php:lnmp
container_name: php
ports:
- 9000:9000
volumes:
- db-dir:/usr/local/mysql
- ./nginx/html/:/usr/local/nginx/html/
networks:
lnmp:
ipv4_address: 172.18.0.30
depends_on:
- nginx
- mysql
networks:
lnmp:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
volumes:
db-dir:
3.5 根據(jù)配置文件來構建并啟動容器
docker-compose -f docker-compose.yml up -d
3.6 登錄容器
#登錄到Mysql容器
docker exec -it mysql /bin/bash -c "mysql"
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
flush privileges;
#登錄到nginx容器
docker exec -it nginx /bin/bash
cd /usr/local/nginx
#修改html目錄的屬主
chown nginx html
文章來源:http://www.zghlxwxcb.cn/news/detail-722333.html
#重啟容器
docker restart php
docker restart nginx
docker restart mysql
3.7 訪問宿主機IP,安裝Wordpress
#瀏覽器訪問
http://192.168.67.100/wordpress/index.php
文章來源地址http://www.zghlxwxcb.cn/news/detail-722333.html
到了這里,關于[云原生1. ] 使用Docker-compose一鍵部署Wordpress平臺的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!