Docker三剑客之docker-compose

Docker Compose

介绍

​ Docker Compose是一个用于运行多个容器应用的编排工具,可以通过docker-compose将多个容器统一化管理。

​ 使用Docker Compose需要三步

​ 1、在Dockerfile中定义环境

​ 2、在docker-compose.yml中定义服务

​ 3、运行docker-compose up命令

安装compose
#官网地址,下载速度慢
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

国内下载地址
$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

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

$ docker-compose version
docker-compose version 1.26.2, build eefe0d31
docker-py version: 4.2.2
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
#表示安装成功
命令(以下命令均可适用docker)
#以下命令均为在当前目录下存在docker-compose.yaml文件,也可以使用docker-compose -f 指定使用yaml文件
$ docker-compose up -d     #后台启动docker-compose
$ docker-compose start     #启动容器,start命令会先检查docker-compose.yaml文件中的容器是否启动,所有多次start并不会报错
$ docker-compose stop      #停止容器
$ docker-compose pause     #暂停容器
$ docker-compose unpause   #取消暂停容器
$ docker-compose ps        #显示所有容器
$ docker-compose rm -s     #强制删除容器
$ docker-compose logs      #查看容器日志,该命令是将docker-compose启动的容器日志拼接,即可查看所有容器日志
$ docker-compose config -q #检查yaml文件语法是否正确,无法检查内容
测试

按照官网提示,进行浏览器计数测试,新建需要的compose文件夹 Dockerfile、docker-compose.yml文件,创建好后执行docker-compose up

1、会创建默认网络

version: '3.3'
services:
  web_nginx:
    image: nginx:latest
    ports:
      - 180:80
$ docker-compose up 
#会创建默认的网络,网络名称为 docker-compose文件所在文件名称_自定义网络名称(不写默认default)
#例如docker-compose.yaml在opt下 就会创建网络 opt_default
Creating network "opt_default" with the default driver
..........

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
8fc41f85498b        bridge              bridge              local
83857ef835cb        host                host                local
c61b545e760e        none                null                local
6335020114b5        opt_default         bridge              local

#而且创建自定义网络的时候,默认的网段都为172.*.*.*
$  docker inspect  opt_default
[
    {
        "Name": "opt_default",
      .....
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
 ]
....

2、使用自定义网络

version: '3.3'
networks:
  test-net:
    ipam:
      config:
      - subnet: 10.88.12.0/24
        gateway: 10.88.12.1

或者使用

docker network create --subnet 10.88.12.0/24 --gateway: 10.88.12.1 opt_test-net
version: "3.3"
services:
   mysql_test:
    image: ${local_registry}/mysql:5.7.39_sudy
    container_name: mysql_test
    #network_mode: bridge
    ports:
      - target: 3306
        published: 3306
        protocol: tcp
        mode: host
    volumes:
       - /opt/mysql/init/:/docker-entrypoint-initdb.d/
       - /opt/mysql/data/:/var/lib/mysql/
       - /opt/mysql/conf/:/etc/mysql/conf.d/
       - /opt/mysql/dump/:/home/dump/
       - /etc/localtime:/etc/localtime:ro
    environment:
       - MYSQL_ROOT_PASSWORD=test1234
       - INIT_SQL_FILE=init.sql
    restart: always
networks:
  default:
    external: #表示使用外部的名称为opt_test-net的网络
      name: 'opt_test-net'
$ docker-compose up -d
#创建自定义网络,名称为 docker-compose文件所在文件名称_定义网络名称(opt_test-net)
 ⠿ Network opt_test-net       Created                                                                                                              
 ⠿ Container opt-mysql_test-1  Started
 
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
8fc41f85498b        bridge              bridge              local
83857ef835cb        host                host                local
c61b545e760e        none                null                local
d7c1219ace98        opt_test-net        bridge              local

$  docker inspect opt_test-net
#此时网段和容器ip都会变成自定义的网段和ip
[
    ....
            "Config": [
                {
                    "Subnet": "10.88.12.0/24",
                    "Gateway": "10.88.12.1"
                }
            ]
        },
        ....
]

3、创建镜像

$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              2b43861d5a7f        2 hours ago         41.7MB
python              3.7-alpine          4fac8cece98e        33 hours ago        41.7MB

4、启动两个容器web、redis

$ cat docker-compose.yml 
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
yml文件规则

参数详解:https://docs.docker.com/compose/compose-file/

yml文件分3层
#版本
version: ""
#服务
services:
    web:  #服务名
       bulid: 
         coontext: ./aaa
       imgae: aaaa:v1    #当同时指定build和image标签时,compose 构建镜像时会把镜像命名为image后面的名称
    redis:
    ....
#其他配置
volumes:
networks:
configs:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值