Docker Compose之容器编排开发初探
1、前言
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。
Compose 是一个用于定义和运行多个 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。
Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。
首先介绍几个术语
服务(service):一个应用容器,实际上可以运行多个相同镜像的实例。
项目(project):由一组关联的应用容器组成的一个完整业务单元。
可见,一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理。
2、安装
官方文档在这里
我才用 curl 方式为所有用户安装。(也可以用 apt-get 方式,具体参考文档)
# 下载 Docker Compose 的当前稳定版本(安装给所有服务器用户:/usr/local/bin)
sudo curl -L "https://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网络
[root@--- ~]# docker network ls
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
[root@--- ~]# docker network inspect 3fa1e11e2050
[
{
"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"
}
}
]
[root@--- ~]#
7、docker-compose 启动容器常见问题
7.1、镜像更新之后容器服务没有更新
可以通过 docker inspect containerName 查看容器信息
启停容器并不会拉取最新镜像
docker-compose up -d
或者
docker-compose up -d 服务名
本篇完,后面接着分享 docker-compose 1分钟搭建WordPress,有兴趣的话,麻烦看官点个赞,支持一下,谢谢啦
持续更文,关注我,你会发现一个踏实努力的宝藏前端,让我们一起学习,共同成长吧。
喜欢的小伙伴记得点赞关注收藏哟,回看不迷路
欢迎大家评论交流, 蟹蟹
Docker Compose之容器编排开发初探的更多相关文章
- Docker系列10—容器编排工具Docker Compose详解
本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...
- Docker深入浅出系列 | Docker Compose多容器实战
目录 前期准备 Docker Compose是什么 为什么要用Docker Compose Docker Compose使用场景 Docker Compose安装 Compose Yaml文件结构 C ...
- Docker学习笔记之使用 Docker Compose 管理容器
0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...
- docker kubernetes Swarm容器编排k8s CICD部署
1docker版本 docker 17.09 https://docs.docker.com/ appledeAir:~ apple$ docker version Client: Docker En ...
- Docker Compose 多容器应用
Docker Compose是一个用来定义并运行复杂应用程序的工具.用Compose,你可以在一个文件中定义多个容器应用程序,然后只需一条命令就可以完成使其运行所需的所有操作. 一个使用Docker容 ...
- [Docker6] Docker compose多容器运行与管理
六.Docker compose docker compose就是通过yml文件来定义和运行多个容器docker应用程序的工具,三步过程就能跑起一个compose: 定义应用程序的环境(yml中) 定 ...
- .Net Core微服务入门全纪录(八)——Docker Compose与容器网络
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 前言 上一篇[.Net Core微服务入门全纪录(七)--IdentityServer4-授权认证]中使用IdentityServer4 ...
- 基于Docker Compose的.NET Core微服务持续发布
是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...
- Docker 三剑客之 Docker Compose
Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,开源地址:https://github.com/docker/compose Dock ...
随机推荐
- Sqoop导入数据到mysql数据库报错:ERROR tool.ExportTool: Error during export: Export job failed!(已解决)
问题描述: Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Conta ...
- boost::bind 不能处理函数重载 (error: no matching function for call to 'bind')
前言 最近任务多.工期紧,没有时间更新博客,就水一期吧.虽然是水,也不能太失水准,刚好最近工作中遇到一个 boost::bind 的问题,花费了半天时间来定位解决,就说说它吧. 问题背景 项目中使用了 ...
- 【原创】项目五w1r3s.v1.0
实战记录 1.nmap信息枚举 1)C段扫描 nmap -sP 192.168.186.0/24 2)扫描全端口信息 nmap -p- 192.168.186.143 3)扫描版本信息 nmap -p ...
- 基于原生JS实现的Bean容器和AOP编程
Bean是什么 我们知道Bean是Spring最基础的核心构件,大多数逻辑代码都通过Bean进行管理.NestJS基于TypeScript和依赖注入也实现了类似于Spring Bean的机制:服务提供 ...
- ”只用 1 分钟“ - 超简极速 Apk 签名 & 多渠道打包神器
众所周知,渠道包作为当下国内 Android 应用市场常见的分发方式,当 APP 和后台交互或进行数据上报时,会带上各自的 channel 渠道信息,以此方便企业 & 开发者统计 APP 在各 ...
- 记安装AWVS14过程踩的坑
由于之前的AWVS14用着用着无法扫描了,一扫就是失败,一气之下就重装系统了.重装系统后发现安装还是不行,折腾了好久,终于找到方法了. 安装acunetix_14.1.210324124.exe 没啥 ...
- Python实现中文字幕雨+源代码
写在前面的一些P话: 最近浏览了很多关于用Python和Pygame实现代码雨的案例,发现很多都是没有深入讲解代码的整个实现过程,从0到1教会你制作中文文字雨. 然后在介绍的过程中,我也将深入介绍Py ...
- TypeScript ReadonlyArray(只读数组类型) 详细介绍
1.ReadonlyArray 简介 在TypeScript中,除了Array<T>类型,还有一个ReadonlyArray<T>类型,ReadonlyArray类型和Arra ...
- Python之枚举法解数学题
作为初二的学生,数学题总是令我苦恼的问题.尤其是我们这里的预备班考试(即我们这里最好的两所高中提前一年招生,选拔尖子生的考试)将近,我所面对的数学题越发令人头疼. 这不,麻烦来了: 如图,在正方形AB ...
- 10.2 如何运行Android项目到Android Studio自带模拟器
Android开发一般都可以将应用运行到模拟器查看效果,除非特殊项目要用到真机,所以我们这里先讲解如何将项目运行到模拟器,以校验我们的开发环境以及创建的项目是否有问题. 创建模拟器 点击"C ...