ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker-Compose编排与部署

2021-10-26 21:31:18  阅读:197  来源: 互联网

标签:容器 compose lnmp nginx 编排 Compose mysql Docker docker


Docker Compose (多个容器编排)

是一个定义及运行多个docker容器的工具,可以使用YAML文件来配置应用,使用命令,可以创建并启动配置中的所有服务。docker compose会通过解析容器之间的依赖关系,按先后顺序启动容器。
适应所有环境过程

  • 使用Dockerfile定义应用程序的环境,可以在任何地方复制
  • docker-compose.yml中定义组成应用程序服务,可以在任何环境中运行
  • 运行docker-compose开始运行应用程序

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

Docker compose优点
能将多个繁琐的docker命令步奏,简化成一个命令

compose原理

首先docker-compose up -d指令启动,一个docker-compose.yml定义了一个docker -compose的project(一个项目),compose会传到project参数由project模块处理
其次若果宿主机有与应用对应的容器,docker-compose将进行逻辑判断,可以指定直接启动已有容器,docker-compose会执行server模块的容器重启,否则直接启动已有容器。
最后就是在container模块执行启动时,模块会调用docker-py客户端执行post请求

compose案例

#首先安装docker-compose
/usr/bin/docker-compose  #一般默认在这里面
#如果没有下载到这里面
[root@localhost ~]# chmod +x /usr/bin/docker-compose   #给他可执行权限
[root@localhost ~]# docker-compose version    #查看版本号就可以使用了
docker-compose version 1.21.1, build 5a3f1a3
docker-py version: 3.3.0
CPython version: 3.6.5
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

docker-compose用法
格式:docker-compose [-f...] [options] [COMMAND(命令)] [ARGS(命令参数)...]
docker-compose常用选项-f

  • --verbose:输出更多调试信息
  • --version:打印版本信息
  • -f,--file FILE 使用特定的compose模板文件,默认为docker-compose.yml
  • -p,--project-name NAME 指定项目名称,默认使用目录名称

docker-compose常用命令:

  • –build 在启动容器前构建服务镜像
  • kill 杀掉容器
  • logs 显示容器输出内容
  • port 打印绑定的开放端口
  • ps 显示容器
  • pull 拉去服务镜像
  • restart 重启服务
  • rm 删除停止的容器
  • run 运行一个一次性命令
  • scale 设置服务的容器数目
  • exec 切换到容器内
  • start 开启服务
  • stop 停止服务
  • up 创建并启动服务

docker-compose中的yml文件
YAML全称YAML Ain't Markup Language表示“YAML不是一种标记语言”的缩写,为了强调YAML语言以数据作为中心,不是以标记语言为重点,使用返璞词重新命名。
YAML是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

YAML文件注意事项

  • 通常开头缩进两个空格(不能使用tab键)
  • 字符的后面缩进一个空格,冒号,逗号,横杆等。
  • 支持#注释
  • 允许加入空格
docker-comopse.yml文件lnmp
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
    networks:
      - lnmp
    volumes:
      - ./wwwroot:/usr/local/nginx/html

  php:
    hostname: php
    build:
      context: ./php
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    networks:
      - lnmp
    volumes:
      - ./wwwroot:/usr/local/nginx/html

  mysql:
    hostname: mysql
    image: mysql:5.6
    ports:
      - 3306:3306
    networks:
      - lnmp
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/data:/var/lib/mysql
    command: --character-set-server=utf8
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: user123

networks:
  lnmp:

docker-compose中YAML常用字段

  • images用来指定服务的镜像名称或镜像ID,如果镜像在本地不存在,compose将会尝试去拉取这个镜像。
  • volumes指令用于设置数据卷挂载路径,数据卷挂载路径可以是一个目录或一个已经存在的数据卷容器,可以设置宿主机路径HOST:CONTAINER或加上访问模式HOST:CONTAINER:ro。使用ro表示对于容器来说数据卷是只读的,这样可以有效地保护宿主机的文件系统。
  • networks指令用于设置指定网络
  • command覆盖容器启动后默认执行的命令
  • ports暴露端口,与-p相同,但端口不能低于60
#使用docker编译lnmp
上传或者编译lnmp目录包,里面有各种配置,以及最主要的compose.yml,宿主机
[root@localhost ~]# cd compose_lnmp/
[root@localhost compose_lnmp]# ls
docker-compose.yml  mysql  nginx  php  wwwroot
[root@localhost compose_lnmp]# ls mysql/
conf  data
[root@localhost compose_lnmp]# ls nginx/
Dockerfile  nginx-1.12.1.tar.gz  nginx.conf  run.sh
[root@localhost compose_lnmp]# ls php/
Dockerfile  php-5.6.39.tar.gz  php.ini
[root@localhost compose_lnmp]# ls wwwroot/
index.html  index.php


#所有准备好后
docker-compose up -d  #在目录里,要识别到.yml文件
构建完成后
docker-compose ps  #查看状态
docker-compose restart  #三个容器重启(也就是说一下管理三个容器)
此时就可以查看端口,访问页面了


标签:容器,compose,lnmp,nginx,编排,Compose,mysql,Docker,docker
来源: https://www.cnblogs.com/wml3030/p/15465052.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有