解决使用Docker Compose管理容器的问题

在Docker的设计中,一个容器只运行一个应用。但是目前的绝大多数应用系统都不是一个应用就可以组成的。虽然之前提到了容器间互相连接、交换数据的方法,使用这些方法也确实能搭建起一个完整应用系统的容器群。但是,需要执行很多命令,需要考虑很多应用和容器间的关系,而Docker Compose正是为了解决这些复杂的操作。

解决容器管理问题

就拿最简单的例⼦来说吧,如果我们要为我们的应⽤容器准备⼀个 MySQL 容器和⼀个 Redis 容器,那么在每次启动时,我们先要将 MySQL 容器和 Redis 容器启动起来,再将应⽤容器运⾏起来。这其中还不要忘了在创建应⽤容器时将容器⽹络连接到 MySQL 容器和 Redis 容器上,以便应⽤连接上它们并进⾏数据交换。

这还不够,如果我们还对容器进⾏了各种配置,我们最好还得将容器创建和配置的命令保存下来,以便下次可以直接使⽤。

如果我们要想让这套体系像 docker run 和 docker rm 那样⾃如的进⾏⽆痕切换,那就更加⿇烦了,我们可能需要编写⼀些脚本才能不⾄于被绕到命令的⽑线球⾥。

其实核⼼还是缺少⼀个对容器组合进⾏管理的东西。

Docker Compose

Docker Compose :多容器定义和运行软件。在Docker Compose中,根据一个配置文件,将所有与应用系统相关的应用和对应的容器进行配置,再根据Docker Compose提供的命令进行启动,就可以解决上面说的多容器之间的复杂问题。 Docker Compose可以理解为是将多个容器的运行方式和配置固化,类似与Dockerfile 对于镜像的作用。

安装Docker Compose

#下载
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#设置权限
chmod +x /usr/local/bin/docker-compose

#查看安装后的信息
docker-compose version

Docker Compose的基本使用

Docker Compose的核心是它的配置文件,是一个基于YAML格式的文件。与Dockerfile采用Dockerfile这个名字作为镜像构建定义的默认文件名一样,Docker Compose的配置文件也有一个默认的文件名docker-compose.yml
一个简单的配置内容

version: '3'
services:
	webapp:
		build: ./image/webapp
		ports:
			- "5000:5000"
		volumes:
			- ./code:/code
			- logvolume:/var/log
		links:
			- mysql
			- redis
	redis:
		image: redis:3.2
	mysql:
		image: mysql:5.7
		environment:
			- MYSQL_ROOT_PASSWORD=my-secret-pw
volumes:
	logvolume: {}

Docker Compose 配置⽂件⾥可以包含许多内容,从每个容器的各个细节控制,到⽹络、数据卷等的定义。

version是Docker Compose的版本号,最新的是3。services是配置的核心,定义了容器的各项细节。每个services代表的是一个应用集群的配置

启动和停止

启动
docker-compose up,会根据配置文件创建配置的所有容器、网络、数据卷等内容,并将它们启动。与docker run命令类似,并且都是前台启动,如果要以守护进程方式启动也需要加-d

docker-compose up -d

docker-compose up会默认识别当前控制台所在目录的docker-compose.yml文件,如果要指定目录可以通过-f命令,指定项目名可以通过-t命令

docker-compose -f ./compose/docker-compose.yml -p myapp up -d

停止
docker-compose down命令用于停止所有容器,并将它们删除,同时删除网络等配置。也就是⼏乎将这个 Docker Compose 项⽬的所有影响从 Docker 中清除。

容器命令

这些命令看上去都和 Docker Engine 中对单个容器进⾏操作的命令类似,我们来看⼏个常见的。
在 Docker Engine 中,如果我们想要查看容器中主进程的输出内容,可以使⽤ docker logs 命令。⽽由于在 Docker Compose 下运⾏的服务,其命名都是由 Docker Compose ⾃动完成的,如果我们直接使⽤docker logs 就需要先找到容器的名字,这显然有些⿇烦了。我们可以直接使⽤ docker-compose logs 命令来完成这项⼯作。

docker-compose logs nginx

同理,在 Docker Compose 还有⼏个类似的命令可以单独控制某个或某些服务。
通过 docker-compose createdocker-compose startdocker-compose stop 我们可以实现与 docker createdocker startdocker stop 相似的效果,只不过操作的对象由 Docker Engine 中的容器变为了 Docker Compose 中的服务。

到此这篇关于使用Docker Compose管理容器的文章就介绍到这了,更多相关Docker Compose管理容器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker compose自定义网络实现固定容器ip地址

    由于默认的bridge桥接网络,重启容器后会改变ip地址.在一些场景下我们希望固定容器IP地址. docker-compose是docker的一个编排工具,相对于命令模式创建网络,容器等.使用配置文件相对来说更方便,可追溯问题. 直接粘贴docker-compose.yml文件 version: '2' services: nginx: image: nginx:1.13.12 container_name: nginx restart: always tty: true networks: e

  • Docker 容器编排利器Compose(起步篇)

    一个大型的Docker组成的微服务应用中,容器的数量是非常庞大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦.Compose的出现正是为了解决这个问题. Compose简介 Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig.Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器.在配置文件中,所有容器通过servic

  • Docker Compose多容器部署的实现

    一.wordpress部署 这里先以wordpress的部署为例引出Docker Compose,wordpress的部署需要wordpress和mysql的镜像: (一)准备环境 1.拉取wordpress镜像 [root@docker-node1 /]# docker pull wordpress 2.拉取mysql镜像 [root@docker-node1 /]# docker pull mysql 3.镜像列表 [root@docker-node1 /]# docker image ls

  • IDEA中使用Docker Compose容器编排的实现

    (一)确保idea 中连接到docker (二)打包镜像 我这里测试的是前后分离项目 如果是微服务中呢,由于前文中在pom.xml 中绑定了idea docker 打包插件 在其 父工程中使用 打包命令 即可将其子模块 打成一个个镜像 (三)Compos编排文件编写 docker compose 使用镜像编排 version: '3' #compose 文件版本(1.2.x+ 用3即可) services: #指定服务名 建议还是与项目名一致 虽然其并没有什么实际性联系 lei-server:

  • Docker系列之使用Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: 1.Dockerfile 定义应用的运行环境 2.docker-compose.yml 定义组成应用的各服务 3.docker-compose up 启动整个应用 2. 安装Compose 直接从github下载即可,前提要先安装Docker,版本要1.9.1以上 Note that Compose 1.8.0 requires

  • 解决使用Docker Compose管理容器的问题

    在Docker的设计中,一个容器只运行一个应用.但是目前的绝大多数应用系统都不是一个应用就可以组成的.虽然之前提到了容器间互相连接.交换数据的方法,使用这些方法也确实能搭建起一个完整应用系统的容器群.但是,需要执行很多命令,需要考虑很多应用和容器间的关系,而Docker Compose正是为了解决这些复杂的操作. 解决容器管理问题 就拿最简单的例⼦来说吧,如果我们要为我们的应⽤容器准备⼀个 MySQL 容器和⼀个 Redis 容器,那么在每次启动时,我们先要将 MySQL 容器和 Redis 容

  • Docker Compose快速部署多容器服务实战的实例详解

    目录 1 什么是Docker Compose 2 安装Docker Compose 3 Docker Compose文件格式的简单介绍 4 Docker Compose常用命令 5 使用Docker Compose一键部署Spring Boot+Redis实战 5.1 构建应用 5.1.1 Spring Boot项目 5.1.2 Redis配置文件 5.2 打包应用并构建目录 5.2.1 打包Spring Boot项目 5.2.2 上传redis.conf配置文件 5.3 编写Dockerfil

  • 使用 Docker Compose 构建复杂的多容器 App的方法

    目录 1 为什么需要 Docker Compose 2 什么是 Docker Compose 3 Docker Compose 的使用 3.1 启动容器 3.2 停止并删除容器 1 为什么需要 Docker Compose 在构建容器过程中,一般需要重复运行一些命令, 如 docker build ,docker run 等等,这些命令有时冗长而复杂,逐个重复运行这些命令十分繁琐,对于多容器的复杂应用尤其如此.使用 Docker Compose 工具能极大地简化容器的创建.管理和维护. 2 什么

  • Docker Compose 网络设置详解

    基本概念 默认情况下,Compose会为我们的应用创建一个网络,服务的每个容器都会加入该网络中.这样,容器就可被该网络中的其他容器访问,不仅如此,该容器还能以服务名称作为hostname被其他容器访问. 默认情况下,应用程序的网络名称基于Compose的工程名称,而项目名称基于docker-compose.yml所在目录的名称.如需修改工程名称,可使用--project-name标识或COMPOSE_PORJECT_NAME环境变量. 举个例子,假如一个应用程序在名为myapp的目录中,并且do

  • docker compose 使用教程

    Docker提供一个容器编排工具------>Docker Compose,它允许用户在一个模板(YAML格式)中定义一组相关联的应用容器,这组容器会根据配置模板中的"--link"等参数 对启动的优先级自动排序,简单执行一条"docker-compose up",就可以把同一个服务中的多个容器一次创建和启动. 安装docker-compose: 复制代码 代码如下: curl -L https://github.com/docker/compose/rele

  • docker compose快速开始超详细教程

    目录 docker compose快速开始 一.什么是docker compose 1. Compose 特性 在单独的主机上提供多个相互隔离的环境 在创建容器时,自动保存 volume 数据 只重建有改动的容器 可以使用变量 2. 使用 Compose 步骤和思路 二.docker-compose常用命令 三.docker compose 安装 四.docker-compose.yml 基础 五.工作常用技巧 docker-compose或docker run 启动容器后就退出 docker-

  • 详解Docker使用Linux iptables 和 Interfaces管理容器网络

    我使用docker至今已有一段时间了,与绝大部分的人一样,我被docker强大的功能和易用性深深的折服.简单方便是docker的核心之一,它强大的功能被抽象成了非常简单的命令.当我在使用和学习docker的时候,我很想知道docker在后台都做了一些什么事情,特别是在网络这一块(我最感兴趣的一块) 我找到了很多关于创建和操作容器网络的文档,但是关于docker如何使网络工作的却没有那么多. Docker广泛使用linux iptables和网桥接口,这篇文章是我如何用于创建容器网络的总结,大部分

随机推荐