docker入门教程?新手如何学docker以及docker的一

2017-11-02  本文已影响31人  资料库大师

转自: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是如何做到的

1 如何安装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容器内的安装。

2 进一步来学习一些docker启动的一些容器特性

接下来,实验一些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 镜像服务

3 本篇总结

初学者如何理解docker,我建议先不要急着了解原理或容器概念,对于用户来说,先看如何使用,一些好的特性,可以先记录,再做原理探讨

初学者如何安装docker,以及如何启动一个交互式的ubuntu docker容器

docker的特性,如image比传统虚拟化技术小,以及如何保存一个更改后的image(保存在本地)

容器内的更改如何保存,如何创建自己的容器并递交到公有的docker hub

相关学习资料移步:

上一篇下一篇

猜你喜欢

热点阅读