• 四、docker compose


    docker compose可以方便我们快捷高效地管理容器的启动、停止以及重启等操作,和批量管理容器,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像、数据卷、网络模式、监听端口等信息。我们可以在一个compose文件中定义一个多容器的应用(比如jumpserver),然后通过该compose来启动这个应用。 

    1、安装 docker-compose

     sudo pip install -U docker-compose
    

    2、创建docker-compose.yml文件 

    #Docker:组合

    ###定义服务
    vi docker-compose.yml

    指定内容

    version: '2'
    services:
      phoenix:
        image: nginx
        ports:
          - "8080:80"
      dragon:
        image: nginx
        ports:
          - "8081:80"
    

      

    3、启动服务

    // 启动服务
    docker-compose up
    // 通过浏览器访问 http://192.168.99.100:8080/		http://192.168.99.100:8081/
    // 回到终端,这里会显示容器里面的一些日志,每条日志的前面会标注一下这个日志来自哪一个服务容器,ctrl+c可以停止它们,这些服务我们可以让它在后台去运行
    docker-compose up -d
    // 查看一下正在运行的容器
    docker ps
    

      

    4、常用操作

    // 查看应用的服务
    docker-compose ps
    // 停止phoenix服务
    docker-compose stop phoenix
    // 停止所有在docker-compose.yml文件中定义的服务
    docker-compose stop
    // 重新启动phoenix服务
    docker-compose start phoenix
    // 启动所有服务
    docker-compose start	
    // 查看服务的日志
    docker-compose logs
    // 持续跟踪服务日志的变化
    docker-compose logs -f
    // 登录到phoenix服务容器中
    docker-compose exec phoenix bash
    // 要删除应用的服务需要先把它们都停止掉
    docker-compose stop
    // 删除所有服务的容器
    docker-compose rm
    // 注意rm不会删除掉创建的网络还有数据卷
    docker network ls
    // 这里的ninghaodocker_default就是我们的应用创建一个网络
    // 如果想要删除所有的这些东西的话,可以使用
    docker-compose down
    docker network ls
    

      

    注意:

    ###网络
    网络决定了服务之间还有外界跟服务之间怎么样去进行沟通,在执行docker-compose up的时候,docker会给我们创建一个默认的网络,所有的服务也会属于这个默认的网络,服务跟服务之间可以使用服务的名字进行相互的通信,我们也可以创建自己的网络,然后让指定的服务加入到我们自己创建的这些网络里面,那么这样的话属于这个网络的服务之间可以进行通信,网络以外的服务就不能够去跟它们进行通信了, 这样的话会对这个服务有一个隔离的作用,让应用更安全一些

    ###定义网络

    version: '2'
    services:
      phoenix:
        image: nginx
        ports:
          - "8080:80"
        networks:
          - "fairyland"
      dragon:
        image: nginx
        ports:
          - "8081:80"
        networks:
          - "fairyland"
      monkey:
        image: nginx
        ports:
          - "8082:80"
        networks:
          - "default"
    networks:
      fairyland:
        driver: bridge
    docker-compose up -d
    docker-compose exec phoenix bash
    ping dragon
    exit
    docker-compose exec dragon bash
    ping phoenix
    // 重新启动服务
    docker-compose up -d
    docker-compose exec phoenix bash
    ping dragon
    ping monkey
    // dragon能ping通,monkey不能ping通
    

    ###命名的数据卷

    version: '2'
    services:
      phoenix:
        image: nginx
        ports:
          - "8080:80"
        networks:
          - "fairyland"
        volumes:
          - nest:/mnt
      dragon:
        image: nginx
        ports:
          - "8081:80"
        networks:
          - "fairyland"
        volumes:
          - nest:/mnt
      monkey:
        image: nginx
        ports:
          - "8082:80"
        networks:
          - "default"
    networks:
      fairyland:
        driver: bridge
    volumes:
      nest:
        driver: local
    
    具体可查看
    
    docker-compose up -d
    docker-compose exec phoenix bash
    cd /mnt
    touch phoenix_data_1
    ls
    exit
    docker-compose exec dragon bash
    cd /mnt
    ls
    

      

      

    ###指定位置的数据卷

    docker-compose.yml

    version: '2'
    services:
      phoenix:
        image: nginx
        ports:
          - "8080:80"
        networks:
          - "fairyland"
        volumes:
          - nest:/mnt
          - ./app/web:/usr/share/nginx/html
      dragon:
        image: nginx
        ports:
          - "8081:80"
        networks:
          - "fairyland"
        volumes:
          - nest:/mnt
          - ./app/web:/usr/share/nginx/html
      monkey:
        image: nginx
        ports:
          - "8082:80"
        networks:
          - "default"
    networks:
      fairyland:
        driver: bridge
    volumes:
      nest:
        driver: local
    

      

      

  • 相关阅读:
    Atitit 理解Monad attilax总结Atiti
    Atitit sql执行计划
    Atitit 深入了解UUID含义是通用唯一识别码 (Universally Unique Identifier),
    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2
    Atitit 项目培训与学校的一些思路总结
    Atitit 项目的主体设计与结构文档 v3
    Atitit  数据存储的分组聚合 groupby的实现attilax总结
    Atitit 数据存储的数据表连接attilax总结
    Atitit图像识别的常用特征大总结attilax大总结
    Atitit 项目中的勋章体系,,mvp建设 ,荣典体系建设
  • 原文地址:https://www.cnblogs.com/fger/p/10555936.html
Copyright © 2020-2023  润新知