目录

  • 一、Docker Compose容器编排
  • 1.1 Docker Compose概念及作用
  • 1.2 YML文件介绍
  • 1.2.1 文件格式以及编写注意事项
  • 1.3 compose使用的三个步骤
  • 1.4 Docker Compose配置常用字段
  • 1.5 Docker Compose常用命令
  • 1.6 使用Docker-Compose创建nginx
  • 1.6.1 环境准备
  • 1.6.2 使用Dockerfile定义应用程序的环境
  • 1.6.3 运行脚本
  • 1.6.4 docker-compose.yml文件编写
  • 1.6.5 查看
  • 1.6.6 测试


一、Docker Compose容器编排

1.1 Docker Compose概念及作用

Docker Compose 的前身是Fig,它是一个定义及运行多个容器的工具
使用Docker Compose不再需要使用shell脚本来启动容器
通过Docker Compose可以使用YML文件来配置应用程序所需要的的所有服务
Docker Compose非常适合组合使用多个容器进行开发的场景

1.2 YML文件介绍

YAML是一种标记语言很直观的数据序列化格式,非常适合用来表达或者编辑数据结构、各种配置文件、文件大纲等,例如:许多电子邮件标题格式和YAML非常接近。

1.2.1 文件格式以及编写注意事项

1、不支持制表符tab键缩进,需要使用空格缩进,使用缩进表示层级关系
2、通常开头缩进2个空格,缩进的空格数不重要,只要相同层级的元素左对齐即可
3、字符后缩进一个空格,如冒号、逗号、横杆
4、用#号注释
5、如果包含特殊字符用单引号引起来
6、布尔值必须用引号括起来

1.3 compose使用的三个步骤

1、使用Dockerfile定义应用程序的环境
2、使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行
3、最后执行docker-compose up命令来启动并运行整个应用程序

1.4 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.5 Docker Compose常用命令

基本的命令格式:docker-compose [选项] [命令] [参数]
docker-compose选项:

–verbose

输出更多调试信息

–version

打印版本并退出

-f、–file FILE

使用特定的compose末班文件,默认为docker-compose.yml

-p、–project-name NAME

指定项目名称,默认使用目录名称

字段

解释

build

重新构建服务

ps

列出容器

up

创建和启动容器

exec

在容器里面执行命令

scale

指定一个服务容器启动数量

top

显示容器进程

logs

查看容器输出

down

删除容器、网络、数据卷和镜像

stop/start/restart

停止/启动/重启服务

1.6 使用Docker-Compose创建nginx

1.6.1 环境准备

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
‘//在Linux上我们可以从GitHub上下载它的二进制包来使用,此命令是下载Docker Compose的当前稳定版本’

//将已下载好的包上传进来/usr/local/bin/
chmod +x /usr/local/bin/docker-compose

1.6.2 使用Dockerfile定义应用程序的环境

mkdir -p compose_nginx/nginx	//创建目录
cd compose_nginx/nginx
//上传nginx源码包
cat >> Dockerfile <<EOF
#基于基础镜像
FROM paigeeworld/centos7
#用户信息
MAINTAINER gao
#添加环境包
RUN rpm --rebuilddb && yum -y update
RUN rpm --rebuilddb && yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#下载nginx软件包
ADD nginx-1.15.9.tar.gz /usr/local/src
#指定工作目录
WORKDIR /usr/local/src/nginx-1.15.9
#编译安装
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
#指定http和https端口
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
EOF

1.6.3 运行脚本

cat >> run.sh <<EOF
#!/bin/bash
/usr/local/nginx/sbin/nginx
EOF

1.6.4 docker-compose.yml文件编写

注意事项
1、compose版本号、服务标识符必须顶格写
2、属性名与属性值以:(冒号加空格)分隔开
3、层级使用两个空格表示
4、服务属性使用-(空格空格-空格)表示

cat >> docker-compose.yml <<EOF
version: '3'		'//compose版本号'
services:			'//服务标识符'
  nginx:			'//子服务名'
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:			'//服务端口属性'
     - 1216:80
     - 1217:443
    networks:			'//网络服务属性'
     - L1
    volumes:			'//挂载一个目录或者一个已存在的数据卷容器'
     - ./wwwroot:/usr/local/nginx/html
networks:
  L1:
EOF

docker-compose -f docker-compose.yml up -d
//指定ocker-compose.yml文件来启动

1.6.5 查看

docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS                                         NAMES
bd6c1633a314        compose_nginx_nginx   "/run.sh"                33 minutes ago      Up 33 minutes               0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

1.6.6 测试

ls //查看
/wwwroot //有这个目录
echo “this is abc” >>wwwroot/index.html
浏览器访问20.0.0.19:1216