Docker Compose-容器编排工具

一、Compose工具的由来

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

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

 

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

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

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

具体的使用方法会在项目部署中展示

字段   描述
builddockerfilecontext 指定Dockerfile文件名构建镜像上下文路径
image 指定镜像
command 执行命令,覆盖默认命令

container name

指定容器名称,由于容器名称是唯一的,如果指定自定义mingcheng

则无法scale

deploy 指定部署和运行服务向相关配置,只能在swarm模式使用
environment

添加环境变量

networks 加入网络
port 暴露容器端口,与-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
stop/start/restart                                 停止、启动、重启服务                                     

build  

重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器的启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像

二、项目部署

1、docker环境已提前部署好,前面博客有部署

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

3、部署docker-compose

 

可以在任何目录下使用compose命令
[root@node2 docker]# cp -p docker-compose /usr/local/bin/
[root@node2 bin]# docker-compose -v   #查看版本
docker-compose version 1.21.1, build 5a3f1a3

3.1、首先创建一个目录在配置相关内容

 

[root@node2 bin]# mkdir /root/compose_nginx
[root@node2 bin]# cd /root/compose_nginx/
 yum install -t tree
[root@node2 compose_nginx]# tree ./
./
├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.2.tar.gz
│   └── run.sh
└── wwwroot

1 directory, 5 files

3.2、创建nginx的Dockerfile文件

[root@node2 compose_nginx]# cd nginx
[root@node2 nginx]# ll
总用量 968
-rw-r--r--. 1 root root    506 11月 30 14:58 Dockerfile
-rw-r--r--. 1 root root 981687 11月 30 15:01 nginx-1.12.2.tar.gz
-rw-r--r--. 1 root root     40 11月 30 14:59 run.sh
FROM centos:7
MAINTAINER nginx
RUN yum -y update
RUN yum -y install gcc gcc-c++ make pcre-devel zlib-devel
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
RUN useradd -M -s /sbin/nologin nginx
ENV PATN /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"]
#!/bin/bash
/usr/local/nginx/sbin/nginx
~                            

3.3、创建docker-compose.yml

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

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

[root@node2 compose_nginx]# docker-compose -f docker-compose.yml up -d
compose_nginx_nginx_1 is up-to-date
[root@node2 compose_nginx]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
43daa92d21b2        compose_nginx_nginx   "/run.sh"           32 minutes ago      Up 27 minutes       0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

3.5、配置测试网页,执行时会自动创建wwwroot目录

[root@node2 compose_nginx]# ll
总用量 4
-rw-r--r--. 1 root root 237 11月 30 15:27 docker-compose.yml
drwxr-xr-x. 2 root root  65 11月 30 15:27 nginx
drwxr-xr-x. 2 root root  24 11月 30 15:53 wwwroot
[root@node2 compose_nginx]# cd wwwroot
[root@node2 wwwroot]# vi index.html 
<h1>this is web</h1>
~                     

 测试

 

 

 

  

 

  

  

  

  

 

 

posted @ 2020-11-30 17:06  孙天飞  阅读(215)  评论(0编辑  收藏  举报