Docker docker-compose

 

compose是docker容器进行编排的工具,通过定义一个配置文件(默认docker-compose.yml),管理多个容器的运行

 

安装

 

因为装了Python3环境,使用pip3命令安装,然后创建软连接即可;

[root@Python ~]# pip3 -V
pip 10.0.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)
[root@Python ~]# pip3 install docker-compose
[root@Python ~]# ln -s /usr/local/python3/bin/docker-compose /usr/local/bin/docker-compose
[root@Python ~]# docker-compose version
docker-compose version 1.23.2, build 1110ad0
docker-py version: 3.7.1
CPython version: 3.7.0
OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017

 

 由于 docker-compose 托管在 github 上,也可以到 github 上下载,然后给予执行权限即可:

[root@test-101 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    100      0 --:--:--  0:00:06 --:--:--   128
100 15.4M  100 15.4M    0     0  39911      0  0:06:45  0:06:45 --:--:-- 37669
[root@test-101 ~]# chmod +x /usr/local/bin/docker-compose
[root@test-101 ~]# docker-compose --version
docker-compose version 1.24.1, build 4667896b

上面下载的是 1.24.1 版本的 docker-compose,访问 releases 页面可以查看最新版本的 docker-compose。

 

简单使用

 

举个栗子

用 Python 来建立一个能够记录页面访问次数的 web 网站:

[root@python syztoo]# ls
app.py  docker-compose.yml  Dockerfile

 app.py文件内容:

[root@python syztoo]# cat app.py 
from flask import Flask
from redis import Redis

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

@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello World! 该页面已被访问 {} 次。\n'.format(count)

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

Dockerfile文件内容:

[root@python syztoo]# cat Dockerfile 
FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]

docker-compose.yml文件内容:

[root@python syztoo]# cat docker-compose.yml 
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

 启动容器:

[root@python syztoo]# docker-compose up -d

 登陆浏览器验证,也可使用curl进行本地验证

[root@python syztoo]# curl '127.0.0.1:5000'
Hello World! 该页面已被访问 1 次。
[root@python syztoo]# curl '127.0.0.1:5000'
Hello World! 该页面已被访问 2 次。
[root@python syztoo]# curl '127.0.0.1:5000'
Hello World! 该页面已被访问 3 次。

 

命令格式

 

docker-compose [options] [COMMAND] [ARGS...]

 

options:

-f filename        指定使用的模板文件,默认docker-compose.yml
-p projectname     指定项目名字,默认以当前目录作为项目名字

 

COMMAND:

up           启动项目
up -d        启动并后台运行
down         停止项目并移除网络
config       验证compose文件格式是否正确
exec         进入指定的容器
images       列出项目中所包含的容器
kill         强制停掉某容器
logs         查看容器日志
port         查看某容器映射的端口
pause        暂停某容器运行
unpause      恢复暂停状态的容器
start        运行停止状态的容器
stop         停止运行状态的容器

 

docker-compose.yml

 

默认的模板文件名称为 docker-compose.yml ,格式为 YAML 格式。

 

举栗子说明

version: "3"

services:
  webapp:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - "/home/nginx/html:/usr/share/nginx/html"
      - "/home/nginx/conf:/etc/nginx"

image,指定镜像;

ports,指定映射端口;

volumes,数据卷所挂载路径设置;

 

version: '3'

services:
  web:
    build: ./syztoo
version: '3'

services:
  web:
    build: 
      context:/home/syztoo
      dockerfile:Dockerfile-web

build,直接指定Dockerfile文件所在目录,也可以配合context、dockerfile指令,指定Dockerfile文件位置。每个服务中必须包含基础镜像,可通过image指令指定,也可通过build结合Dockerfile构建。

 

 

version: "3"

services:
  mysql:
    image:mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
    secrets:
      - db_root_password
      - my_other_secret
    networks:
      - some-network

secrets:
  my_secret:
    file: ./my_secret.txt
  my_other_secret:
    external: true
networks:
  some-network:

networks,指定网络;

environment,直接指定环境变量;也可通过env_file指向环境变量文件指定;

secret,存储敏感数据,比如数据库密码;

 

 

其他指定

expose,暴露服务端口,但不映射到主机,只被连接的服务访问;

labels,为容器添加元数据信息;

depends_on,指定依赖关系,关系容器的启动顺序;

deploy,configs 配合 docker swarm 使用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值