栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker Compose容器编排

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker Compose容器编排

目录

Docker Compose概述

        compose特点

                单个主机上的多个隔离环境

                创建容器时保留卷数据

                仅重新创建已更改的容器

                变量和在环境之间移动组合

yml文件格式

        docker compose配置常用字段

        docker compose常用命令

Docker compose部署Nginx服务

总结


Docker Compose概述

根据官方文档,大概翻译了一些

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,可以使用 YAML 文件来配置应用程序的服务。然后,使用一个命令,可以从你的配置中创建并启动所有服务

Compose 适用于所有环境:生产、登台、开发、测试以及 CI 工作流程。

使用 Compose 基本上是一个三步过程:

    使用 a 定义您的应用程序的环境,Dockerfile以便可以在任何地方复制它。

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

    运行docker compose up,Docker compose 命令启动并运行整个应用程序。也可以docker-compose up使用 docker-compose 二进制文件运行。

Compose 具有用于管理应用程序整个生命周期的命令:

启动、停止和重建服务查看运行服务的状态流式传输正在运行的服务的日志输出在服务上运行一次性命令

        compose特点

Compose 使其有效的特点是:

单个主机上多个隔离环境创建容器时保留数据卷数据仅重新创建已更改的容器变量和环境之间移动组合

                单个主机上的多个隔离环境

Compose 使用项目名称将环境彼此隔离。您可以在几个不同的上下文中使用此项目名称:

在开发主机上,创建单个环境的多个副本,例如当您想要为项目的每个功能分支运行稳定副本时在 CI 服务器上,为了防止构建相互干扰,您可以将项目名称设置为唯一的构建号在共享主机或开发主机上,以防止可能使用相同服务名称的不同项目相互干扰

默认项目名称是项目目录的基本名称。您可以使用-p命令行选项或 COMPOSE_PROJECT_NAME环境变量设置自定义项目名称。

默认项目目录是 Compose 文件的基本目录。可以使用--project-directory命令行选项定义它的自定义值。

                创建容器时保留卷数据

Compose 会保留您的服务使用的所有卷。运行时docker-compose up ,如果它找到以前运行的任何容器,它会将卷从旧容器复制到新容器。此过程可确保您在卷中创建的任何数据都不会丢失。

                仅重新创建已更改的容器

Compose 缓存用于创建容器的配置。当您重新启动未更改的服务时,Compose 会重新使用现有容器。重复使用容器意味着您可以非常快速地更改您的环境。

                变量和在环境之间移动组合

Compose 支持 Compose 文件中的变量。您可以使用这些变量为不同的环境或不同的用户定制自己的组合。

可以使用该字段或通过创建多个 Compose 文件来扩展Compose 文件

yml文件格式

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

●不支持制表符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停止/启动/重启服务

Docker compose部署Nginx服务

下载compose

[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.21.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

创建一个测试目录

[root@localhost ~]# mkdir test

结构大体如下 

[root@localhost ~/test]# tree
.
└── compose_nginx
    ├── docker-compose.yml
    ├── nginx
    │   ├── Dockerfile
    │   └── nginx-1.15.9.tar.gz
    └── wwwroot
        └── index.html

3 directories, 4 files

编写yml文件

[root@localhost ~/test/compose_nginx]# cat docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1314:80
      - 2580:443
    networks:
      - cluster
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:

Dockerfile文件

[root@localhost ~/test/compose_nginx/nginx]# cat Dockerfile
FROM centos:7 as build
ADD nginx-1.15.9.tar.gz /mnt
WORKDIR /mnt/nginx-1.15.9
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &>/dev/null && 
      yum clean all && 
sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && 
       ./configure --prefix=/usr/local/nginx &>/dev/nuil && 
        make &>/dev/null && 
        make install &>/dev/null && 
        rm -rf /mnt/nginx-1.15.9
FROM centos:7
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;"]

index.html文件

[root@localhost ~/test/compose_nginx/wwwroot]# cat index.html
this is xiaobin first docker compose

运行

[root@localhost ~/test/compose_nginx]# docker-compose -f docker-compose.yml up -d
Building nginx
Step 1/9 : FROM centos:7 as build
 ---> eeb6ee3f44bd
Step 2/9 : ADD nginx-1.15.9.tar.gz /mnt
 ---> 250ae0c6dec2
Step 3/9 : WORKDIR /mnt/nginx-1.15.9
 ---> Running in 111652508c7f
Removing intermediate container 111652508c7f
 ---> 50c455161330
Step 4/9 : RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &>/dev/null &&       yum clean all                            && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc &&        ./configure --prefix=/usr/lo                           cal/nginx &>/dev/nuil &&         make &>/dev/null &&         make install &>/dev/null &&         rm -rf /mn                           t/nginx-1.15.9
 ---> Running in c78e0cd749c3
Loaded plugins: fastestmirror, ovl
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Removing intermediate container c78e0cd749c3
 ---> a7d34a938fe2
Step 5/9 : FROM centos:7
 ---> eeb6ee3f44bd
Step 6/9 : EXPOSE 80
 ---> Running in 452a82532ac7
Removing intermediate container 452a82532ac7
 ---> 58351b0aaeb6
Step 7/9 : VOLUME ["/usr/local/nginx/html"]
 ---> Running in 43ec47184966
Removing intermediate container 43ec47184966
 ---> 81786e63ec57
Step 8/9 : COPY --from=build /usr/local/nginx /usr/local/nginx
 ---> 5d31587f9dad
Step 9/9 : CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;"]
 ---> Running in f10c92bb8449
Removing intermediate container f10c92bb8449
 ---> 5cb6aef432c2
Successfully built 5cb6aef432c2
Successfully tagged compose_nginx_nginx:latest
WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must                            use `docker-compose build` or `docker-compose up --build`.
Creating compose_nginx_nginx_1 ... done

查看容器

测试 

[root@localhost ~/test/compose_nginx/wwwroot]# curl 192.168.37.107:1314
this is xiaobin first docker compose

 那么我们怎么知道哪些容器是docker-compose创建的

使用docker-compose ps命令

[root@localhost ~/test/compose_nginx]# docker-compose ps
        Name                       Command               State                                   Ports
--------------------------------------------------------------------------------------------------------------------------------------
compose_nginx_nginx_1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:2580->443/tcp,:::2580->443/tcp,
                                                                 0.0.0.0:1314->80/tcp,:::1314->80/tcp

需要注意,必须在有yml目录下才能使用,不然会提示你找不到........

[root@localhost ~]# docker-compose ps
ERROR:
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

总结

       docker compose是docker的一个应用程序工具,通过YAML 文件来配置应用程序的服务

        注意yml书写格式,scale副本集在之后的Kubernetes中有很大用处。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号