c++库

【Docker 系列】docker 学习十一,docker 总结

2021-12-17  本文已影响0人  阿兵云原生

使用 Docker 容器化封装应用程序的好处:

Docker 引擎统一了基础设施环境,包括硬件配置,操作系统的版本,运行时环境的异构

Docker 引擎统一了程序打包(装箱)的方式,例如 java 程序,go 程序,python 程序等等

Docker 引擎统一了程序部署(运行)方式,例如 java 的部署运行方式为 java -jar...,或者 python 的部署运行 python manage.py runserver,go 的部署运行 go run ...

现在使用 Docker 容器,统一使用 docker run …

使用 Docker 容器化封装应用程序的坏处:

Docker 如何集群部署,不使用 k8s 的话:

docker compose 是单机部署的,使用集群部署我们可以使用 docker stack

例如 docker compose 部署单机是这个样子的:

docker-compose up -d xxx.yml

使用 docker stack 的时候,我们可以这样:

docker stack depoly xxx.yml

咱们来看看 docker stack是什么?

Docker 在进行多服务部署和管理时通常会使用Docker Stack来解决大规模部署管理问题

Docker引擎在1.12 版本集成了Docker Swarm, 内置新的容器编排工具docker stack,通过提供期望状态、滚动升级、简单易用、扩缩容、健康检查等特性简化了应用的管理

说白了,docker stack可以完成docker本身做不到的事情,就是他可以完成容器编排,但是这里我们就会有这么一个疑问?有了 docker compose 为什么还要有docker stack?

什么是docker swarm?

Docker swarm 是 Docker 的本机群集

它将 Docker主机池转变为单个虚拟Docker主机

Docker swarm 提供标准的 Docker API,任何已经与 Docker 守护进程通信的工具都可以使用Swarm透明地扩展到多个主机

Docker Stack 与 Docker Compose的区别

服务可理解为发布到生产环境时某组容器的预期状态 ,以及强化了( 复制集、 容器重启策略、回滚策略、服务更新策略 )等生产特性

总得来说,docker stack 适用于生产环境的编排工具,而 docker-compose 更适合被定义为单机容器编排的工具

如何使用 docker stack?

# docker stack --help

Usage:  docker stack [OPTIONS] COMMAND

Manage Docker stacks

Options:
      --orchestrator string   Orchestrator to use (swarm|kubernetes|all)

Commands:
  deploy      Deploy a new stack or update an existing stack
  ls          List stacks
  ps          List the tasks in the stack
  rm          Remove one or more stacks
  services    List the services in the stack

Run 'docker stack COMMAND --help' for more information on a command.
命令 描述
docker stack deploy 部署新 stack 或更新现有 stack
docker stack ls 显示 stack 列表
docker stack ps 列出 stack 中的任务
docker stack rm 移除一个或多个 stack
docker stack services 列出 stack 中的服务

例如咱们在随便在网上就可以找一个例子,

image

DockerFile 里面写使用 docker stack 时,就可以写成 deploy: 来进行指定

什么是 Docker ?

是一个容器化平台以容器的形式将应用程序及其所有依赖项打包,确保应用程序在任何环境中无缝运行

Docker 里面有 docker 镜像,docker 容器 和 docker 仓库

是docker容器的源代码,Docker镜像用于创建容器

它不依赖于任何特定的基础架构,它们可以在任何计算机,任何基础架构和任何云中运行

用来保存镜像的,可以看做是一个代码控制中心

Docker容器常见的几种状态

Docker与虚拟机有何不同?

docker 不是虚拟化方法,他是一个工具,用于容器化系统上的容器管理或应用程序部署

它依赖与实际实现基于容器的虚拟化或操作系统及虚拟化的其他工具,Docker主要专注于在应用程序容器内自动部署应用程序

Docker 的网络类型有哪些模式?

docker默认的网络配置,可以设置IP,但是要与docker host主机的虚拟网络在同一网段

不会给容器进行任何网络配置

直接使用 docker 宿主机的网络

与已经存在的容器共有同一个IP地址

自定义网络,咱们可以使用 docker network create 来新建一个网络

Docker 数据如何持久化?

咱们可以使用 挂载卷,就是在创建容器的时候使用 -v参数,进行绑定挂载,匿名挂载,或者具名挂载 ,咱们就可以将宿主机的目录或者文件挂载到容器中

绑定挂载

就是明确将自己宿主机的目录或者文件,对应到容器中指定的目录或文件,会有这样的特点:

匿名 / 具名挂载

就是 -v后面带的参数若只写容器中的路径(匿名挂载)或者写了一个代号,指定容器中的路径(具名路径)

默认为挂载到容器的工作目录,/var/lib/docker/volumes下面

image

Docker 容器内部的机制是什么样的?

每个容器都是在自己的名命空间中运行,但使用与所有其他容器完全相同的内核

发生隔离是因为内核知道分配给进程的命名空间,并且在API调用期间确保进程只能访问其自己的命名空间中的资源

如何临时退出一个正在交互的容器的终端,而不终止它?

使用ctrl+ q + p即可

如何停止 / 删除所有正在运行的容器?

docker kill $(docker ps -aq)

docker rm $(docker ps -aq)

如何删除所有本机所有的镜像?

docker rmi $(docker images -aq)

Dockerfile 中常见的指令有哪些?

构建镜像基于哪个镜像

镜像维护者姓名或邮箱地址

构建镜像时运行的指令

运行容器时执行的shell环境

指定容器挂载点到宿主机自动生成的目录或其他容器

为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录

健康检查

构建时指定的一些参数

声明容器的服务端口(仅仅是声明)

设置容器环境变量

拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压

拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能

运行容器时执行的shell命令

关于 Docker 的学习资料其实都在 docker hub上面,我们可以不断的学习,实战,总结,优化思维,逐步进阶

参考资料:

docker docs

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

上一篇 下一篇

猜你喜欢

热点阅读