Docker容器编排
Docker容器編排
- 簡(jiǎn)介
- 為什么需要 Compose?
- 安裝docker-compose
- 常用命令
- 使用步驟
- 小案例
- 總結(jié)
簡(jiǎn)介
Compose(容器編排) 是 Docker 公司推出的一個(gè)工具軟件,可以管理多個(gè) Docker 容器組成一個(gè)應(yīng)用。你需要定義一個(gè) YAML 格式的配置文件docker-compose.yml,寫(xiě)好多個(gè)容器之間的調(diào)用關(guān)系。然后,只要一個(gè)命令,就能同時(shí)啟動(dòng)/關(guān)閉這些容器。主要實(shí)現(xiàn)對(duì)Docker容器集群的快速編排。
為什么需要 Compose?
docker建議我們每一個(gè)容器中只運(yùn)行一個(gè)服務(wù),因?yàn)閐ocker容器本身占用資源極少,所以最好是將每個(gè)服務(wù)單獨(dú)的分割開(kāi)來(lái)但是這樣我們又面臨了一個(gè)問(wèn)題?
如果我需要同時(shí)部署好多個(gè)服務(wù),難道要每個(gè)服務(wù)單獨(dú)寫(xiě)Dockerfile然后在構(gòu)建鏡像,構(gòu)建容器,這樣累都累死了,所以docker官方給我們提供了docker-compose多服務(wù)部署的工具
例如要實(shí)現(xiàn)一個(gè)Web微服務(wù)項(xiàng)目,除了Web服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫(kù)mysql服務(wù)容器,redis服務(wù)器,注冊(cè)中心eureka,甚至還包括負(fù)載均衡容器等等。。。。。。
Compose允許用戶通過(guò)一個(gè)**單獨(dú)的docker-compose.yml模板文件(YAML 格式)**來(lái)定義一組相關(guān)聯(lián)的應(yīng)用容器為一個(gè)項(xiàng)目(project)。
可以很容易地用一個(gè)配置文件定義一個(gè)多容器的應(yīng)用,然后使用一條指令安裝這個(gè)應(yīng)用的所有依賴,完成構(gòu)建。Docker-Compose 解決了容器與容器之間如何管理編排的問(wèn)題。
安裝docker-compose
官網(wǎng)下載地址:https://docs.docker.com/compose/install/
安裝步驟:
下載docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose修改權(quán)限
chmod +x /usr/local/bin/docker-compose查看docker-compose的版本
docker-compose --version卸載:
rm /usr/local/bin/docker-compose常用命令
docker-compose -h # 查看幫助 docker-compose up # 啟動(dòng)所有docker-compose服務(wù) docker-compose up -d # 啟動(dòng)所有docker-compose服務(wù)并后臺(tái)運(yùn)行 docker-compose down # 停止并刪除容器、網(wǎng)絡(luò)、卷、鏡像。 docker-compose exec yml里面的服務(wù)id # 進(jìn)入容器實(shí)例內(nèi)部 docker-compose exec docker-compose.yml文件中寫(xiě)的服務(wù)id /bin/bash docker-compose ps # 展示當(dāng)前docker-compose編排過(guò)的運(yùn)行的所有容器 docker-compose top # 展示當(dāng)前docker-compose編排過(guò)的容器進(jìn)程 docker-compose logs <yml里面的服務(wù)id> # 查看容器輸出日志 docker-compose config # 檢查配置 docker-compose config -q # 檢查配置,有問(wèn)題才有輸出 docker-compose restart # 重啟服務(wù) docker-compose start # 啟動(dòng)服務(wù) docker-compose stop # 停止服務(wù)使用步驟
- 編寫(xiě)Dockerfile定義各個(gè)微服務(wù)應(yīng)用并構(gòu)建出對(duì)應(yīng)的鏡像文件
- 使用 docker-compose.yml 定義一個(gè)完整業(yè)務(wù)單元,安排好整體應(yīng)用中的各個(gè)容器服務(wù)。
- 最后,執(zhí)行 docker-compose up 命令 來(lái)啟動(dòng)并運(yùn)行整個(gè)應(yīng)用程序,完成一鍵部署上線
小案例
使用容器編排完成部署個(gè)人的服務(wù)和mysql及redis:
這里需要先將個(gè)人服務(wù)打包成鏡像,可以通過(guò) dockerfile 或者是 docker commit 指令完成,這里不再細(xì)說(shuō)…
編寫(xiě)docker-compose.yml文件
version: "3" #指定版本號(hào)#配置各個(gè)容器服務(wù) services:#配置個(gè)人服務(wù)microService:#指定鏡像image: zzyy_docker:1.6#指定容器名稱container_name: ms01#指定端口映射ports:- "6001:6001"#指定容器卷volumes:- /app/microService:/data#指定網(wǎng)絡(luò)模式networks: - hypig_net depends_on: #表示只有當(dāng)Docker中運(yùn)行著指定的容器時(shí),該服務(wù)容器才運(yùn)行- redis- mysql#配置redis容器redis:image: redis:6.0.8ports:- "6379:6379"volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/datanetworks: - atguigu_net#指定容器運(yùn)行的指令command: redis-server /etc/redis/redis.conf#配置mysql容器mysql:image: mysql:5.7#配置相關(guān)的環(huán)境environment:MYSQL_ROOT_PASSWORD: 'lzb'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'docker_test'MYSQL_USER: 'root'MYSQL_PASSWORD: 'lzb'ports:- "3306:3306"volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.dnetworks:- hypig_netcommand: --default-authentication-plugin=mysql_native_password #解決外部無(wú)法訪問(wèn)#創(chuàng)建網(wǎng)絡(luò)模式 networks: hypig_net:在docker-compose.yml文件所在的目錄下通過(guò)指令構(gòu)建服務(wù)
docker-compose up -d #-d表示以守護(hù)進(jìn)程運(yùn)行查看docker容器實(shí)例
關(guān)停服務(wù)
docker-compose stop總結(jié)
- Compose的核心:編寫(xiě)docker-compose.yml文件
- Compose的兩要素:
- 服務(wù)(service):一個(gè)個(gè)應(yīng)用容器實(shí)例,比如訂單微服務(wù)、庫(kù)存微服務(wù)、mysql容器、nginx容器或者redis容器
- 工程(project):由一組關(guān)聯(lián)的應(yīng)用容器組成的一個(gè)完整業(yè)務(wù)單元,在 docker-compose.yml 文件中定義。
總結(jié)
以上是生活随笔為你收集整理的Docker容器编排的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C语言狐狸与兔子编程,狐狸找兔子(VB程
- 下一篇: 天地图矢量数据下载_老树谷歌地图数据采集