Docker进阶-Docker Compose

官方文档:https://docs.docker.com/compose/

简介

Docker
DockerFile -> bulid(形成镜像)-> run
Docker Compose 就可以轻松搞笑的来管理这些容器。以及定义和运行容器

官方介绍

定义运行多个容器
YAML file 配置文件
single command 简单命令 有哪些?

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.

所有环境都可以使用 Docker Compose production、development、staging、testing
Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases.

三步骤

Using Compose is basically a three-step process:
1.Define your app’s environment with a Dockerfile so it can be reproduced anywhere.
。Dockerfile保证我们的项目在任何地方可以运行
2.Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
。services 什么是服务?
。docker-compose.yml 这个文件如何写?
3.Run docker compose up and the Docker compose command starts and runs your entire app. You can alternatively run docker-compose up using the docker-compose binary.
。启动项目
作用:批量容器编排。

个人理解

Compose 是Docker官方开源的项目,需要进行安装。
Dockerfile 让程序在任何地方运行。 web redis mysql nginx 。。。。 多个容器。
Compose

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose up 轻松启动100容器服务
Compose重要的概念:
。服务services:容器,应用 (web,redis,mysql。。。。)
。项目project:一组关连的容器。 如开源博客 (web + mysql。。。。)


安装

下载

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose下面地址下载更快些curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

Docker-Compose学习笔记_官网

授权

sudo chmod +x /usr/local/bin/docker-compose或者sudo chmod 777 /usr/local/bin/docker-compose

Docker-Compose学习笔记_官网_02


体验

官网地址:https://docs.docker.com/compose/gettingstarted/
python应用 计数器 redis

1. 应用 app.py
2. Dockerfile 应用打包为镜像
3. docker-compose.yml文件 (定义整个服务,需要的环境,web,redis) 完整的上线服务
4. 启动compose项目 (docker-compose up)

流程:

1. 创建网络2. 执行docker-compose.yml3. 启动服务

    执行示列:
    Creating network "composetest_default" with the default driver
    Creating composetest_web_1 ...
    Creating composetest_redis_1 ...
    Creating composetest_web_1
    Creating composetest_redis_1 ... done
    Attaching to composetest_web_1, composetest_redis_1

Docker-Compose学习笔记_官网_03
文件名:composetest
服务名:

    version: "3.9"
    services:
      web:
        build: .
        ports:
          - "5000:5000"
      redis:
        image: "redis:alpine"

停止

docker-compose down 或者 ctrl + c
docker-compose通过编写docker-compose yml文件 可以通过compose一键启动或者停止!
Docker-Compose学习笔记_docker_04
将会删除启动的容器以及自动建的网络

其余命令

如果您想在后台运行您的服务,您可以将-d标志(用于“分离”模式)传递给docker-compose up并用于docker-compose ps查看当前正在运行的内容:

docker-compose up -d
docker-compose ps
5000/tcp
该docker-compose run命令允许您为您的服务运行一次性命令。例如,要查看web服务可用的环境变量 :

docker-compose run web env
请参阅docker-compose —help以查看其他可用命令。您还可以为bash 和 zsh shell安装命令完成,这也会显示可用的命令。

如果您使用 Compose 启动 Compose docker-compose up -d,请在完成服务后停止服务:

docker-compose stop
您可以使用以下down 命令关闭所有内容,完全删除容器。传递—volumes给 Redis 容器使用的数据卷:

docker-compose down —volumes
至此,您已经了解了 Compose 工作原理的基础知识。


小结

1. docker镜像 run -> 容器
2. DockerFile 构建镜像  (打包)
3. docker-compose 启动项目  (编排、多个微服务/环境)
4. docker网络

yaml编写规则

官方配置文档:https://docs.docker.com/compose/compose-file/compose-file-v3/#depends_on

docker-compose.yml 核心所在

#三层
version: "3.9" #版本
services: #服务
  web:
   images:
   bulid:
   ports:
   network:
   ...
  redis:
   ...
  mysql:
   ...
#第三层 其他配置 网络、数据卷、全局配置
networks:
  frontend:
  backend:
volumes:
  db-data:
configs:

启动顺序

version: "3.9"
services:
  web: # 3
    build: .
    depends_on:
      - db
      - redis
  redis: # 2
    image: redis
  db: # 1
    image: postgres

官网练习 compose一键部署wordpress
https://docs.docker.com/samples/wordpress/


实战演练

    编写一个springboot项目  引入web  redis依赖
    编写dockerfile文件构建镜像
    编写docker-compose.yml文件
    放到服务器 创建一个文件夹  在其下docker-compose up一键进行启动

Docker-Compose学习笔记_redis_05

Docker-Compose学习笔记_Docker_06

如果项目需要重新部署打包重构镜像
docker-compose up - -build