docker入门教程?新手如何学docker以及docker的一
转自:https://zhuanlan.zhihu.com/p/22259092
初学者应该如何理解docker?初学时,我对docker的感受是这样的:docker就像是虚拟机技术的升级版,虽然之后来看,这个看法有失偏颇,但仍然可以作为一个初学者理解的好切入点。当然从官方的角度来说,docker是一种“容器”,但是和初学者解释容器的概念,显然比较突兀。
让我们来看看docker有哪些和虚拟机类似的概念:
docker可以启动一个centos或ubuntu或某个linux发行版的镜像,并提供一个bash入口,区别是docker启动的速度更快
docker可以启动一个nginx或mysql或web类应用的镜像,此镜像中包含有操作系统(比如ubuntu11.04精确至版本号),依赖lib版本(比如gcc等),以及使用的app如何安装,简单来说,就是得到一个“纯净”的,只有你需要的app的镜像,同样的,docker启动的速度还是一如既往的比虚拟化技术快
docker做到了文件系统,内存,cpu等硬件资源看起来和宿主系统的隔离
从这几点来说,似乎虚拟机可以做到的docker都可以做到,而且docker速度更快,镜像占用空间更少,这些特性在带来好奇的同时也给了很多初学者疑问---docker是如何做到的
首先,从官方的docker.com/products/doc下载安装,当然也可以选择:brew安装docker 或是下载源码包自行编译,不过对于一个初学者来说,一种简单的安装模式,比较不容易打击积极性。 tips:下载安装docker时,如果因为众所周知的原因导致速度够慢,可以使用迅雷离线下载。
第二步,就是验证安装的成果了,在terminal中使用命令:
docker run -ti ubuntu:latest /bin/bashdocker run 是docker运行镜像的起头-ti 表示运行在交互模式,一般这个模式就是可以起动bash,然后和容器有命令行的交互ubuntu:lastest 中的ubuntu表示镜像名字,镜像由docker官方或个人提供/bin/bash 表示在docker容器中执行的命令
当然对于大部分墙内的玩家可能一时半会会得不到结果,卡在网络获取镜像上,这里可以使用国内一些云服务公司的代理镜像,我个人采用了daocloud 的镜像,该镜像配置需要先注册一个daocloud的账号,链接:加速器 DaoCloud,注意,配置了加速器没有办法通过日志等方式来验证,只能通过看镜像下载速度是否有显著提升来确定,作为参考,我这里的下载速度大约提升到1MB- 3MB每秒。
接下来可以巡视一下ubuntu的文件结构,首先默认用户为root,文件系统和mac系统截然不同,基本上是一个非常纯净的ubuntu系统。
接下来在容器中做出一些修改,比如跑一个命令,安装python:
apt-get updateapt-get install python
就这样,完成了python在docker启动的ubuntu容器内的安装。
接下来,实验一些docker的特性,先退出刚启动的ubuntu bash,再回到mac的terminal,运行命令:
docker images
此时,会显示出刚刚创建的容器列表:
Macintoshsong-2:~ song$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu latest bd3d4369aebc 9 days ago 126.6 MB
非常吃惊的是size无比小,大小才126.6MB,至于为何如此小,这是docker的核心竞争力之一,之后会仔细深入探讨。
如何再次进入刚才的容器,如果使用刚才的命令,docker会报错,是因为该镜像在本地已经创建,所以接下来要进入该镜像需要使用以下命令:
docker run -ti bd3d4369aebc /bin/bash其中bd3d4369aebc为image的id,在上面一条命令中得到
在再次进入bash后,执行命令python,会发现python木有了,刚才安装的python再次丢了,所以在镜像内执行的全部操作,在退出或杀死镜像后,不会直接在镜像中保存。为了保存容器中更改内容,可以采用
Macintoshsong-2:myworks song$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES254c67dc4bbe bd3d4369aebc "/bin/bash" 9 minutes ago Up 9 minutes nostalgic_poincare获取到container id(注意,container id和image id是不同的)接着使用命令:Macintoshsong-2:myworks song$ docker commit -m "Added json gem" -a "Kate Smith" 254c67dc4bbe example/new_ubuntu:v2获取一个新的docker镜像,在该镜像中,会有一个默认安装好的python(或任何你在原有ubuntu镜像中所作出的修改)
how to learn more :
了解什么是docker hub :Build your own images
push 一个自己制作的image到公有hub:Build your own images
了解至少一个国内的hub服务,比如阿里云:Docker 镜像服务
初学者如何理解docker,我建议先不要急着了解原理或容器概念,对于用户来说,先看如何使用,一些好的特性,可以先记录,再做原理探讨
初学者如何安装docker,以及如何启动一个交互式的ubuntu docker容器
docker的特性,如image比传统虚拟化技术小,以及如何保存一个更改后的image(保存在本地)
容器内的更改如何保存,如何创建自己的容器并递交到公有的docker hub
相关学习资料移步: