博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker Compose容器编排工具
阅读量:2134 次
发布时间:2019-04-30

本文共 2969 字,大约阅读时间需要 9 分钟。

目录

一、Docker Compose理论知识

1.1、Compose工具的由来

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

使用前面介绍的Dockerfile文件可以很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。

例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。

如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。

Compose有2个重要的概念:

  • 项目(Project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
  • 服务(Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

1.2、docker-compose.yml文件的常用字段

具体使用会在下面的docker-compose部署中展示:

字段 描述
build dockerfile context 指定Dockerfile文件名构建镜像上下文路径
image 指定镜像
command 执行命令,覆盖默认莫名
container name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
deploy 指定部署和运行服务相关配置,只能在Swarm模式使用
environment 添加环境变量
networks 加入网络
ports 暴露容器端口,与-p相同,但端口不能地域60
volumes 挂载宿主机路径或命令卷
restart 重启策略,默认no,always,no-failure,unless-stoped
hostname 容器主机名

1.3、Docker Compose常用命令

基本的使用格式

docker-compose [options] [COMMAND] [ARG...]##docker-compose选项:  --verbose输出更多调试信息  --version打印版本并退出  -f, -file FILE使用特定的compose模板文件,默认为docker-compose.yml  -p, --project-name NAME指定项目名称,默认使用目录名称##举例:docker-compose -f docker-compose.yml up -d
字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定—个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

1.4、YAML语言的使用规则

YAML是一种标记语言很直观的数据序列化格式

我们在编写docker compose时需要注意一下几点:

1.不支持tab制表符的缩进。

2.通常开头需要空两格。
3.字符需要缩进一个,如冒号、逗号、横杆。
4.可以用井号进行注释。
5.特殊字符需要用单引号引起来。
6.布尔值需要用用好引起来。

二、使用Docker-Compose创建容器

2.1、下载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

2.2、部署docker-compose

##可以在任何目录下使用compose命令[root@server1 ~]# mv docker-compose /usr/local/bin/[root@server1 ~]# chmod +x /usr/local/bin/docker-compose [root@server1 ~]# docker-compose -vdocker-compose version 1.21.1, build 5a3f1a3

1、首先创建一个总目录

mkdir docker-composecd docker-compose
mkdir nginx cd nginx/#拷贝nginx-1.12.0源码包到nginx/中vi run.sh#!/bin/bash/usr/local/nginx/sbin/nginxvi Dockerfile   FROM centos:7MAINTAINER this is nginxRUN yum -y updateRUN yum -y install gcc gcc-c++ make pcre-devel zlib-develRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.2.tar.gz /optWORKDIR /opt/nginx-1.12.2RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make && make installENV PATH /usr/local/nginx/sbin:$PATHEXPOSE 80EXPOSE 443RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.confADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"]
#创建yml文件vi docker-compose/docker-compose.ymlversion: '3'services:  nginx:    hostname: nginx    build:      context: ./nginx      dockerfile: Dockerfile    ports:      - 1912:80      - 1913:443    networks:      - bbs    volumes:      - ./test:/usr/local/nginx/htmlnetworks:  bbs:
创建 test 站点目录cd docker-composemkdir testcd test/vi index.html

This is web!!!

使用docker-compose命令执行,-f 指向文件

[root@server1 docker-compose]# docker-compose -f docker-compose.yml up -d

2.2、验证

在这里插入图片描述

打开浏览器访问nginx
在这里插入图片描述

转载地址:http://arkgf.baihongyu.com/

你可能感兴趣的文章
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
详解 TensorBoard-如何调参
查看>>
TensorFlow-11-策略网络
查看>>
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>
用 LSTM 做时间序列预测的一个小例子
查看>>
用 LSTM 来做一个分类小问题
查看>>
详解 LSTM
查看>>