docker-compose详解

docker-compose基础知识

官方使用compose的文档

compose是什么

Docker Compose是 docker 提供的一个命令行工具,Docker-compose是docker的服务编排工具,主要是用来构建多个服务,一般是构建构建多个有关联的服务。使用compose,可以使用yaml文件配置应用程序的服务。然后,通过一个命令可以从配置中创建和启动所有服务

compose使用步骤

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

  1. 创建dockerfile,或者镜像定义应用程序的环境,以便在任何地方复制。

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

  3. 运行docker compose up启动并运行整个应用程序。

安装compose

#下载compose的源代码
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#赋予可执行权限
chmod +x /usr/local/bin/docker-compose

使用如下命令检查docker-compose是否成功安装:

docker-compose --version

如下图即安装成功
在这里插入图片描述

docker-compose常用命令

1.以守护方式运行

[root@docker-learning-centos7 composeapp]# docker-compose up -d

2.查看服务的运行状态

[root@docker-learning-centos7 composeapp]# docker-compose ps

在这里插入图片描述
3.查看服务的日志事件:

[root@docker-learning-centos7 composeapp]# docker-compose logs

在这里插入图片描述
4.停止正在运行的服务

[root@docker-learning-centos7 composeapp]# docker-compose stop

在这里插入图片描述
在这里插入图片描述

5.删除docker-compose服务

[root@docker-learning-centos7 composeapp]# docker-compose rm

在这里插入图片描述

docker-compose使用实例

这里使用一个python-flask应用为例子,该例子中使用了两个容器,一个是redis,一个是flask

1、创建composeapp的目录

mkdir  compose
cd compose
touch Dockerfile

2、编写app.py文件

文件内容如下:

from flask import Flask
from redis import Redis
import os

app=Flask(__name__)
redis=Redis(host="redis_1",port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello world!  I have been seen {0} times'.format(redis.get('hits'))


if __name=="__main__":
    app.run(host="0.0.0.0",debug=True)

3、编写requirement.txt文件

requirement.txt文件是用来解决应用程序所依赖的包的,即解决依赖关系的文件,注意文件名不要修改

vim requirement.txt

文件内容如下:

flask
redis

4、制作包含多个服务的应用程序镜像

docker build -t "hxyapp" .

出现如下图情况证明镜像已经制作成功
在这里插入图片描述

5、编写compose.yml文件

compose.yml文件里面定义了一组要启动的服务,以docker容器的形式表现,还定义了这些服务启动的属性等,通过将所有与服务有关的属性写在yml文件里,之后再执行docker-compose up命令,则可以达到同时部署多个容器的目的
文件内容如下:

web:
        image: hxyapp
        command:python app.py
        ports:
                - "5000:5000"
        volumes:
                - .:/composeapp
        links:
                - redis
redis:
        image: redis                     

1.文件中指定了要启动的服务,有web和redis两个服务,每个要启动的服务都使用一个YAML的散列键定义:web和redis
2.对于web服务,指定了运行时的参数,首先,使用image指定要使用的镜像,使用command指定服务启动时执行的命令,使用port指定端口映射,使用volume指定卷映射,最后使用link指定了要连接到服务的其他服务,将redis服务连接到了web服务。

该yml文件等同于如下命令:

[root@docker-learning-centos7 composeapp]# docker run -d --name "redis" redis
[root@docker-learning-centos7 composeapp]# docker run -d -p 5000:5000 -v /root/composeapp:/composeapp  --link redis:redis --name "hxytest" hxyapp python app.py

6、验证

启动服务:

[root@docker-learning-centos7 composeapp]# docker-compose up

看到如下界面则证明已经成功:
在这里插入图片描述

访问网址:
在这里插入图片描述
这里是7次,是因为我多刷新了几次,验证了redis服务

7、注意

要在docker-compose.yml文件的目录下去执行compose命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值