一、Docker Compose介绍

1.Docker Compose的前身是Fig,它是一个定义及运行多个Docker容器的工具

2.使用Docker Compose不再需要使用shell脚本来启动容器

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

4.Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置

5.Consul的特性

  5.1支持健康检查,允许存储键值对

  5.2基于Golong语言,可移植性强

  5.3支持ACL访问控制

6.与Docker等轻量级容器可无缝配合

 

二、Docker网络通信

1.Docker单机网络拓扑图

docker nginx upstream模块 docker compose nginx_Docker

2.端口映射

  2.1端口映射机制将容器内的服务提供给外部网络访问

  2.2可随机或指定映射端口范围

  2.3容器互联

    2.3.1在源容器和接收容器间建立一条网络通信隧道

    2.3.2使用docker run命令--link选项实现容器间互联通信

三、Docker Compose容器编排

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

2.文件格式及编写注意事项

  2.1不支持制表符tab键缩进,需要使用空格缩进

  2.2通常开头缩进2个空格

  2.3字符后缩进1个空格,如冒号、逗号、横杆

  2.4用#号注释

  2.5如果包含特殊字符用单引号引起来

  2.6布尔值必须用引号引起来

 

四、Docker Compose配置常用字段

字段

描述

build dockerfile context

指定Dockerfile文件名构建镜像上下文路径

image

指定镜像

command

执行命令,覆盖默认命令

container name

指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale

deploy

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

environment

添加环境变量

ports

暴露容器端口,与-p相同,但端口不能低于60

volumes

挂载宿主机路径或命令卷

restart

重启策略,默认no,always, no-failure,unless-stoped

hostname

容器主机名

networks

加入网络

五、Docker Compose 常用命令

字段

描述

build

重新构建服务

ps

列出容器

up

创建和启动容器

exec

在容器里面执行命令

scale

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

top

显示容器进程

logs

查看容器输出

down

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

stop/start/restart

停止/启动/重启服务

六、Compose 命令说明

1.基本的使用格式

docker-compose [options] [COMMAND] [ARGS...]

2.docker-compose 选项

  2.1--verbose 输出更多调试信息

  2.2--version 打印版本并退出

  2.3-f,--file FILE 使用特定的 compose 模板文件,默认为docker-compose.yml

  2.4-p,--project-name NAME 指定项目名称,默认使用目录名称

 

七、项目实战

Docker Compose创建nginx

[root@server3 ~]# cp -p docker-compose /usr/local/bin
[root@server3 ~]# chmod +x /usr/local/bin/docker-compose

[root@server3 ~]# mkdir /root/compose_nginx
[root@server3 compose_nginx]# vim /root/compose_nginx/docker-compose.yml
version: '3'
services:
  nginx:
  hostname: nginx
  build:
    context: ./nginx
    dockerfile: Dockerfile
  ports:
   - 1216:80
   - 1218:443
  networks:
   - ycx
  volumes:
   - ./wwwroot:/usr/local/nginx/html
networks:
  ycx:
[root@server3 compose_nginx]# mkdir nginx
[root@server3 compose_nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx <ycx>
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
WORKDIR 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"]
[root@server3 compose_nginx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
[root@server3 compose_nginx]# tree ./
./
├── docker-compose.yml
└── nginx
    ├── Dockerfile
    ├── nginx-1.12.2.tar.gz
    └── run.sh
[root@server3 compose_nginx]# docker-compose -f docker-compose.yml up -d

[root@server3 compose_nginx]# ll
总用量 4
-rw-r--r--. 1 root root 251 11月 30 17:05 docker-compose.yml
drwxr-xr-x. 2 root root  65 11月 30 17:06 nginx
drwxr-xr-x. 2 root root   6 11月 30 17:24 wwwroot
#结束之后会自动创建一个wwwroot文件,nginx官网就是在这里面编辑
[root@server3 compose_nginx]# cd wwwroot/
[root@server3 wwwroot]# vi index.html
<h1>ycx</h1>
#可以通过实机来访问查看效果,因为在配置文件中指定了nginx主页地址,所以直接访问会显示403,必须配置一个主页

docker nginx upstream模块 docker compose nginx_nginx_02