用html5設(shè)計(jì)個(gè)人網(wǎng)站如何自己創(chuàng)建網(wǎng)站
1. Docker Compose 環(huán)境安裝
Docker Compose 是 Docker 的獨(dú)立產(chǎn)品,因此需要安裝 Docker 之后在單獨(dú)安裝 Docker Compose
docker compose 實(shí)現(xiàn)單機(jī)容器集群編排管理(使用一個(gè)模板文件定義多個(gè)應(yīng)用容器的啟動(dòng)參數(shù)和依賴關(guān)系,并使用docker compose來根據(jù)這個(gè)模板文件的配置來啟動(dòng)容器)
下載
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
2. YAML 文件格式及編寫注意事項(xiàng)
YAML 是一種標(biāo)記語言,它可以很直觀的展示數(shù)據(jù)序列化格式,可讀性高。類似于 json 數(shù)據(jù)描述語言,語法比 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) {} 括起來。
使用 YAML 時(shí)需要注意下面事項(xiàng):
●大小寫敏感
●通過縮進(jìn)表示層級(jí)關(guān)系
●不支持制表符 tab 鍵縮進(jìn),只能使用空格縮進(jìn)
●縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)左對(duì)齊,通常開頭縮進(jìn)2個(gè)空格
●用 # 號(hào)注釋
●符號(hào)字符后縮進(jìn)1個(gè)空格,如冒號(hào) : ?、逗號(hào) , ?、橫杠 -?
●如果包含特殊字符用單引號(hào)('')引起來會(huì)作為普通字符串處理,雙引號(hào)(""): 特殊字符作為本身想表示的意思
3. Docker Compose配置常用字段
字段 描述
build 指定 Dockerfile 文件名,要指定Dockerfile文件需要在build標(biāo)簽的子級(jí)標(biāo)簽中使用dockerfile標(biāo)簽指定
dockerfile 構(gòu)建鏡像上下文路徑
context 可以是 dockerfile 的路徑,或者是指向 git 倉庫的 url 地址
image 指定鏡像
command 執(zhí)行命令,覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令
container_name 指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale指定容器數(shù)量
deploy 指定部署和運(yùn)行服務(wù)相關(guān)配置,只能在 Swarm 模式使用
environment 添加環(huán)境變量
networks 加入網(wǎng)絡(luò),引用頂級(jí)networks下條目
network_mode 設(shè)置容器的網(wǎng)絡(luò)模式,如 host,bridge,...
ports 暴露容器端口,與 -p 相同,但端口不能低于 60
volumes 掛載一個(gè)宿主機(jī)目錄或命令卷到容器,命名卷要在頂級(jí) volumes 定義卷名稱
volumes_from 從另一個(gè)服務(wù)或容器掛載卷,可選參數(shù) :ro 和 :rw,僅版本 '2' 支持
hostname 容器主機(jī)名
sysctls 在容器內(nèi)設(shè)置內(nèi)核參數(shù)
links 連接到另外一個(gè)容器,- 服務(wù)名稱[:服務(wù)別名]
privileged 用來給容器root權(quán)限,注意是不安全的,true | false
restart 設(shè)置重啟策略,no,always,no-failure,unless-stoppedno,默認(rèn)策略,在容器退出時(shí)不重啟容器。on-failure,在容器非正常退出時(shí)(退出狀態(tài)非0),才會(huì)重啟容器。on-failure:3,在容器非正常退出時(shí)重啟容器,最多重啟3次。always,在容器退出時(shí)總是重啟容器。unless-stopped,在容器退出時(shí)總是重啟容器,但是不考慮在 Docker 守護(hù)進(jìn)程啟動(dòng)時(shí)就已經(jīng)停止了的容器。
depends_on 在使用Compose時(shí),最大的好處就是少打啟動(dòng)命令,但一般項(xiàng)目容器啟動(dòng)的順序是有要求的,如果直接從上到下啟動(dòng)容器,可能會(huì)因?yàn)槿萜饕蕾噯栴}而啟動(dòng)失敗。例如在沒啟動(dòng)數(shù)據(jù)庫容器的時(shí)候啟動(dòng)應(yīng)用容器,應(yīng)用容器會(huì)因?yàn)檎也坏綌?shù)據(jù)庫而退出。depends_on標(biāo)簽用于解決容器的依賴、啟動(dòng)先后的問題。
4. Docker Compose 常用命令
字段 ? ? ? ? ? ? ? ? ? ??? ??? ??? ??? ??? ?描述
build ? ? ? ? ? ? ? ? ? ?? ??? ??? ??? ??? ?重新構(gòu)建服務(wù)
ps ? ? ? ? ? ? ? ? ? ? ??? ??? ??? ??? ??? ?列出容器
up ? ? ? ? ? ? ? ? ? ? ??? ??? ??? ??? ??? ?創(chuàng)建和啟動(dòng)容器?? ?
exec ? ? ? ? ? ? ? ? ? ??? ??? ??? ??? ??? ?在容器里面執(zhí)行命令
scale ? ? ? ? ? ? ? ? ? ?? ??? ??? ??? ??? ?指定一個(gè)服務(wù)容器啟動(dòng)數(shù)量
top ? ? ? ? ? ? ? ? ? ? ?? ??? ??? ??? ??? ?顯示容器進(jìn)程
logs ? ? ? ? ? ? ? ? ? ??? ??? ??? ??? ??? ?查看容器輸出
down ? ? ? ? ? ? ? ? ? ??? ??? ??? ??? ??? ?刪除容器、網(wǎng)絡(luò)、數(shù)據(jù)卷和鏡像
stop/start/restart ? ? ??? ??? ??? ??? ??? ?停止/啟動(dòng)/重啟服務(wù)
5. Docker Compose 文件結(jié)構(gòu)
yum install -y tree
tree /opt/compose_nginx
/opt/compose_nginx/
├── docker-compose.yml?? ??? ??? ??? ?#創(chuàng)建模板腳本
├── nginx
? ? ├── Dockerfile?? ??? ??? ??? ??? ?#創(chuàng)建容器腳本
? ? ├── nginx-1.24.0.tar.gz?? ??? ??? ?#復(fù)制源碼包
? ? └── html
? ? ? ? └── index.html?? ??? ??? ? ? ?#站點(diǎn)網(wǎng)頁
? ? ? ? └── wordpress ? ? ? ? ? ? ? #論壇目錄
6.配置
###用上一篇LNMP的配置和目錄及文件
準(zhǔn)備Docker Compose的二進(jìn)制文件,上傳后修改權(quán)限并移動(dòng)到/usr/local/bin目錄下
cd /opt
docker-compose
chmod +x docker-compose
mv docker-compose /usr/local/bin/
?編寫配置文件docker-compose.yml
container_name: nginxports:- 80:80volumes:- ./nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.10mysql:#build:#context: ./mysql#dockerfile: Dockerfileimage: mysql:centoscontainer_name: mysqlports:- 3306:3306volumes:- db-data:/usr/local/mysqlnetworks:lnmp:ipv4_address: 172.18.0.20privileged: truephp:# build:# context: ./php# dockerfile: Dockerfileimage: php:centoscontainer_name: phpports:- 9000:9000volumes:- db-data:/usr/local/mysql- ./nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.30depends_on:- nginx- mysqlnetworks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16volumes:db-data:volumes:db-data: