还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的。

容器启动过程如下:

  1. Docker 客户端执行 docker run 命令。

  2. Docker daemon 发现本地没有 httpd 镜像。

  3. daemon 从 Docker Hub 下载镜像。

  4. 下载完成,镜像 httpd 被保存到本地。

  5. Docker daemon 启动容器。

docker images 可以查看到 httpd 已经下载到本地。

docker ps 或者 docker container ls 显示容器正在运行。

小结

Docker 借鉴了集装箱的概念。标准集装箱将货物运往世界各地,Docker 将这个模型运用到自己的设计哲学中,唯一不同的是:集装箱运输货物,而 Docker 运输软件。

每个容器都有一个软件镜像,相当于集装箱中的货物。容器可以被创建、启动、关闭和销毁。和集装箱一样,Docker 在执行这些操作时,并不关心容器里到底装的什么,它不管里面是 Web Server,还是 Database。

用户不需要关心容器最终会在哪里运行,因为哪里都可以运行。

开发人员可以在笔记本上构建镜像并上传到 Registry,然后 QA 人员将镜像下载到物理或虚拟机做测试,最终容器会部署到生产环境。

使用 Docker 以及容器技术,我们可以快速构建一个应用服务器、一个消息中间件、一个数据库、一个持续集成环境。因为 Docker Hub 上有我们能想到的几乎所有的镜像。

不知大家是否意识到,潘多拉盒子已经被打开。容器不但降低了我们学习新技术的门槛,更提高了效率。

如果你是一个运维人员,想研究负载均衡软件 HAProxy,只需要执行docker run haproxy,无需繁琐的手工安装和配置既可以直接进入实战。

如果你是一个开发人员,想学习怎么用 django 开发 Python Web 应用,执行 docker run django,在容器里随便折腾吧,不用担心会搞乱 Host 的环境。

不夸张的说:容器大大提升了 IT 人员的幸福指数。

最新文章

  1. C语言实现2个大数相加。
  2. 为什么我还不推荐内存中OLTP给用户
  3. ES6中Arguments和Parameters用法解析
  4. 远程出发jenkins jobs
  5. java 中的instanceof的用法
  6. checkbox与文字的间距
  7. 我的博客模板(线框图wireframe)
  8. AngularJS(12)-BootStrap集成
  9. grunt学习
  10. 关于Linux的缓存内存 Cache Memory详解<转>
  11. Ubuntu14.0.4 64位安装Chrome浏览器
  12. (原)android的JNI中使用C++的类
  13. TOJ 1139.Compromise
  14. 【深圳,武汉】一加科技(One Plus)招聘,寻找不...
  15. cloudflare的新waf,用Lua实现的
  16. GridView的RowCreated与RowDataBound事件区别
  17. java中数组的排序,直接排序,冒泡排序,插入排序
  18. Ubuntu16.04 install eclipse-jee-oxygen-R-linux-gtk-x86_64
  19. Lambda转sql部分代码保存
  20. 从高德采集最新的省市区三级坐标和行政区域边界,用js在浏览器中运行

热门文章

  1. Linux centos 6 配置php环境,扩展redis
  2. 2_分布式计算框架MapReduce
  3. 01_3Java Application初步
  4. 禅与 Objective-C 编程艺术(Zen and the Art of the Objective-C Craftsmanship)
  5. 解决cocos simpleAudioEngine播放mp3失败问题
  6. AutoLayout处理UITableView动态高度
  7. Mac下快捷键的符号所对应的按键
  8. 新环境安装 python3
  9. 【转】vxworks的default boot line说明
  10. Fedora 28 系统基础配置以及常用软件安装方式