构建部署_docker-compose常用命令

构建部署_docker-compose常用命令

前言

使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,docker-compose

Dockerfile可以让用户管理一个单独的应用容器,而docker-compose 则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)

例如一个web服务再加上后端的数据库服务容器等。

简介

  • docker-compost基础概念
    docker-compose项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排。
    docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)
    docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。
    一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
    一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。
    docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。
  • 为什么要使用docker-compose
    使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,例如要实现一个web项目,除了web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
    compose允许用户通过一个单独docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)
    docker-compose项目由pypthon编写,调用docker服务提供的API来对容器进行管理,因此, 只要所操作的平台支持docker-API,就可以在其上利用conpose来进行编排管理。
    简单来说:就是来管理多个容器的,定义启动顺序的,合理编排,方便管理。

docker-compose 常用命令

运行这些命令需要结合docker-compose一起使用。

且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。

powershell 复制代码
docker-compose build #构建服务
docker-compose ps #列出容器
docker-compose up #创建和启动容器
docker-compose exec #在容器里面执行命令
docker-compose scale #指定一个服务容器启动数量
docker-compose top #显示正在运行的容器进程
docker-compose logs #查看服务容器的输出
docker-compose stop/start/restart #停止/启动/重启服务

docker-compose安装

docker-compose是docker的独立产品,因此需要安装docker之后再单独安装docker compose

powershell 复制代码
#下载docker-compose文件
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#将文件复制到/usr/local/bin环境变量下面
mv docker-compose /usr/local/bin
#给他一个执行权限
chmod +x /usr/local/bin/docker-compose

编写配置文件docker-compose.yml文件

powershell 复制代码
version: '3'   #定义编排版本,共3版(1,2,3),1被淘汰,2的话只能单机编排,3的话即可以实现单机编排,也可以实现多机编排。
services:     #定义服务
  nginx:      #定义nginx服务
    hostname: nginx      #容器的主机名为nginx
    build:               #定义创建容器的过程 //如果有线程的镜像,直接写images: 
      context: ./nginx   #指定创建容器的目录位置(存储dockerfile的目录)
      dockerfile: Dockerfile   #指定Dockerfile文件
    ports:            #定义端口
      - 1234:80       #暴露端口
      - 4321:443      #暴露端口
    networks:                      #指定网络
      ydq:                         #指定网络名称
        ipv4_address: 172.100.0.10  #指定ip地址
    volumes:                                 #数据卷,挂载目录
      - ./wwwroot:/usr/local/nginx/html      #前面宿主机,后面容器
networks:               #自定义网络
  ydq:                  #自定义网络名称
   driver: bridge       #自定义网络模式
   ipam:                #网络管理器
     config:            #配置参数
       - subnet: 172.100.0.0/16    #配置子网网段 
//networks的参数ipam即网络管理,其下还有driver参数即指定使用的网络模式,以及config配置参数(比如配置子网等)       

生成镜像容器

powershell 复制代码
docker-compose -f docker-compose.yaml up -d  //-f调用文件。-d:开启守护进程
docker network ls
docker ps -a
docker-compose ps
相关推荐
君不见,青丝成雪11 小时前
网关整合验签
大数据·数据结构·docker·微服务·系统架构
oneslide15 小时前
Kubernetes环境部署Redis集群
redis·容器·kubernetes
企鹅侠客15 小时前
k8s之Headless浅谈
云原生·容器·kubernetes
SHIPKING39318 小时前
【Docker安装】Windows10专业版安装教程
运维·docker·容器
编程的一拳超人19 小时前
Docker核心概念、常用命令与实战指南
运维·docker·容器
编程的一拳超人19 小时前
Docker 核心命令速查表(精细分类版)
运维·docker·容器
风吹一夏v19 小时前
Docker 部署 GitLab 和 GitLab Runner 指南
docker·容器·gitlab
曦樂~19 小时前
【Docker】网络
docker·容器·php
刘晓倩19 小时前
Docker Desktop(Windows/Mac)零外网部署 Dify 极简指南
macos·docker·容器
Lucis__21 小时前
从基本用法到迭代器实现—list重难点突破
c++·容器·list