Docker Compose容器编排工具

什么是Docker Compose

  • Docker Compose的前身是Fig,它是一个定义及运行多个Docker容器的工具
  • 使用Docker Compose不再需要使用ShellI脚本来启动容器
  • Docker Compose非常适合组合使用多个容器进行开发的场景
  • Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置

Compose 使用的三个步骤

  • 使用 Dockerfile 定义应用程序的环境。

  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

Docker Compose容器编排

1、YAML是一种标记语言很直观的数据序列化格式
2、文件格式及编写注意事项

  • 不支持制表符tab键缩进,需要使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如冒号、逗号、横杆
  • 用#号注释
  • 如果包含特殊字符用单引号引起来
  • 布尔值必须用引号括起来

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容器主机名

Docker Compose常用命令

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

Compose基本使用格式

docker-compose   [options]   [COMMAND]  [ARGS.....]
--verbose输出更多调试信息
--version打印版本并退出
-f, --file FILE使用特定的compose模板文件,默认为docker-compose.yml
-p,--project-name NAME指定项目名称,默认使用目录名称

使用Docker Compose 创建nginx环境

1、创建一个compose_nginx

[root@docker ~]# mkdir compose_nginx
[root@docker ~]# cd compose_nginx/

2、上传docker-compose数据包

[root@docker compose_nginx]# ll
总用量 10616
-rw-r--r-- 1 root root 10867152 1130 11:42 docker-compose

3、增加权限

[root@docker compose_nginx]# chmod +x docker-compose

4、移动docker-compose 到/usr/bin/目录下

[root@docker compose_nginx]# mv docker-compose /usr/bin/

5、创建docker-compose.yml文件

[root@docker compose_nginx]# vim docker-compose.yml
version: '3'
services:
  nginx:
   hostname: nginx
   build:
    context: ./nginx
    dockerfile: Dockerfile
   ports:
    - 1216:80
    - 1217:443
   networks:
    - cluster
   volumes:
     - ./wwwroot:/usr/local/nginx/html
networks:
 cluster:
#hostname: 容器主机名称
#context: 创建容器所用文件的存放路径
#dockerfile: 创建容器文件名称
#ports:映射端口
#networks:指定网络
#cluster:网络名称
#volumes:
#- ./wwwroot:/usr/local/nginx/html:宿主目录挂载到容器目录下

6、创建nginx目录

[root@docker compose_nginx]# mkdir nginx
[root@docker compose_nginx]# cd nginx/

7、创建Dockerfile文件

[root@docker nginx]# vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <wu>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#创建一下程序用户
RUN useradd -M -s /sbin/nologin nginx
#下载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
#指定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"]

8、创建run.sh文件

[root@docker nginx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

9、使用docker-compose创建nginx环境

[root@docker ~]# docker-compose -f compose_nginx/docker-compose.yml up -d

10、查看docker镜像信息

[root@docker ~]# docker images 
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx   latest              3448bfbab72f        6 seconds ago       537MB
centos                7                   8652b9f0cb4c        2 weeks ago         204MB

11、查看容器信息

[root@docker ~]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                                 NAMES
6a969ae92ece        compose_nginx_nginx   "/run.sh"           51 seconds ago      Up 50 seconds       443/tcp, 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

12、设置一个访问主页

[root@docker ~]# echo "<h1>This is nginx</h1>" > /root/compose_nginx/wwwroot/index.html

13、测试访问
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页