Docker Compose

本文记录了使用Docker Compose过程中遇到的挑战及解决方法,最终成功运行应用的历程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Compose负责实现对Docker容器集群的快速编排。定位是 定义和运行多个Docker容器的应用,前身是Fig。
Compose允许用户通过单一docker-compose.yml模板文件(YAML格式)来定义一组相关的应用容器为一个项目。通过子命令对项目中的一组容器进行生命周期管理。

Compose中两个重要概念:
服务(service):一个应用的容器,实际上可以包含若干运行相同镜像的容器实例。
项目(project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。

Compose项目由Python编写,实现上调用了Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持DockerAPI,就可以利用compose进行编排管理。

安装与卸载
Compose支持Linux、macOS、Windows10三大平台。
Compose可以通过Python的包管理工具pip进行安装,也可以直接下载编译好的二进制文件使用,甚至可以直接在Docker容器中运行。
Docker Desktop for Mac/Windows自带docker-compose二进制文件,安装Docker之后可以直接使用。

书上是建议直接下载二进制文件(版本号注意调整成最新)。
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
我在本地直接这样装的(ubuntu)apt install docker-compose
还有就是如果不是x86_64架构的Linux,比如ARM(树莓派),可以用pip安装(要Python)。
sudo pip install -U docker-compose

卸载的话:
二进制安装的话直接删除文件 sudo rm /usr/local/bin/docker-compose
pip安装直接sudo pip uninstall docker-compose
如果是像我那样apt安装的 apt remove docker-compose

一个简单例子,Python建立一个记录访问次数的web网站。

app.py文件(注意缩进问题)
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
    countx = redis.incr('hits')
    return 'Hello World!{}\n'.format(countx)

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

Dockerfile文件
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]

docker-compose.yml文件
version: "2.0"
services:
 web:
  build: .
  ports:
   - "5000:5000"
   
 redis:
  image: "redis:alpine"

关于上面那几行可怜的内容我有话说,第一,版本号2.0根据实际情况自己写,书上是3,我的是1.8.x的所以我写2.0,还有就是格式 格式 格式,不要用tab键盘,并且看好了都在什么地方需要有空格。也查好空格的个数。

经过各种坑之后,终于跑起来了。

docker-compose up

Compose命令说明

命令对象与格式
Compose大部分命令的对象既可以是项目本身,也可以指定项目中的服务或者容器。如果没有别的说明,命令对象将是项目,意味着所有的服务都会受到命令影响。
命令查询格式 docker-compose [COMMAND] --help 
或者 docker-compose help [COMMAND]
docker-compose  命令格式:docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]

-f,--file FILE 指定Compose模板文件,默认docker-compose.yml
-p,--project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名称。
--x-networking 使用docker的可拔插网络后端特性
--x-net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值