docker-compose 容器自动化

docker-compose是什么?

一个自动化工具,可以快速建立并运行docker环境。我们可以用dockerfile自动生成一个docker镜像,用docker run运行一个容器,通过添加run 的参数使得容器实现挂载数据卷等操作。

安装docker-compose

我们安装docker时,docker-compose是没有集成进来的,所以我们需要手动安装dockercompose。

下载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

给docker-compose赋权

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

查看一下docker-compose的版本

docker-compose --version

编写一个web服务

当我们拥有了docker-compose之后,就要开始搞事情了,按照官方的样例,我们可以通过docker-compose启动一个有web界面的python服务,这个服务的实现是通过python_web容器的flask提供web服务,redis提供存储。

现在实战一下,我们创建一个test文件夹,之后把要准备的文件都放到这个test文件夹下,记住执行docker-compose命令需要指定路径,一般来进入test文件夹运行命令就指定路径

是在test文件夹,然后运行的时候会自动在test文件夹下找相应的文件。

mkdir test
cd test/

app.py文件是指定使用的redis地址及端口,并通过flask实现web页面展示;

requirements.txt 是pip指定安装包的文件,用于pip自动安装该文件内的多个python包;

Dockerfile 通过python:3.4-alpine镜像生成新的web镜像;

docker-compose 定义服务,包括一个web容器和一个redis容器。

vim app.py

```
import time
import redis
from flask import Flask

app = Flask(name)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)

@app.route('/')
def hello():
count = get_hit_count()
return 'Hello CGLS! I have been seen {} times.\n'.format(count)
if name == "main":
app.run(host="0.0.0.0", debug=True)
```
vim requirements.txt

```
flask
redis

```

vim Dockerfile

```
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
```

vim docker-compose.yml

```
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
```

文件都准备好了,我们来启动这个web服务吧,-d的作用是后台运行,运行完毕之后我们发现创建了test_web镜像,并且还创建了test_web_1和test_redis_1的容器。

# 创建服务
docker-compose up -d
# 如果你想要关闭这个服务
docker-compose stop
# 如果你想要启动这个服务
docker-compose start
# 如果你想查看这个服务
docker-compose ps
# 如果你想删除这个服务,-v是把数据卷也一起删除

docker-compose down -v

总结

docker-compose 是一个方便docker管理的自动化工具,它能实现的是docker可以实现的功能,优点是通过一个docker-compose.yml文件进行从镜像生成到容器运行整个过程的自动化管控。对于我们需要动态的添加数据卷时,修改相应的docker-compose.yml文件然后重新运行即可。

docker-compose 容器自动化


分享到:


相關文章: