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 容器自動化


分享到:


相關文章: