zoukankan      html  css  js  c++  java
  • Docker学习的几个建议和技巧

    在之前的文章和问答中,我也说过学习技术的一般方法,学习技术不光是要指出关于什么,而是教会如何去做,不仅仅是关于你应该具备哪些技术技能,跟重要的是你应该如何学习它们。本文中,虫虫和大家一起讨论下下如何学习Docker以及学习Docker学习中应该注重那些问题。

    你知道什么是虚拟化吗?

    最近几年入坑的很多开发人员和运维工程师应该都听说过虚拟化,虚拟化和云都是宠儿和新的流行词,但是关于虚拟化的实质和实际内容可能真正了解的人也不多。

    虚拟化和分布式云计算是一项革命性技术,在目前乃至未来很长一段时间内都会是热点和趋势。懂得虚拟化,也能让技术人员更容易入职,更容易拿到高工资。

    了解虚拟化和容器化之间的区别,如何用容器解决虚拟化问题,是一个是开始Docker之旅的最好问题,而不是怎么在"windows安装docker?","我不懂Linux,我怎么学习docker?",这样的问题。

    从简单命令行开始

    这是对任何人学习docker技术的最佳路径。无论你是学习Docker还是其他任何技术或技能(比如git等也类似)。

    学习CLI很重要。 Docker有很多很好的GUI,但是如果你想掌握一项技术,最好的方法是使用它的基本命令,从这儿了解实质,原理和进行问题排查。

    从简单的命令开始,这是这些工具(协议)的实质,也能更能帮助你了解原理和本质,更容易排查问题。

    学习Docker请先忘记Kubernetes,Docker Swarm,还有像Docker Compose这样的工具。换句话说,第一步请先简单化、先学会走了,了解本质,然后其他UI工具、其他界面基本都是对这些的打包(了解本质了,你也可以自己写这样的工具,或者调用他们API二次开发)。

    首先Pull和Push像hello world镜像这样的简单容器。并在此基础上对其做些一些更改并提交更改,标记它然后push。

    如果你的学习方法是从部署和配置和使用K8s集群开始的,那么你就需要怎么解决头大的问题了!

    Docker网络

    容器和编排系统中最容易迷惑的部分可能是网络。 Docker使用与主机操作系统固有的相同网络基础结构。你可以在localhost上运行Docker容器,而无需关心SDN等问题。

    你可以进一步了解如何创建Docker集群并使用编排系统,这需要先学习一些网络知识。

    Docker可以使用其默认网络

    · 非网络模式

    · 主机网络模式

    · 桥接模式

    · docker_gwbridge 网络

    它还可以使用第三方软件定义和支持多主机网络,如:

    · 桥接网络

    · docker_gwbridge网络

    · Overlay 网络

    · Flannel

    · Weave

    · Open vSwitch

    · Calico 网络

    · Pipework

    · OpenVPN

    等等

    了解容器网络可能需要一些时间,但这是很值得花费时间的。

    文件系统

    Docker支持许多文件系统,并且每个文件系统都有其优缺点。那么我们为什么要在devicemapper或overlay2选择aufs呢?

    什么是顶层可写层?镜像和容器的区别是什么?

    你知道什么是CoW策略吗?

    与Docker网络一样,了解如何在Docker镜像和容器中存储和管理数据是非常重要的基础,需要首先了解和熟悉的概念。

    Docker,Compose和Machine

    Docker生态系统非常庞大,而且每天还都在不断更新,壮大。学习Docker Compose和Docker Machine将减轻你的负担,并给你提供更多使用Docker和优化交付和部署pipelines的能力。

    首先学习Docker基础知识,然后转到Docker Compose和Docker Machine。

    容器编排

    掌握基本的Docker概念和工具后,我们开始关注业务流程。

    没有编排的Docker不是可扩展的解决方案,而且这样的Dockery也没有存在的意义。容器编排将允许你从事务(容器)转移到抽象(服务)。它允许你简化和优化部署。

    如果你刚入步,你可以使用Docker Swarm,然后转移到更复杂的系统,如K8S。

    尝试着基于Docker做开发

    尝试用Docker API开发东西。

    使用Docker对并行计算集群进行原型设计

    使用Docker对无服务系统进行原型设计

    了解如何使用Docker API,编写orchestrator原型或自我修复系统。

    要不耻下问

    我知道初学者可能会有一些问题,可能会问一些很出格的问题,很多东西在询问之前其实可以通过搜索引擎(百度、谷歌)下都可以直接解决。通过搜索引擎解决自己的大部分问题,其他可以通过在线论坛,stackoverflow,QQ群等询问。

    如果你在没有任何帮助的情况下找到答案更好,这比在论坛、QQ群中提出你遇到没人解答过第一个问题很有帮助,但如果你需要,请不要羞于询问。

  • 相关阅读:
    C++并发与多线程学习笔记--unique_lock详解
    C++并发与多线程学习笔记--互斥量、用法、死锁概念
    MongoDB教程--配置与入门
    C++并发与多线程学习笔记--多线程数据共享问题
    C++并发与多线程学习笔记--参数传递详解
    C++并发与多线程学习笔记--基本概念和实现
    Python学习笔记--语音处理初步
    C#中三个关键字params,Ref,out
    Windows窗体应用开发3--配置标准控件1
    在博客的第一天
  • 原文地址:https://www.cnblogs.com/sea520/p/11362079.html
Copyright © 2011-2022 走看看