天津11选5分布走势图:docker-compose 工具

作者: 魯智深 分類: docker 發布時間: 2018-12-27 08:48

天津11选5中奖结果 www.ebzvaz.com.cn docker-compose 是一個工具,可以通過一個yml文件定義多個容器的docker應用,通過一條命令就可以根據yml文件的定義去創建或者管理這個多個容器。

yml文件一個默認的名字屎docker-compose.yml,yml文件里定義了3個重要的概念services,networks,volumes

docker-compose的版本介紹,不同的版本,對應不同的使用方式,推薦使用最新版本。

官方版本介紹:https://docs.docker.com/compose/compose-file/#reference-and-guidelines

services
一個services代表一個container(容器),這個container可以從dockerhub的image來創建,或者從本地的dockerfile,build出來的images來創建

services的啟動類似于docker run ,我們可以給其指定network和volume,所以可以給service指定networks和volume的引用。

一、先來熟悉一下docker-compose的yml文件

定義一個從dockerhub上拉取docker-compose

1
2
3
4
5
6
7
services:
    db:
        image:postgres:9.4
        volumes:
            - "db-data:/ver/lib/postgresql/data"
        networks:
            - back-tier

定義一個本地build的docker-compose

1
2
3
4
5
6
7
8
services:
    worker:
        build: ./worker
        links:
            - db
            - redis
        networks:
            - back-tier

如果所有container都在一個網絡上,就不需要links

在services同級別會定義一個volumes

1
2
volumes:
    db-data:

同理networks也定義一個同級別networks

1
2
3
4
5
networks:
    front-tier:
        driver:bridge
    back-tier:
        driver:bridge

定義一個完整的wordpress.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3'
services:
    wordpress:
        image:wordpress
        ports:
            -8080:80
        environment:
            WORDPRESS_DB_HOST:mysql
            WORDPRESS_DB_PASSWORD:root
        networks:
            - my-bridge

    mysql:
        image:mysql
    environment:
            MYSQL_ROOT_PASSWORD:root
            MYSQL_DATABASE:wordpress
    volumes:
        - mysql-data:/var/lib/mysql
    networks:
        - my-bridge

volumes:
    mysql-data:

networks:
    my-bridge:
        driver:bridge

二、docker-compose 常用命令

安裝docker-compose

1
2
3
sudo pip install docker-compose
docker-compose --version #查看版本
docker-compose 回車 #打印出命令行工具

啟動docker-compose.yml文件

當直接運行docker-compose up命令時,會運行當前文件夾中docker-compose.ym
l的文件,docker-compose默認會去找此命名文件,也可以指定文件啟動。

1
2
3
docker-compose up --help #查看幫助命令
docker-compose up #啟動yml文件
docker-compose up -f 文件名.yml
啟動yml文件

啟動yml文件

這里可以通過 docker-compose ps 查看正在運行服務 services

正則運行的services

正則運行的services

停止服務services,命令是 docker-compose stop 就停止了服務services,也可以馬上啟動docker-compose start。

如果要刪除啟動的實例,docker-compose down 此操作會刪除docker-compose運行的容器,但是不會刪除docker里面的鏡像文件。

docker-compose默認是debug模式運行,我們可以加上-d實現后臺運行。

1
docker-compose up -d

容器已經啟動,進入容器contianer的方法非常簡單,docker-compose exec 容器名稱 bash

三、docker-compose 運行一個flask程序

創建一個 flask-reids 文件夾,在文件夾下編寫 Dockerfile 文件

1
2
3
4
5
6
7
FROM  python:2.7
LABEL maintaner="[email protected]"
COPY ./app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD ["python","app.py"]

編寫docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "3"

services:
    redis:
        images:redis
   
    web:
        build:
            context: .
            dockerfile: Dockerfile
        ports:
            - 8000:5000
        environment:
            REDIS_HOST:redis

最后編寫app.py 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from flask import Flask
from redis import Redis
import os
import socket

app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)


@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())


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

接下來就是直接啟動 docker-compose up

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

發表評論

電子郵件地址不會被公開。 必填項已用*標注