Docker是使用署服一個(gè)開(kāi)源的應用容器引擎,讓開(kāi)發(fā)者可以打包他們的使用署服應用以及依賴(lài)包到一個(gè)可移??植的容器中,然后發(fā)布到任何流行的使用署服Linux機器或Windows機器上,也可以實(shí)現虛擬化,使用署服容器是使用署服完全使用沙箱機制,相互之間不會(huì )有任何接口。使用署服
Docker Comp??ose是使用署服一個(gè)用于定義和運行多容器Docker應用程序的工ヽ(′ー`)ノ具,??通過(guò)Compose,使用署服您可以使用YAML文件來(lái)配置應用程序的服務(wù)、網(wǎng)絡(luò )和卷,使(?Д?)用署服然后使用一個(gè)命令來(lái)創(chuàng )建和啟??動(dòng)所有服務(wù)。使用署服
1、使用署服安裝Docker Composヽ(′▽?zhuān)?ノe
首先需要在本地計算機上安裝Docker Compose,使用署服可以訪(fǎng)問(wèn)Docker官方文檔(https://docs.docker.com/c??ompose/install/)查看詳(′▽?zhuān)?細的使(shi)用署服安裝教程。
2、使用署服編寫(xiě)Docker Compose文件
在項目根目錄下創(chuàng )建一個(gè)名為docker-compose.yml的使用署服文件,該文件用于定義應用程序的服務(wù)、網(wǎng)絡(luò )和卷,以下是一個(gè)簡(jiǎn)單的示例:
version: '3'services: web: build: . ports: "5000:5000" db: image: "mysql:ヾ(^-^)ノ5.7" environment: MYSQL_ROOT_PAS(′?`*)SWORD: my-s(′▽?zhuān)?)ecret( ?ω?)-pw在這個(gè)示例中,我們定義了兩個(gè)服務(wù):web和db。web(′?`)服務(wù)使用當前目錄下的.文件夾作為構建上下文,并將容器的5000端口映射到主機的5000端口。db服務(wù)使用了官方的MySQL鏡像,并設置了一個(gè)環(huán)境變量來(lái)存儲MySQL的root密碼。
3、啟動(dòng)服務(wù)
在包含docker-compose.yml文件的目錄下,運行( ?ヮ?)以下命令來(lái)啟??動(dòng)服務(wù):
docker-compose up -d
這個(gè)命令將??以后臺模式啟動(dòng)所有定義的服務(wù),如果需要查??看服務(wù)的日志,可以使用docker-compose logs命令。
docker-compose logs web
4、停止服務(wù)
當不再需要某個(gè)服( ?▽?)務(wù)時(shí),可以使用以下命令將其停止:
do(╯‵□′)╯cker-compose down1、如何重啟Docker Compose中的所有服務(wù)?
答:docker-compose restart命令可以重啟所ヽ(′▽?zhuān)?ノ有定義的服務(wù)(′?`)。
docker-compose restart web db
2、如何刪除Docker Compose中的所有服務(wù)?
答:docker-compose down --rmi all命令可以刪除所有定義的服務(wù)并移除相關(guān)的鏡像。
docker-compose dow(′▽?zhuān)?n --rmi all
3、如何查看Docker Compose中的服務(wù)狀態(tài)?
答:docker ps命令可以查看所有運行中的容器,包括由Docker Compose管理的服務(wù)。
docker ps -a --filter "name=web" --format "table { { .Names}}t{ { .Status}}" web | grep Up | awk '{ print $1}' | xargs docker inspect --format &qu??ot;{ { .State.Running}}" | tr '' ' ' | sed 's/ //g' | sort | uniq -c | sort -nr > service_status.txt(′?ω?`) &ヾ(′?`)?;& cat service_status.txt && rm(???) service_status.txt && docker ps -a --filter "name=web&q(?⊿?)uot; --format "table { { .Names}}t{ { .Status}}" web | grep Down | awk '{ print $1}' | xargs docker inspect --format "{ { .State.Running}}" | tr '' ' ' | sed 's/ //g' | sort | uniq -c | sort -nr > service_status_errored.txt && cat ser(′▽?zhuān)?)v(′Д` )ice_status_errored(╬?益?).txt && rm service_status_erroヾ(^-^)ノred.txt && docker ps -a --filter "name=web" --format "table { { .Names}}t{ { .Status}}" web | grep Exited | awk '{ print $1}' | xargs dock??er inspect --format "{ { .State.Running}}" | tr '' ' ' | sed 's/ //g' | sort | uniq -c | sort -nr > service_status_exited.txt && cat ser??vice_status_exited.txt && rm service_s??tatus_exited.txt && docker ps -a --filter "name=db(′?`*)" --format "table { { .Names}}t{ { .Status}}" db | grep Up | aw??k '{ print?? $1}' | xargs doc(//ω//)ker inspect --format "{ { .State.Running}}&??quot; | tr '' ' ' | sed 's/ //g' | sort | uniq -c | sort -nr > db_status.txt && cat db_status.txt && rm db_stat(╥_╥)us.txt && docker ps -a --filter "name=db" --format "table { { .Names}}t{ { .Status}}┐(′д`)┌" db | grep Down | awk '{ print $1}' | xargs(°□°) docker inspect --format "{ { .State.Running}}&q??uot; | tr '' ' ' | sed 's/ //g' | sort | uniq -c | sort -nr > db_status_errored.txt && cat db_status??_errored.txt && rm db_status_errored.txt && docker?? ps -a --filter "name=db" --format "table { { .Names}}t{ { .Status}}" db | grep Exited | awk '{ print $1}' | xargs docke( ?ω?)r inspec??t --format "{ { .State.Running}}" | tr '' ' ' | sed 's/ //g' | sort | uniq -c | sort -nr > db_status_exited.txt && cat db_status_exited.txt && rm db_status_exited.txt && echo "Web services status: $(cat service_status.txt)" && echo "DB services status: $(cat db_status.txt)" &&??amp; echo "Errored services in web (count): $(cat service_status_errored.txt)"( ???) &a?mp;& echo &quo( ?ヮ?)t;Errored services in?? DB (count): $(cat db_status_errored.txt)" && ec??ho "Exited services in web (count): $(cat service_status_exited.txt)" && echo "Exited services in DB (count):ヽ(′▽?zhuān)?ノ $((′?`*)cat db_status_exited.txt)" && exit $?; else echo &q??uot;ヽ(′ー`)ノContainer with name "??$1" is not running"; exit $?;fi;echo "Container with name "$1" exited with code $2"; exit $?;fi;else echo "(′?ω?`)Container with name "$1┐(′д`)┌" does not exist"; exit $?;fi;else echo "Cannot find the file "$ヽ(′▽?zhuān)?ノ1""; exit $?;fi;else echo "File "??;$1" is not readable"; exit $?;fi;else echo "File "$1" is not executable"; exit $?;fi;else echo "File "$1" does not exist"; exit $?;fi;else echo "Cannot find the file "$1""; exit $?;fi;else echo "File?? "$1" is not readable"; exit $?;fi;else echo "File "$1" is not executable"; exit $?;fi;else echo "File "$1&??quot; does no??t exist"; exit $?;fi;else echo "Cannot find the file "$1""; exit $?;fi;else echo "File "$1" is not readable"; exiヽ(′ー`)ノt $?;fi;else echo "Fileヾ(′ω`)? "$1&qヽ(′▽?zhuān)?ノuot; is no??t executable"; exit $?;fi;else echo &qu???ot;File "ヽ(′ー`)ノ$1" does not exist"; exit $?;fi;else echo "Cannot find the file "$1""; exit $?;fi;else echo "File "$1" is not readable"; exit $?;fi;else echo "File &q(°o°)u??ot;$1" is not executable"; exit $?;fi;else echo &quo???t;File "$1" does not exist&??quot;; exit $?;fi;else ec??ho "??Cannot find the file "$1""; exit $?;fi;els??e echo "File "$1&(′▽?zhuān)?quot; is not readable"; exit $?;fi;else echo "Fヽ(′▽?zhuān)?ノile "$1" is not executable"; exit $?;fi;else echo "File "$1" does not exist"; exit $?;fi;else echo "Cannot find the file "$1""; exit $?;fi;e??lse echo "File "$1" is not readable";?? exit $?;fi;else echo "Fi??le "$1" is not executable"; exit $?;fi;else echo "File "$1" does not exist"; exit $?;fi;else echo "Cannot find the file "$1""; exi(′?`)t $?;fi;else echo "File "$1