docker-compose的部署

目录

一、compose的概述

1.1 yaml的概述

1.2 yaml的数据结构

1.2.1 docker composeyml文件的常用手段

1.3 docker compose

1.4 yml文件编写

 二、部署compose

2.1 下载docker-compose安装包

 2.2 部署docker-compose

2.3 部署docker-compose

2.4 开启验证

 三、compose编排安装tomcat容器

总结


一、compose的概述

compose是docker官网开发的,负责实现对docker容器集群的快速编排。

docker-compose是基于docker的编排工具,使容器的操作能够批量的,可视的执行,是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,当在宿主机启动较多的容器时候,
如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用 dockerd的单机编排工具 docker-compose。

  • compose是一个用于定义及允许多个Docker容器的工具,主要是通过一个YAML文件进行服务配置

  • 使用Docker Compose不再需要使用Shell脚本来启动容器

  • Docker Compose非常适合组合使用多个容器进行开发的场景

Compose有2个重要的概念:

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

使用Compose 基本上分为三步:

1. Dockerfile      定义应用的运行环境
2. docker-compose.yml 定义组成应用的各服务
3. docker-compose up 启动整个应用

1.1 yaml的概述

yaml语言是方便人读写,它的实质就是通用的数据串行化格式

它的基本语法规则如下:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

1.2 yaml的数据结构

  • 对象,键值对的集合
  • 数组,一组按次序排列的值,又称序列
  • 纯量,单个的,不可再分的值

1.2.1 docker compose.yml文件的常用手段

                字段                                                         描述
build  docker   filecontext    指定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 -h                           # 查看帮助
docker-compose up                           # 创建并运行所有容器
docker-compose up -d                        # 创建并后台运行所有容器
docker-compose ps                           # 显示所用容器信息
docker-compose -f docker-compose.yml up -d  # 指定模板
docker-compose down                         # 停止并删除容器、网络、卷、镜像。
docker-compose rm                           # 删除容器
docker-compose logs                         # 查看容器输出日志
docker-compose pull                         # 拉取依赖镜像
dokcer-compose config                       # 检查配置
dokcer-compose config -q                    # 验证yaml配置文件是否正确,有问题才有输出
docker-compose pause                        # 暂停容器
docker-compose unpause                      # 恢复暂停
docker-compose restart                      # 重启服务
docker-compose start                        # 启动服务
docker-compose stop                         # 停止服务

1.4 yml文件编写

模板文件是使用 Docker Compose 的核心,涉及到的指令关键字也比较多。默认的模板文件名称为 docker-compose.yml ,格式为YAML 格式。一个 docker-compose.yml 文件可以分为三层:

#第一层 版本号
version: "3"  #代表使用docker-compose项目的版本号
#第二层:services 服务配置
services:
  web:
    build: .
    ports:  #宿主机和容器的端口映射
      - "5000:5000"
    volumes:
      - .:/code
  redis:
     image: "redis:alpine"
# 第三层 其他配置 网络、卷、全局规划

 

 二、部署compose

2.1 下载docker-compose安装包

从github上下载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命令
cp -p docker-compose /usr/local/bin
chmod +x docker-compose
[root@localhost /]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3

2.3 部署docker-compose

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

 首先创建一个总的目录

mkdir /root/compose_nginx
cd /root/compose_nginx
 
yum install -t tree
 

 添加docker-compose.yml

[root@server1 compose_nginx]# vi docker-compose.yml 
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - zz
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:

  zz:
 

 

 

 在nginx目录下添加配置文件

[root@server1 compose_nginx]# cd nginx/
[root@server1 nginx]# cat Dockerfile 

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

 

在网页上设置

[root@localhost compose_nginx]# ls
docker-compose.yml  nginx  wwwroot
 
echo "hello world" > index.html

 

 

2.4 开启验证

 使用compose去安装运行nginx容器

docker-compose -f docker-compose.yml up -d

 

 

 

 

 三、compose编排安装tomcat容器

cd /opt
mkdir compose-tomcat
cd compose-tomcat
mkdir tomcat
cd tomcat
==拖入安装包apache-tomcat-9.0.16.tar.gz 、jdk-8u91-linux-x64.tar.gz==
 
vim Dockerfile
FROM centos:7
 
ADD apache-tomcat-9.0.16.tar.gz /usr/local
ADD jdk-8u91-linux-x64.tar.gz /usr/local
 
WORKDIR /usr/local
 
RUN mv apache-tomcat-9.0.16 tomcat
RUN mv jdk1.8.0_91 java
 
ENV JAVA_HOME /usr/local/java
ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH
 
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
 
====>:wq
 
cd ..
vim tomcat-compose.yml
 
version: '3'
services:
 tomcat:
  hostname: tomcat
  build :
   context: ./tomcat
   dockerfile: Dockerfile
  ports:
   - 7788:8080
  networks:
   - cluster
networks:
 cluster:
 
====>:wq
 
docker-compose -f tomcat-compose.yml up -d
 
==真机访问http://IP:7788==

 

 

总结

 

docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。

其它大部分指令都跟 docker run 中的类似。

如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。 

使用Compose 基本上分为三步:

Dockerfile 定义应用的运行环境
docker-compose.yml 定义组成应用的各服务
docker-compose up 启动整个应用

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值