深入理解Docker(三剑客)

Docker Compose

解决了本地docker容器编排问题

compose由python编写,调用Docker服务提供的API来对容器进行管理

负责实现对Docker容器集群的快速编排,用一个配置文件定义一个多容器的应用,然后用一条指令安装这个应用所有的依赖,完成构建,解决了容器与容器之间如何管理编排的问题

两个重要概念:

  • service:一个应用容器,实际上可以运行多个相同镜像的实例

  • project:由一组关联的应用容器组成一个完整业务单元

使用docker-compose.yml进行管理

实例:

xxx@xxx-virtual-machine:~/docker_test$ cat docker-compose.yml 
version: '3'
services:
  control:
    image: ubuntu
    container_name: pmjcontrol
    privileged: true
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /usr/bin/docker:/usr/bin/docker:ro
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose:ro
      - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7:ro
    command: sleep 100000 

例程:

version: '3'
services:
    web:
        build: .
            depends_on:
                - db   
                - redis
    redis:
        image: redis
    db:
        image: postgres
        volumes:
          - db-data:/var/lib/postgresql/data
        networks:
          - backend
        deploy:
          placement:
            constraints: [node.role == manager]
    test: 
        image: nginx:1.14-alpine
        container_name: mynginx
        command: ifconfig
        networks: 
            app_net:                                # 调用下面 networks 定义的 app_net 网络
            ipv4_address: 172.16.238.10
networks:
    app_net:
        driver: bridge
        ipam:
            driver: default
            config:
                - subnet: 172.16.238.0/24

运行启动项目:

#查看帮助
docker-compose -h
​
# -f  指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d 
​
#启动所有容器,-d 将会在后台启动并运行所有的容器
docker-compose up -d
​
#停用移除所有容器以及网络相关
docker-compose down
​
#查看服务容器的输出
docker-compose logs
​
#列出项目中目前的所有容器
docker-compose ps
​
#构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
docker-compose build
​
#拉取服务依赖的镜像
docker-compose pull
​
#重启项目中的服务
docker-compose restart
​
#删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
docker-compose rm 
​
#在指定服务上执行一个命令。
docker-compose run ubuntu ping docker.com
​
#设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
docker-compose scale web=3 db=2
​
#启动已经存在的服务容器。
docker-compose start
​
#停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
docker-compose stop

Docker Machine

解决了docker运行环境的问题,配置并管理宿主机(具有docker engine的主机)

  • dockers基于linux内核的cgroup实现的,如果在非linux平台上使用docker技术,需要依赖安装linux系统的虚拟机

  • docker machine可以在各个平台上快速创建具有docker服务的虚拟机,可以理解为virtualbox或者vmware

  • win10上自带了hyper-v虚拟机,docker可以直接运行在linux系统的hyper-v上

应用场景:

  • 在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安装和运行 Docker Engine

    • 使用docker machine在本地运行docker。在Mac或者windows box中使用docker Toolbox安装程序安装Docker Machine将为Docker Engine配置一个本地的虚拟机,使能够连接并运行docker命令

  • 使用 Machine 在云提供商上 provision Dockerized 宿主机

Docker Swarm

解决了多主机多容器的调度部署问题

也是容器编排项目,与compose的区别在于,docker compose是一个在单个服务器或主机上创建多个容器的工具,而swarm则是可以在多个服务器或者主机上创建容器集群服务,对于微服务的部署,显然是docker swarm更为合适

将docker主机池转变为单个虚拟Docker主机,提供了标准的Docker API,所有任何已经与Docker守护程序通信的工作都可以使用swarm轻松扩展到多个主机

swarm集群=swarm manager+work node

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值