Docker 入门到实战教程(十三)Docker Compose

article/2025/8/27 7:44:13

文章目录

  • 一. Docker Compose 概述与使用

  • 二. 安装 Docker Compose

  • 三. 使用Docker Compose

  • 四. 更新Docker Compose

  • 五. 更新应用程序测试

一. Docker Compose 概述与使用

1.1 概述

  • Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务

  • 我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定 义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某 项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后 端的数据库服务容器,甚至还包括负载均衡容器等。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件 (YAML 格式)来定义一组相关联的应用容器为一个项目(project)。有了Compose,我们就不需要再一个个组件去写一份Dockerfile,只需要将整体环境同一起来,写在一份docker-compose.yml文件即可

1.2 使用步骤

使用Compose基本上是一个三步过程:

  • 使用定义您的应用环境,Dockerfile以便可以在任何地方复制。

  • 定义组成应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。

  • 运行 docker-compose up Compose启动并运行您的整个应用程序。

一个docker-compose.yml看起来像这样:

version: '2.0'
services:web:build: .ports:- "5000:5000"volumes:- .:/code- logvolume01:/var/loglinks:- redisredis:image: redis
volumes:logvolume01: {}

有关Compose文件的更多信息,请参见 Compose文件参考。

https://docs.docker.com/compose/compose-file

Compose具有用于管理应用程序整个生命周期的命令:

  • 启动,停止和重建服务

  • 查看正在运行的服务的状态

  • 运行服务的日志输出

  • 在服务上运行一次性命令

1.3 Docker-Compose使用命令

创建并启动容器
docker-compose up
创建并后台启动容器
docker-compose up -d
查看当前compose进程
docker-compose ps
启动容器
docker-compose start
关闭容器
docker-compose stop  # 关闭容器
关闭并移除容器
docker-compose down   # 关闭并移除容器
查看日志
docker-compose logs
关闭并移除容器并删除容器清除存储
docker-compose down --volumes

二. 安装 Docker Compose

两种最新的docker安装方式

  • 下载docker-compose二进制文件安装

  • pip安装(将 Compose 当作一个 Python 应用来从 pip 源中安装)

2.1. 下载docker-compose二进制文件安装

运行以下命令以下载Docker Compose的当前稳定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
file

使用官方github下载很慢,采用换源

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
file
  • 要安装其他版本的Compose,请替换1.25.4 为要使用的Compose版本。

将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

查看版本:

docker-compose --version
file

2.2. pip安装

udo pip install docker-compose

2.3. 卸载

二进制包方式安装的,删除二进制文件即可

sudo rm /usr/local/bin/docker-compose

pip 安装的,则执行如下命令即可删除

sudo pip uninstall docker-compose

三. 使用Docker Compose

上面说到使用的三个步骤

这里构建一个运行在Docker Compose上的简单Python Web应用程序。该应用程序使用Flask框架,并在Redis中维护一个计数器。尽管该示例使用Python,但即使您不熟悉此处演示的概念,也应可以理解。

3.1 项目创建目录

mkdir composetest
cd composetest
file

3.2 项目目录中创建一个名为app.py的文件

将以下内容粘贴

touch app.py
import timeimport redis
from flask import Flaskapp = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.\n'.format(count)

在此示例中,redis是应用程序网络上的redis容器的主机名。我们为Redis使用默认端口6379

3.3 在项目目录中创建一个名为requirements.txt的文件

内容如下:

touch requirements.txt

内容如下:

flask
redis
file

3.4 创建Dockerfile

在此步骤中,编写一个构建Docker映像的Dockerfile。该图像包含Python应用程序所需的所有依赖关系,包括Python本身。

粘贴以下内容:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone
RUN apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
  • 从Python 3.7映像开始构建映像

  • 将工作目录设置为/code

  • 设置flask命令使用的环境变量

  • 修改源为了快速下载 -安装gcc,以便诸如MarkupSafe和SQLAlchemy之类的Python包可以编译加速

  • 复制requirements.txt并安装Python依赖项

  • 将.项目中的当前目录复制到.映像中的工作目录

  • 将容器的默认命令设置为flask run。

3.5 在compose中定义服务

在项目目录中创建一个名为docker-compose.yml的文件,然后粘贴以下内容:

version: '3'
services:web:build: .ports:- "5000:5000"redis:image: "redis:latest"

该Compose文件定义了两个服务:webredis

网络服务

该web服务使用从Dockerfile当前目录中构建的映像。然后,它将容器和主机绑定到暴露的端口5000。此示例服务使用Flask Web服务器的默认端口5000。

Redis服务

该redis服务使用从Docker Hub注册表中提取的公共Redis映像,如果存在最新版则不拉取

注: compose 版本对应关系

https://docs.docker.com/compose/compose-file/compose-file-v2/

3.6 生成和运行与撰写你的应用程序

在项目目录中,运行来启动应用程序

docker-compose up

完成以后可以通过浏览器确认结果

打开浏览器输入: http://ip:5000/

应该在浏览器中看到一条消息,内容为:

Hello World! I have been seen 1 times.
file

3.7 关闭并移除该应用

通过docker-compose down 从第二个终端的项目目录中运行,或在启动该应用的原始终端中按CTRL + C来停止该应用

file

四. 更新Docker Compose

4.1 重新构建docker-compose.yml文件

将宿主机包含代码的目录挂载到服务,本质就是容器实例与宿主机共享文件。

内容如下:

version: '3'
services:web:build: .ports:- "5000:5000"volumes:- .:/codeenvironment:FLASK_ENV: developmentredis:image: "redis:latest"

volumes将主机上的项目目录(当前目录)/code安装到容器内部,可以即时修改代码,而不必重建映像。该environment键设置了 FLASK_ENV环境变量,该变量指示flask run要在开发模式下运行并在更改时重新加载代码。此模式仅应在开发中使用。

4.2 重新构建并运行应用程序

在项目目录中,键入docker-compose up以使用更新的Compose文件构建应用程序,然后运行它

docker-compose up -d
file

查看进程

docker-compose ps
file

查看日志

docker-compose logs
file

查看单个服务日志

docker-compose logs web
file

再次打开浏览器输入: http://ip:5000/

Hello World再次出现,然后刷新以查看计数增量

file

五. 更新应用程序测试

因为现在应用程序代码是使用卷安装到容器中的,所以您可以对其代码进行更改并立即查看更改,而无需重建映像。

更改问候语app.py并保存。例如,将Hello World!消息更改为Hello from Dong!

file

再次打开浏览器输入: http://ip:5000/

在浏览器中刷新应用。问候语应更新,并且计数器应仍在增加。

file

参考链接:

http://suo.im/6xZyQs
http://suo.im/6qxxYv

 往期推荐 

????

Docker 入门到实战教程(一)介绍Docker

Docker入门到实战教程(二)安装Docker

Docker入门到实战教程(三)镜像和容器

Docker 入门到实战教程(四)容器链接

Docker 入门到实战教程(五)构建Docker镜像

Docker 入门到实战教程(六)Docker数据卷

Docker 入门到实战教程(七)安装Redis

Docker 入门到实战教程(八)安装Mysql

Docker 入门到实战教程(九)安装Nginx

Docker入门到实战教程(十)部署Spring Boot项目

Docker入门到实战教程(十一)部署Vue+SpringBoot 前后端分离项目

Docker入门到实战教程(十二)ELK+Filebeat搭建日志分析系统


http://chatgpt.dhexx.cn/article/pJqKb9Iq.shtml

相关文章

我的Docker学习笔记:从入门到实战过程全记录

文章目录 1 和Docker相关的概念1.1 虚拟机和容器1.2 容器、镜像和Docker1.3 Docker和k8s 2 Docker的安装2.1 在ubuntu中安装2.2 在Win10中安装2.3 Hello world 3 Docker镜像的使用3.1 列出本地所有镜像3.2 从镜像库中查找镜像3.3 下载新的镜像 4 Docker容器的使用4.1 启动容器4…

Docker入门与实战讲解

简述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPh…

Docker 入门到实战教程(一)介绍Docker

一. Docker简介 1.1 什么是虚拟化? 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来&#xff0…

Docker——入门实战

I. Docker 简介 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。我也将Docker类比于Python虚拟环境,可以有效的配置各个版本的开发环境,比如深度学习与Java…

Docker超详细教程——入门篇+实战

Docker详细教程——入门篇 官方地址docker概念相关概念docker底层操作流程docker好处为什么比虚拟机快 docker常用命令概览 docker安装本教程环境安装步骤解决提示找不到软件包:添加阿里云镜像 镜像镜像底层原理镜像命令官方地址镜像命令搜索镜像拉取镜像镜像删除 d…

Docker 从入门到实战

docker rm删除已经终止的容器docker -f rm 可以删除正在运行的容器 本文主要介绍了Docker 从入门到实战:概述、安装及部署等 。希望对你的学习有帮助。 一、概述 1.1 基本概念 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开…

docker 入门到实战

目录 1.Docker介绍 1.1 简介: 1.2 Docker的应用场景 1.3 Docker 的优点 1.4 Docker 架构 Docker包括三个基本概念: Docker和虚拟机区别: 2.Docker安装 2.1 CentOS Docker 安装 2.2卸载旧版本 2.3设置仓库 2.4安装Docker 2.5启动docker 2.6…

Virtualbox虚拟机安装Mac os14教程

1、VirtualBox虚拟机 下载地址:https://www.virtualbox.org/ 特别提醒:推荐官方下载,安装VirtualBox虚拟机的时候请保持默认安装位置(就是直接点下一步,不要自己修改安装位置) 2. Mac Os14下载 下载地址…

pd虚拟机安装linux系统,Mac利用PD虚拟机安装CentOS 7

Post Views: 263 使用Parallels Desktop在Mac上安装CentOS Linux的方法有两种: 通过使用Parallels Desktop中可用的CentOS设备。 通过使用从Internet下载的安装映像手动安装CentOS。 使用设备安装CentOS 1.启动Parallels Desktop,然后 从Mac顶部栏中选择 File – New。 2.从…

虚拟机安装MAC系统、搭建ios开发环境

MacOS系统资源,网盘下载:https://pan.baidu.com/s/1xRWusbgfIUxJxMpUbWWRag 提取码: 08fc 1、安装虚拟机 虚拟机下载: http://www.onlinedown.net/soft/2062.htm 注册码: AZ312-2FE41-M81LP-R6WEZ-NA2Z4 VC1J8-0TX11-M84WP-2WN…

mac 安装虚拟机win11

下载PD安装包、win11镜像、PR试用 链接: https://pan.baidu.com/s/1A6M_dc-mL4oUMpVak9Cu3A 提取码: 1cfl 1、下载好后,允许访问文件权限 2、这一步可直接安装,或者跳过通过win11的IOS镜像导入,win11则选择跳过 3、跳过则到该页面&#xff…

VMware14虚拟机安装Mac OS教程

搬运一波,在论坛里搜了下,没有这个教程,就来分享给大家,还是很不错的东西呢!给大家分享在Windows10系统上用Vmware14虚拟机安装苹果Mac os x系统的方法~准备工具 Vmware14虚拟机unlocker补丁mac os x 镜像 下载好上面…

mac下安装win7虚拟机

首先需要有Parallels desktop这个工具 下载win7镜像,下载链接https://msdn.itellyou.cn/ 找到windows7操作系统,下载第一个 下载方式为复制下载地址ed2k链接,然后打开迅雷(或qq旋风等下载工具),自动识别到…

Mac安装Linux虚拟机

1、首先安装VMware 链接地址:https://www.vmware.com/products/fusion/fusion-evaluation.html 安装好后输入txt里的激活码 2、下载linux镜像 下载地址:https://www.centos.org/download/ 这里我装的是CentOS8版本的,在后续安装的过程中&…

VMware 14虚拟机安装Mac OS 10.14详细教程

由于需要开发IOS版本的AR软件,身边都是Windows系统,所以只能在虚拟机上进行开发了。首先从安装mac OS开始!! 所需工具: 1、VMware Workstation 14 2、用于VMware的macOS补丁,unlocker 下载地址&#xff1…

VMware workstation虚拟机安装mac os 12 教程

首先,我们要下载VMware workstation,我把地址给在这 https://download3.vmware.com/software/wkst/file/VMware-workstation-full-16.1.0-17198959.exe 运行安装,安装好了以后 然后下载补丁,地址我也给在这https://cloud.189.c…

关于MAC如通过虚拟机安装ubuntu

效果 题外话:额,主要mac买了也有一年多了,也没怎么用,最近在复习linux内容,想在macpro上装一个ubuntu,之前一直是用win10装的虚拟机和linux,然后发现mac全部都是要钱的,然后还有m1和…

虚拟机安装Mac OS 报五国语言

VM虚拟机启用MAC系统出现 五国语言问题 反复重启 解决办法: 二、下载Unlock3.0.2文件并安装 1、下载Unlock3.0.2文件 下载地址:https://www.sdbeta.com/wg/2017/1014/213230.html 然后重启虚拟机竟然可以了 参考地址: https://blog.csdn…

windows虚拟机安装Mac OS系统(操作图解)

★ 背景 因为工作需要学习ios开发,但是苹果电脑申请了还没审批下来所以想着先搭建一个虚拟机来熟悉开发环境安装环境 windows,vmware 16 Pro 一、准备工作 1. vmware 16 Pro 下载 2. unlocker 下载地址,选择zip下载 3. macos12.6 &#xff…

虚拟机安装Mac系统

先分享一个百度网盘不限速的工具给大家 不然下载镜像你真的要等一天了 链接:https://pan.baidu.com/s/1VV4_w2i_fxBmLeYgwBHxjA 密码:iml5 一、准备工作 1.下载安装VMware Workstation 直接百度搜索安装这个 2.下载Mac镜像 因为现在最新版的Xcode10要求Mac最低版本是10…