七、服务的容器化过程

一、 容器VS虚拟机

Docker将集装箱的思想运用到软件的打包上,为代码提供了一个基于容器的标准化运输系统,可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器,可以运行在几乎所有的操作系统上。

优势

  • 开发方面:Docker可以使开发人员更加关注软件质量,而不是关注开发环境的兼容。
  • 运维方面:Docker使软件的发布更加高效,Docker能够实现自动化的编译、打包、测试和部署。因为Docker在开发、测试和生产环境中都使用了相同的镜像,所以更新时不会出现不一致的问题
  • Docker在容器和虚拟机方面的优势:
    实现了容器和虚拟机的有效结合,使部署和管理应用变得更加灵活。

二、 Docker实战

Docker的架构

引擎的三大组件:Docker后天服务、Rest接口、交互式命令行界面

Docker客户端命令

镜像 image

  • 查看本地镜像:docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 拉取镜像:docker image pull [OPTIONS] NAME [:TAG|@DIGEST]
  • 运行镜像:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
  • 创建镜像:
    Docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    Docker image build [OPTIONS] PATH | URL | -
  • 登录Docker Hub仓库:docker login [OPTIONS] [SERVER]
  • 上传镜像到Docker Hub仓库:docker push [OPTIONS] NAME[:TAG]

容器 container

  • 新建并启动容器:docker run [OPTIONS] NAME [COMMAND] [ARG…]
  • 启动和运行容器:docker start [OPTIONS] CONTAINER [CONTAINER…]
  • 获取容器的日志信息:docker logs [OPTIONS] CONTAINER
  • 进入容器:docker attach [OPTIONS] CONTAINER
  • 在运行的容器中执行命令:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
  • 停止容器:docker stop [OPTIONS] CONTAINER [CONTAINER…]
  • 删除容器:docker rm [OPTIONS] CONTAINER [CONTAINER…]

磁盘卷 volume

  • 创建磁盘卷:docker volume create [OPTIONS] [VOLUME]
  • 显示磁盘卷的详细信息:docker volume inspect [OPTIONS] VOLUME [VOLUME…]
  • 以列表显示磁盘卷:docker volume ls [OPTIONS]
  • 删除未使用的磁盘卷:docker volume prune [OPTIONS]
  • 删除磁盘卷:docker volume rm [OPTIONS] VOLUME [VOLUME…]

网络 network

  • 创建网络:docker network create [OPTIONS] NETWORK
  • 为容器添加网络:docker network connect [OPTIONS] NETWORK CONTAINER
  • 将容器从网络上断开:docker network disconnect [OPTIONS] NETWORK CONTAINER
  • 以列表显示网络:docker network ls [OPTIONS]
  • 删除所有未使用的网络:docker network prune [OPTIONS]
  • 删除网络:docker network rm NETWORK [NETWORK]

服务 service’

  • 创建新服务:docker service create [OPTIONS] IMAGE [COMMAND] [ARG…]
  • 列出所有服务:docker service ls [OPTIONS]
  • 列出某个服务的所有任务:docker service ps [OPTIONS] SERVICE
  • 删除服务:docker service rm SERVICE [SERVICE…]
  • 扩展服务:docker service scale SERVICE=REPLICAS [SERVICE=REPLICAS…]
  • 更新服务:docker service update [OPTIONS] SERVICE

集群 swarm

  • 集群的初始化:docker swarm init [OPTIONS]
  • Token的查看和刷新:docker swarm join-token [OPTIONS] (worker|manager)
  • 加入集群:docker swarm join [OPTIONS] HOST:PORT
  • 退出集群:docker swarm leave [OPTIONS]
  • 更新集群:docker swarm update [OPTIONS]

Docker Compose编排工具的使用

是一个用于定义和运行多个Docker应用程序的工具,我们可以在Compose文件中定义多个应用服务,然后使用一个简单的命令就能创建和启动所有服务。是很好的CI持续集成工具,能很方便地部署development、test和staging环境。

一般在开发环境、自动测试和线上生产环境中使用Compose

  • Compose 常用命令:
    编译、创建、启动和连接到容器的服务:
    docker-compose up [OPTIONS] [–scale SERVICE=NUM…] [SERVICE…]
    该命令整合了所有容器的输出,docker-compose up可以使容器后台运行
    编译服务:docker-compose build [options] [–build-arg key = val…] [SERVICE]
    停止服务:docker-compose down [OPTIONS]
    删除服务:docker-compose rm [options] [SERVICE…]
    对服务执行一次性命令:docker-compose run [options] [-v VOLUME…] [-p PORT…] [-e KEY=VAL…] SERVICE [COMMAND] [ARGS…]
    eg: docker-compose run web bash

三、 容器化项目

Docker 为应用的程序的打包和运行提供了一种便捷的方式,使用Docker容器进行构建、运行、停止、启动、修改或者更新等操作都非常简单。容器化技术也可以让应用程序向云环境的部署变得更为高效,再加上容器本身已经包含应用程序运行所需的大部分依赖,所有运行容器的操作系统也能很好地瘦身,从而运行更快,占用的资源更少。

传统的应用部署:

传统的应用部署为直接将应用程序安装到宿主计算机的文件系统上,然后编写命令脚本来运行它。

  • 缺点:需要安装与应用程序搭配的额外软件包,不同的版本还会有冲突
    难以迁移应用程序

将应用程序部署在虚拟机上:

虚拟机位于宿主机之上,作为独立的系统运行,同时包含了自己的内核、文件系统
网络系统等。这样很好地将应用程序和宿主机的操作系统隔离开来,减少了资源、网络、端口等的冲突

  • 缺点:耗费资源
    启动时间和CPU的使用会比应用程序自身消耗的多很多

容器化部署应用:

容器化部署应用具有灵活、高效的使用资源,容器可以包含其所需的全部文件,如同在虚拟机上部署应用程序一样,可以拥有自己的配置文件和依赖库,还可以拥有自己的网络接口。因此,与在虚拟机上运行应用程序一样,容器化应用比直接安装的应用程序更容易迁移,而且因为应用程序所运行的每个容器均拥有独立的网络接口,所以也不会出现争用同一端口的问题。

容器在启动时间、磁盘空间占用和CPU处理能力方面更具有优势,因为它没有独立运行的操作系统,也没有包含运行整个操作系统所需的大量软件。它只包含了应用程序运行所需的软件,以及其他想随容器一起运行的工具和少量的描述容器的元数据。

容器的管理工具:

  • Swarm:Docker的原生集群工具
  • Kubernetes:Google开源的一套自动化容器管理平台,前身是Borg,用于容器的部署、自动化调度和集群管理。特性:容器的自动化部署、自动化扩展或者缩容、自动化应用及服务升级、容器成组、对外提供服务、支持负载均衡、服务的健康检查、自动重启
  • Apache Mesos:AMPLab首先开发的一款开源集群管理软件,支持Hadoop、Elasticsearch、Spark、Storm和Kafka等应用架构。
发布了20 篇原创文章 · 获赞 1 · 访问量 209

猜你喜欢

转载自blog.csdn.net/qq_33670157/article/details/104569401
今日推荐