Docker Compose容器编排

Docker Compose容器编排,第1张

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相同,但端口不能低于60volumes挂载宿主机路径或命令卷restart重启策略,默认no,always,no-failure,unless-stopedhostname容器主机名         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中有很大用处。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5717250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存