藏经阁2.0全新上线!下载本地、线上阅读让你轻松获取技术知识。为了让更多人学习到藏经阁中的优秀技术作品,培养好的阅读习惯,“藏经阁一起读”活动来啦,你阅读,我奖励!
本期书籍:《4天实战 轻松玩转docker》,本书是开发者社区联合马哥教育共同出品,揭秘docker的前世今生,让你轻松了解docker的实际运用、常用命令及注意事项,实战总结一步到位!
活动规则:阅读书籍,将你对于本书的想法、心得等在评论区留言,评论不少于200字,将选取评论质量最高的前2名和点赞最多的第1名送出小米鼠标Lite一个。
活动时间:2022年2月14日~2月21日14:00
参与用户务必扫码加入钉群,第一时间了解活动进展、获取得奖信息。
看完了书籍,感觉到作者的用心良苦,感谢感谢,作为一个新手,有些东西还听不太懂,但是也了解了docker的强大,以前都是部署多台虚拟机,装不同的环境,我是做php的,最烦的就是php经常升级版本,扩展也跟着升级,然而环境的限制导致某些扩展无法使用,还需要重新折腾服务器环境,有了docker以后,这个问题迎刃而解,还有各种镜像什么的都可以去仓库里直接找,真心方便,我还需要根据书籍和视频多次的进行练习,了解它,记住它,掌握它,并推广给团队进行使用!
谢谢作者!谢谢平台! 我现在再次读docker书籍,感到知识:温故而知新,作者总结的很好。 自己工作好几年,以前应用部署时直接物理机部署,再虚拟机部署,到现在容器化部署。 技术几年就会变更,自己也要坚持学习,不然被淘汰了; 看了书籍+直播收获满满,知道了 1)docker是什么, 2)容器和虚拟化的比较 3)docker 底层技术 4)docker镜像和仓库 5)docker如何安装和常用命令 6) dockerFile的编写和一些规则 7)docker容器数据如何持久化 8)如何自己创建docker 镜像仓库Harbor 9)微服务的概念,微服务的优势 现在我们公司微服务、docker和K8s的实战,并部署使用了阿里云,这样的架构可以随时应对商城促销的大流量--应用随时弹性伸缩,用户体验很好。
前言 这本书一共有4章,每一章都有对应的视频,跟着视频看的话会更加清晰明白。 本书如果网页在线看的话有些地方会模糊,最好是下载到本地学习。
第一章 Docker原理及在运维工作的地位和作用。 这一章其实主要是说了为什么要有Docker,Docker是怎么来的。从运维的发展开始讲起。从最早的单机部署到云计算到容器化再到云原生,娓娓道来。让人明白Docker兴起不是一蹴而就的,而是经过了这么多年的发展的必然选择。
第二章 容器、镜像和仓库 这一章其实就是Docker的基础概念和基本操作了。让初学者可以快速的掌握Docker的各种名词和概念,在使用的时候,不至于一头雾水。也介绍了Docker的基本命令,让新手可以根据文档快速的上手Docker。
第三章 Docker的实际运用 这一章则是Docker的进阶内容。介绍了一些高级的命令,挂载文件、映射端口,编写Dockerfile文件和运行。学会了这一章,对Docker的了解就从简单的使用变成了可以自己制作Docker镜像。
第四章 Docker实际工作案例实现 最后一章是选取了几个日常工作中常要运用到的场景进行讲解,方便大家日后直接使用。主要包括数据持久化、搭建自己的Harbor仓库和用Docker来实现微服务。都是在日常使用Docker的过程中肯定会用到的功能。
总结 总得来说,这本书可以让一个新人快速的入手Docker,达到在工作中简单使用的程度。还配有视频,界面友好,截图详细,可以根据书籍里的内容一步一步的自己尝试,书籍的内容也是由浅到深。我愿称之为:Docker新人入门必读!
读完文章后的一些感受如下: 1、有些地方的语句不太通顺,可能没有校对; 2、里面有一些知识点有重复出现; 3、了解了docker、微服务、K8S的原理及在未来运维中起到的重要作用; 4、容器、镜像、仓库-Docker三大核心的概念; 5、学习了Docker的命令行及实际工作中的案例,有了大概的印象。 6、命令比较多,知识比较广泛,所以还是需要课下多动手实践才能更好掌握。原理很重要,操作也不能少。 下面是整个学习过程中摘录的知识点,还需要反复学习理解: - LNMP 是一套技术的组合,L=Linux、N=Nginx、M=MySQL、P=PHP,其中Nginx 服务是不能处理动态请求。
多点集群就是很多服务器在服务,服务的是一个单体应用,架构里面,服务的单体应用就是服务的某一个应用,这四个服务器里面,原站里面都是一套代码。
物理隔离、虚拟化、云计算的发展,概念,优缺点。物理隔离包含隔离网闸技术 、物理隔离卡等。物理隔离产品是用来解决网络安全问题的。云计算可以解决的问题:版本更新频率大增、熬夜加班、生产环境不稳定、扯皮对立、压力更大恶性循环。
DevOps 是一个必然趋势,是一种方法,也是一种观念。
新环境产生问题:资源利用率、扩容不及时、环境不一致导致的问题。
docker与容器区别:docker 就是容器,容器就是 docker,并不是这样的,容器就是一个技术类型。而 docker 是当下最主流的,容器的一种实现容器的方案,docker 只是容器其中一种实现方案,其他方案包括:LXC,Mesos,RKT 等等,最大区别当容器和服务器的数量达到一定规模的时候,就会碰到管理的问题,即如何有效管理大量的服务器和容器,保证应用的稳定运行、方便升级和故障的快速解决。
docker或者容器和传统虚拟化最大的一点区别,就是虚拟化的封装是系统级的封装,docker或者其他容器是进程级的封装。和传统虚拟化最大的一点区别,就是虚拟化是系统级的封装,进程级封装。
Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个 DNS 名称,并可以在它们之间进行负载均衡。滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视。
云原生是一个生态概念、是一线互联网公司发展到某个极端的必然选择。包含三大要素:容器及编排管理、DevOps、微服务。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。
容器与虚拟机的比较 启动速度 容器-〉秒级 虚拟机-〉分钟级 性能 容器-〉接近原生 虚拟机-〉较弱 内存代价 容器-〉很少 虚拟机-〉较多 硬盘使用 容器-〉一般为 MB 虚拟机-〉一般为 GB 运行密度 容器-〉单机支持千个容器 虚拟机-〉一般几十个 隔离性 容器-〉安全隔离 虚拟机-〉完全隔离 迁移性 容器-〉优秀 虚拟机-〉一般 容器:再次提高服务器资源利用率 虚拟机:安全性较差 容器:重量更轻,体积更小 虚拟机:多容器管理存在难度 容器:匹配微服务的需求 虚拟机:稳定性较差 容器:保持多环境运行的一致性 容器:快速部署迁移,容错高 虚拟机:排错难度较大
Docker 主要就是借助 Linux 内核技术 Namespace 来做到隔离的,Linux Namespaces 机制提供一种资源隔离方案。PID,IPC,Network 等系统资源不再是全局性的,而是属于某个特定的Namespace。每个 namespace 下的资源对于其他 namespace 下的资源都是透明,不可见的。
Control groups:提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘 IO 等等)的机制,被 LXC、docker 等很多项目用于实现进程资源控制。
云原生的技术栈实际上三个方面,devops,微服务,还有一块是容器 K8s,从系统层次来看,从上到下分别是: 应用层:应用定义及部署(App Definition and Development)、配置(Provisioning)、可 观测性和分析(Observability and Analysis)、无服务(Serverless) 集群:编排与管理(Orchestration & Management) 底层运行环境:运行环境(Runtime)
建议数据库不要装 docker,放到你的虚拟机里边,数据库本身这个软件也不太可能和其他的软件共同装在一个,毕竟容器里你进去以后你要排错,为了避免这种麻烦,建议数据库这一块就尽量不要放在容器里边
镜像里面只包含两种东西,它的依赖环境和它实际要做的一个应用,镜像是把它两个融合在一起的,就是应用和它底层的一些依赖环境变量,或者一些参数也好等等。它把它们融合到一起了。
docker 常见的有 3 种安装方式,yum、rpm 包、脚本。
Docker的基本命令
查看容器 docker ps :列出当前所有正在运行的 container docker ps -l :列出最近一次启动的 container docker ps -a :列出所有的 container(包含历史,即运行过的 container) docker ps -q :列出最近一次运行的 container ID
再次启动容器 docker start/stop/restart #:开启/停止/重启 container docker start [container_id] #:再次运行某个 container (包括历史 container)
删除容器 docker rm <container...> #:删除一个或多个 container docker rm docker ps -aq
#:删除所有的 container docker ps -aq | xargs docker rm #:同上, 删除所有的 containe
查看镜像或容器的详细信息: docker inspect [容器ID/镜像名:tag]
容器和宿主机之间文件复制 ldocker cp [文件目录 容器ID:内部路径] ldocker cp [容器ID:内部路径 文件目录]
Dockerfile 步骤 1、创建 dockerfile 目录,名字可以自定义。在大目录里面创建各种小目录和文档,比较有层次。 2、在该目录中编辑 dockerfile。 3、用 COPY 或 ADD,需要把被 COPY 文件提前放到 dockerfile 目录中。 4、官方推荐用 COPY,如果需要过程中解压,用 ADD。 5、CMD 字段,需要用[“命令”,”选项 1”]这种格式书写。强制格式写法,必须使用[“命令”,”选项 1”],类似于 python 的数组。 6、CMD 字段只能写一条命令,且这条命令尽量是前台执行的命令。如果是后台命令,这条命令结束,docker 就会自动关闭。
用dockerfile 构建镜像: docker build -t(设置要构建镜像的名字,最后要加.) 创建基础镜像 Docker 提供了两种方法来创建基础镜像 一种是通过引入 tar 包的形式, 另外一种是通过一个空白的镜像来一步一步构建 scratch 是 Docker 保留镜像,镜像仓库中的任何镜像都不能使用这个名字,使用 FROM scratch 表明我们要构建镜像中的第一个文件层。
数据初始化有三种类型。第一种volumes,这个是最推荐的,也是最好的一种方式。第二种是 bind—mount,第三种是 tmpfs。
volumes是官方比较推荐也是大型的集群比较常见的一种方式。可以理解为在自己的宿主机或者云端或者在某一个区域创建一块磁盘专门去存放容器里的数据或文件。把这个容器里边的数据或者文件还有目录等都规划好,再去启动容器。正常在老一些的版本里边首先必须要去创建 volumes,否则是没有办法创建成功的。新版本好像不写命令也可以创建成功。
bind—mount将宿主机中的文件、目录 mount 到容器上。质上是宿主机、container 之间共享宿主机文件系统。这种持久化方法更导致 container 与宿主机的耦合过于紧密,所以不推荐使用。
tmpfs将数据存于宿主机内存中。docker 可将用户名与密码等敏感数据保存在某个数据库中,当启动需要访问这些敏感数据的 container 或者 service 时,docker 会在宿主机上创建一个 tmpfs,然后将敏感数据从数据库读出写到 tmpfs 中,再将 tmpfs mount 到 container 中,安样能保证数据安全。当容器停止运行时,则相应的 tmpfs 也从系统中删除。
镜像获取有两种方式: 第一种方式是从官方的镜像仓库获取,search 命令从官方镜像查找已有的镜像, 第二种方式是企业级镜像仓库,公司最常用的一种 harbor。 harbor 的作用 1:企业级镜像仓库,根据企业需求创建的镜像,可以通过 harbor 实现管理和使用。作用 2:主要特点功能包括:基于角色的访问控制,基于镜像的复制策略,图形化用户界面,审计管理等。
微服务是一种架构的模式,是单体的应用。单体应用拆分成各个模块,充分的去解耦,独立构建部署,互相之间可以协调配合。 微服务的特点,颗粒度小,且专注一件事情。单独的进程。轻量级的通信机制。松耦合,独立部署。微服务具备四个特性,复杂性,隐匿性,异变性,配合性。
整体篇幅比较长,理论知识也很丰富,很清晰明白的了解了docker的原理及在运维工作的地位和作用,了解到了docker、微服务、k8s的联系,devops和docker的关系。文章整体对于容器,镜像和仓库的讲解也很详细,讲明了容器和虚拟化,以及其中优势和劣势,底层核心;还讲了docker在实际中的应用,以及除了docker还有什么其他的选择,最后以docker在实际工作中的案例实现来完成文章整体上从理论到实践的落地,更容易让人接受理解,挺好的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。