乐趣区

关于docker:Dockerdockercompose-使用简介

是什么

Docker Compose 是一个容器编排的工具,通过编写一个简略的 yml 配置文件来定义应用程序所须要的所有服务(如 web 利用的 lamp),而后通过一个简略的 docker-compose up 命令就能够标准化的创立所有容器并启动服务。

docker-compose.yml

一个简略的示例

version: '3' # 版本,有 1.x,2.x,3.x 跟 docker 版本有对应关系,配置也有些差别,用新版就好了
services:   # 定义一组服务
    web:    # 第一个服务
        hostname: webapp # 给容器起个名字
        build: # 指定镜像起源,这是其中一种,应用 dockerfile 构建
            context: ../ # docker run 运行的上下文门路
            dockerfile: build/Dockerfile # dockerfile 文件地位,留神跟上一个配置对应,不指定默认是当前目录的 Dockerfile
        networks: # 指定网络
            - dev-local-network # 网络名称,须要先定义
        depends_on: # 指定依赖服务,服务会在依赖服务启动后再开启
            - mysql # 服务名称
        ports: # 端口映射
            - "80:80" # 宿主机端口到容器端口的映射
        volumes: # 宿主机的数据卷或文件挂载到容器里
            - ../:/var/www/html # 宿主机门路:容器里的门路
        environment: # 环境变量,有两种形式,间接键值对或者 env_file
            OMS_DB_HOST: ${OMS_DB_HOST} # ${} 示意取配置文件里的值,默认文件是以后默认的.env,也能够 --env-file 指定门路
        command: ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf", "--nodaemon"] # 这是容器启动后的第一个命令,留神是要在前台的命令,不能执行完就完结了,不然容器启动就敞开了
    mysql: # 第二个服务了
        image: "mysql:5.7" # 指定镜像源的第二种形式,间接指定 image,这是是官网的 mysql 5.7 版本
networks: # 定义网络
    dev-local-network: # 网络名称,下面用到的网络就是这里定义的 

启动

docker-compose -f .\build\docker-compose.yml --env-file .\build\.env up -d

-f 指定 yml 文件门路,不指定默认为当前目录下的 docker-compose.yml 文件
–env-file 指定变量配置门路,就是下面说到的 ${}, 默认当前目录的 .env 文件,没有也没关系,就没有配置
-d 示意后盾启动

进行

docker-compose -f .\build\docker-compose.yml stop

服务进行,然而创立的容器依然保留,下次能够持续应用

销毁

docker-compose -f .\build\docker-compose.yml down

服务进行后,一并把容器也删除掉

volume 权限

volume 挂载的目录默认与缩主机属主和权限也雷同,缩主机中属主是 root,那在容器中对应的也是 root,然而并不是残缺的缩主机的 root 权限,如果要以特权模式运行,能够指定 –privileged 参数(慎用)。

退出移动版