• Docker-compose


    目录

    一、概述

    二、YAML文件的格式要求

    三、Docker compose配置常用字段

    四、Docker compose常用命令(yaml文件中的参数)

    五、安装Docker compose

    1、下载

    2、 创建“.yaml”文件

    3、创建Dockerfile文件

    4、制作镜像

    5、和下篇博客一起综合应用


    一、概述

    Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说:弄个脚本就搞定啦;要的就是这个思路,Docker提供了一个叫Docker Compose的工具。

    Docker Compose 是一个用于定义和运行多个容器服务的 Docker 应用程序工具;搭配使用 YAML 文件来配置应用程序服务,然后运行Docker Compose命令,一键启动所有容器服务

    二、YAML文件的格式要求

    ①、层级分明:使用首部空格代表层级关系

    ②、使用键值对key-value来表示参数,可以是一个key-value或者key-values

    ③、使用#号代表注释

    ④、不知道Tab制表符

    ⑤、“-”、“:”后面的valuesu需要空一格

    ⑥、一个yaml文件中,可以定义多i个资源模块

    三、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常用命令(yaml文件中的参数)

    字段描述
    build重新构建服务
    ps列出容器
    exec

    在容器里面执行命令

    scale指定一个服务容器的启动数量
    top显示容器进程
    logs查看容器输出
    down删除容器、网络、数据卷和镜像
    up创建和启动容器
    stop/start/restart停止/启动/重启网络

    五、安装Docker compose

    1、下载

    ### 下载

    [root@zwb_docker ~]# curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` >/usr/local/bin/docker-compose

    ###  给与执行权限

    [root@zwb_docker docker_compose]# cd /usr/local/bin/
    [root@zwb_docker bin]# chmod +x docker-compose 
    [root@zwb_docker bin]# ll
    总用量 8092
    -rw-r--r-- 1 root root       9 10月 22 01:00 docker
    -rwxr-xr-x 1 root root 8278112 10月 22 01:06 docker-compose

    [root@zwb_docker bin]# yum -y install tree.x86_64   ## 安装一个tree的小工具

    2、 创建“.yaml”文件

    1. [root@zwb_docker bin]# cd /
    2. [root@zwb_docker /]# mkdir docker_compose
    3. [root@zwb_docker /]# cd docker_compose/
    4. [root@zwb_docker docker_compose]# vim docker-compose.yaml
    5. version: '3'
    6. services:
    7. nginx:
    8. hostname: nginx
    9. build:
    10. context: ./nginx
    11. dockerfile: Dockerfile
    12. ports :
    13. - 1100:80
    14. - 1111:443
    15. networks:
    16. - mynet
    17. volumes:
    18. - ./wwwroot/:/usr/local/nginx/html
    19. networks:
    20. mynet:

     

    3、创建Dockerfile文件

    1. [root@zwb_docker docker_compose]# mkdir nginx
    2. [root@zwb_docker docker_compose]# cd nginx/
    3. [root@zwb_docker nginx]# vim Dockerfile
    4. FROM centos:7 as build
    5. ADD nginx-1.15.9.tar.gz /mnt
    6. WORKDIR /mnt/nginx-1.15.9
    7. RUN yum -y install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
    8. yum clean all &&\
    9. sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
    10. ./configure --prefix=/usr/local/nginx &> /dev/null && \
    11. make &>/dev/null && \
    12. make install &>/dev/null && \
    13. rm -fr /mnt/nginx-1.15.9
    14. FROM centos:7
    15. EXPOSE 80
    16. VOLUME ["/usr/local/nginx/html"]
    17. COPY --from=build /usr/local/nginx /usr/local/nginx
    18. CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off"]
    19. [root@zwb_docker nginx]# rz -E
    20. [root@zwb_docker docker_compose]# tree ./
    21. ./
    22. ├── docker-compose.yaml ## 创建模板脚本
    23. └── nginx
    24. ├── Dockerfile ## 创建容器脚本
    25. └── nginx-1.15.9.tar.gz ## 复制源码包

    4、制作镜像

    1. [root@zwb_docker docker_compose]# docker-compose -f docker-compose.yaml up -d
    2. Building nginx
    3. Step 1/9 : FROM centos:7 as build
    4. ---> eeb6ee3f44bd
    5. Step 2/9 : ADD nginx-1.15.9.tar.gz /mnt
    6. ---> Using cache
    7. ---> 149e658c2e1d
    8. Step 3/9 : WORKDIR /mnt/nginx-1.15.9
    9. ---> Using cache
    10. ---> a365b54d24c5
    11. Step 4/9 : RUN yum -y 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/null && make &>/dev/null && make install &>/dev/null && rm -rf /mnt/nginx-1.15.9
    12. ---> Running in 6153d1abc8e0
    13. Loaded plugins: fastestmirror, ovl
    14. Cleaning repos: base extras updates
    15. Cleaning up list of fastest mirrors
    16. Removing intermediate container 6153d1abc8e0
    17. ---> a4abe0a5169a
    18. Step 5/9 : FROM centos:7
    19. ---> eeb6ee3f44bd
    20. Step 6/9 : EXPOSE 80
    21. ---> Running in 9524a8a858fa
    22. Removing intermediate container 9524a8a858fa
    23. ---> c1953914c36b
    24. Step 7/9 : VOLUME ["/usr/local/nginx/html"]
    25. ---> Running in ccbd7c499894
    26. Removing intermediate container ccbd7c499894
    27. ---> fd9487e9f332
    28. Step 8/9 : COPY --from=build /usr/local/nginx /usr/local/nginx
    29. ---> fcb219e09061
    30. Step 9/9 : CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off"]
    31. ---> Running in d29d1f145a05
    32. Removing intermediate container d29d1f145a05
    33. ---> b300a241d07e
    34. Successfully built b300a241d07e
    35. Successfully tagged dockercompose_nginx:latest
    36. 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`.
    37. Creating dockercompose_nginx_1 ...
    38. Creating dockercompose_nginx_1 ... done

    5、和下篇博客一起综合应用

  • 相关阅读:
    红队视角下的防御体系突破之第一篇介绍、阶段、方法
    Leetcode-1106. 解析布尔表达式
    Qt在线安装教程(详细图文)
    TVS的原理及选型
    闲置APP小程序开发 你不喜欢的可能正是别人需要的
    LBA转换成CHS公式
    SpringMVC入门的注解、参数传递、返回值和页面跳转---超详细教学
    kafka的原理及集群部署详解
    Shell 正则表达式
    【NeurIPS&&知识图谱】联邦环境下,基于元学习的图谱知识外推(阿里&浙大&含源码)
  • 原文地址:https://blog.csdn.net/m0_62948770/article/details/127456281