Docker Compose之容器编排开发初探
1、前言
-
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。
-
Compose 是一个用于定义和运行多个 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。
-
Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。
首先介绍几个术语
-
服务(service):一个应用容器,实际上可以运行多个相同镜像的实例。
-
项目(project):由一组关联的应用容器组成的一个完整业务单元。
可见,一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理。
2、安装
:point_right: 官方文档在 这里
我才用 curl
方式为所有用户安装。(也可以用 apt-get
方式,具体参考 文档 )
# 下载 Docker Compose 的当前稳定版本(安装给所有服务器用户:/usr/local/bin) sudo curl -L "http://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 查看是否安装成功 docker-compose -h docker-compose --version # docker-compose version 1.29.2, build 5becea4c # 对二进制文件应用可执行权限 chmod +x /usr/local/bin/docker-compose
3、卸载
通过 curl
安装 Compose CLI 插件,使用下面命令卸载
rm /usr/local/bin/docker-compose
4、常用命令
docker-compose up # 启动 docker-compose up -d # 后台启动 # 停止应用程序,方法是docker-compose down 在第二个终端的项目目录中运行,或者在启动应用程序的原始终端中按 CTRL+C。 docker-compose down / CTRL + C docker-compose stop # 使用以下down 命令关闭所有内容,完全删除容器。传递--volumes给 Redis 容器使用的数据卷 docker-compose down --volumes
5、官网示例启动效果
示例配置在 这里
- 启动日志
- 查看镜像
- 浏览器运行效果
说明:
# 默认命名规则 # 默认的服务名: 文件名_服务名_num # _num 代表副本,多个服务器,集群,高可用,高并发,负载均衡 composetest_redis_1 composetest_web_1 docker service ls Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
6、docker-compose网络
通过docker-compose启动的项目(包含多个服务),都在同一个网络下,可以通过服务名字访问
- 查看
docker-compose
网络
[[email protected] ~]# :point_right::point_right:docker network ls:point_left::point_left: NETWORK ID NAME DRIVER SCOPE 8d10d0e8db5e bridge bridge local 3fa1e11e2050 composetest_default bridge local # docker-compose生成的 e8bf4fced9e2 host host local 0096a971fd2c mynet bridge local 6263db0933b9 none null local 0350d84612be redis bridge local 799426d70aa2 test-network bridge local c143092e025f todo-app bridge local [[email protected] ~]# :point_right::point_right:docker network inspect 3fa1e11e2050:point_left::point_left: [ { "Name": "composetest_default", "Id": "3fa1e11e2050b81eb69691487789dd545d6ce3c36e686035c0a49db54f86b2f7", "Created": "2021-10-10T15:46:29.084459645+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.21.0.0/16", "Gateway": "172.21.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "57876e08abc657e884e2f527d930e0ffc34d632928d38ae2e29efa03c91b1980": { "Name": "composetest_redis_1", "EndpointID": "b1803007038c048525602a20da0c2aac73f8a87741ce127e84f89084fd2b75f0", "MacAddress": "02:42:ac:15:00:03", "IPv4Address": "172.21.0.3/16", "IPv6Address": "" }, "994a3c48416ace662a09b1179a695ee63c9a3c33fccefbb0886374260fcd6aab": { "Name": "composetest_web_1", "EndpointID": "cd7e479a22bd251c87214e27d033af3a1bf4164664457e9ceb8cf32f690cded7", "MacAddress": "02:42:ac:15:00:02", "IPv4Address": "172.21.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": { "com.docker.compose.network": "default", "com.docker.compose.project": "composetest", "com.docker.compose.version": "1.29.2" } } ] [[email protected] ~]#
7、docker-compose 启动容器常见问题
7.1、镜像更新之后容器服务没有更新
可以通过 docker inspect containerName 查看容器信息
启停容器并不会拉取最新镜像
docker-compose up -d 或者 docker-compose up -d 服务名
本篇完:tada::tada::tada:,后面接着分享 docker-compose 1分钟搭建WordPress
,有兴趣的话,麻烦看官点个赞,支持一下,谢谢啦:blush:
:balloon::balloon::balloon:
:rose: 持续更文,关注我,你会发现一个踏实努力的宝藏前端:blush:,让我们一起学习,共同成长吧。
:tada: 喜欢的小伙伴记得点赞关注收藏哟,回看不迷路 :wink:
:gift: 欢迎大家评论交流, 蟹蟹:blush:
- 记一次批量更新整型类型的列 → 探究 UPDATE 的使用细节
- 编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
- 线程池底层原理详解与源码分析
- 30分钟掌握 Webpack
- 线性回归大结局(岭(Ridge)、 Lasso回归原理、公式推导),你想要的这里都有
- Django 之路由层
- 【前端必会】webpack loader 到底是什么
- day42-反射01
- 中心化决议管理——云端分析
- HashMap底层原理及jdk1.8源码解读
- 详解JS中 call 方法的实现
- 打印 Logger 日志时,需不需要再封装一下工具类?
- 初识设计模式 - 代理模式
- 设计模式---享元模式
- 密码学奇妙之旅、01 CFB密文反馈模式、AES标准、Golang代码
- [ML从入门到入门] 支持向量机:从SVM的推导过程到SMO的收敛性讨论
- 从应用访问Pod元数据-DownwardApi的应用
- Springboot之 Mybatis 多数据源实现
- Java 泛型程序设计
- CAS核心思想、底层实现