ICode9

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

Docker Compose容器编排工具

2020-12-02 20:58:28  阅读:179  来源: 互联网

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


目录

一、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 -v
docker-compose version 1.21.1, build 5a3f1a3

1、首先创建一个总目录

mkdir docker-compose
cd docker-compose
mkdir nginx 
cd nginx/
#拷贝nginx-1.12.0源码包到nginx/中

vi run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx



vi Dockerfile   

FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install gcc gcc-c++ make pcre-devel zlib-devel
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /opt
WORKDIR /opt/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

#创建yml文件
vi docker-compose/docker-compose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1912:80
      - 1913:443
    networks:
      - bbs
    volumes:
      - ./test:/usr/local/nginx/html
networks:
  bbs:

创建 test 站点目录
cd docker-compose
mkdir test
cd test/

vi index.html
<h1>This is web!!!</h1>

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

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

2.2、验证

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

标签:容器,compose,nginx,编排,Compose,Docker,docker
来源: https://blog.csdn.net/huhaiyangFIVE/article/details/110448587

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

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

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

ICode9版权所有