0 如何理解docker,是开始学习的关键

初学者应该如何理解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,避免因为防火墙打击学习积极性

首先,从官方下载安装,当然也可以选择:brew安装docker 或是下载源码包自行编译,不过对于一个初学者来说,一种简单的安装模式,比较不容易打击积极性。 tips:下载安装docker时,如果因为众所周知的原因导致速度够慢,可以使用迅雷离线下载。
第二步,就是验证安装的成果了,在terminal中使用命令:docker run -ti ubuntu:latest /bin/bash
docker run 是docker运行镜像的起头

-ti 表示运行在交互模式,一般这个模式就是可以起动bash,然后和容器有命令行的交互
ubuntu:lastest 中的ubuntu表示镜像名字,镜像由docker官方或个人提供
/bin/bash 表示在docker容器中执行的命令
当然对于大部分墙内的玩家可能一时半会会得不到结果,卡在网络获取镜像上,这里可以使用国内一些云服务公司的代理镜像,我个人采用了daocloud 的镜像,该镜像配置需要先注册一个daocloud的账号,链接:加速器 DaoCloud,注意,配置了加速器没有办法通过日志等方式来验证,只能通过看镜像下载速度是否有显著提升来确定,作为参考,我这里的下载速度大约提升到1MB- 3MB每秒。接下来可以巡视一下ubuntu的文件结构,首先默认用户为root,文件系统和mac系统截然不同,基本上是一个非常纯净的ubuntu系统。接下来在容器中做出一些修改,比如跑一个命令,安装python:apt-get update
apt-get install python
就这样,完成了python在docker启动的ubuntu容器内的安装。

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

接下来,实验一些docker的特性,先退出刚启动的QQ购买平台ubuntu bash,再回到mac的terminal,运行命令:docker images
此时,会显示出刚刚创建的容器列表:Macintoshsong-2:~ song$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 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 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
254c67dc4bbe 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 imagespush 一个自己制作的image到公有hub:Build your own images了解至少一个国内的hub服务,比如阿里云:Docker 镜像服务

3 本篇总结

初学者如何理解docker,我建议先不要急着了解原理或容器概念,对于用户来说,先看如何使用,一些好的特性,可以先记录,再做原理探讨初学者如何安装docker,以及如何启动一个交互式的ubuntu docker容器docker的特性,如image比传统虚拟化技术小,以及如何保存一个更改后的image(保存在本地)容器内的更改如何保存,如何创建自己的容器并递交到公有的docker hub


更多相关文章

  1. 浅谈 Docker 容器与镜像
  2. Docker 常用命令梳理
  3. docker 使用入门
  4. 只要一小时,零基础入门Docker
  5. 你不知道的 Docker CTO 的浪漫狂放
  6. 云计算模式:Docker正掀起个性化商业革命
  7. 赢得Docker挑战最佳实践
  8. 应对 Docker 网络功能难题的挑战与思考
  9. 针对Docker容器的监控指标

随机推荐

  1. android editText 自定义为圆角矩形背景
  2. android install location
  3. Android集成第三方支付宝支付开发App(面试
  4. Android O wifi turn on -- start suppli
  5. Android之普通对话框
  6. Android : Resource is not a Drawable (
  7. android获取sd卡路径方法:
  8. Android Dex文件结构
  9. android文档笔记(1)
  10. Android新设备“购买力”排行榜:东北、西