前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker技术分享(一)Docker基础知识

Docker技术分享(一)Docker基础知识

原创
作者头像
用户1106058
修改2020-01-10 17:28:29
1K0
修改2020-01-10 17:28:29
举报
文章被收录于专栏:Docker技术分享

Docker是什么?

Docker使用Google公司推出的Go语言进行开发实现(这也是Go大火的原因之一),基于Linux内核的cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。 Docker在linux容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 Docker技术的三大核心概念,分别是: 镜像(Image) 容器(Container) 仓库(Repository) 用程序员最能理解的话解释一下:镜像就像一个类或者源代码,构建时的东西,容器是对象或者系统,运行时的东西,仓库就是git代码库,这个没什么好解释的。

为什么要使用Docker?

说到使用Docker的好处就不得不说软件开发过程中最麻烦的事情——环境配置。从我们学习一门语言开始,我们遇到的第一件难题就是配置环境,很多新手都会被这个拦路虎给难倒,相信很多开发者都有类似的经历。这个困难会陪伴程序员一生,比如:github上下载个开源代码运行起来要配置好环境,遇到文档全,配置不多还能忍受。要是遇到一些随心的开源项目,部署起来要折腾很久。还有工作中的系统变更,新申请了一台服务器要根据系统部署要求把开发时配置环境的工作再重新做一遍,如果有测试环境、UAT环境、正式环境等多套环境那就要重复多次,开发人员深受其苦。以致于我们经常听到开发者会说:“它在我的机器上是正常的(It works on my machine)”…… 以前,在腾讯时有些系统需要项目外包,开发环境要在对方公司部署一套和腾讯内部开发大致一样的开发环境。当时的做法是用虚拟机来解决的,虚拟机的缺点太多了。

  1. 资源占用多,这个不用说了,虚拟机都是以G为单位的。
  2. 冗余步骤多,虚拟机是一套完整的操作系统,一些系统级别的操作步骤无法省去,比如用户登录。
  3. 启动慢,这个和操作系统启动时间基本一样,当时还是windows的服务器,启动一下要几分钟,甚至会更久。

Docker 在linux容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。由于linux容器是进程级别的,相比虚拟机有很多优势。

  1. 启动快 容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。
  2. 资源占用少 容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。
  3. 体积小 容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。 总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。

综上所述,Docker结合我们实际的工作场景,我总结有以下几个地方可以使用:

  1. 开发环境,如果你的项目又不怎么依赖开发网环境,可以使用Docker开发,完成后直接把Docker镜像包导入测试环境的Docker中。
  2. 测试环境,修改bug更新代码直接把已经调试好的Docker镜像发布到测试环境,可以保持和你开发环境的配置基本一致,减少环境不一致引起的问题。
  3. 正式环境,除了解决环境不一致引起的问题,发布回退再也不会出现回退不彻底的情况。

使用Docker

Docker有很多创建项目的方法,比如Dockerfile、docker-compose、docker swarm、K8s等待…… 这些大家有兴趣可以自己去学习了解一下,我这里只简单介绍下最原始的方法。 一般使用Docker开发的常规流程如下:

  1. 使用docker search命令查找你想要的镜像是在hub.docker.com是否存在,如果存在直接pull下来就可以使用了,一般常用的镜像上面都有。如果没有就拉一个系统级的镜像自己搭建就好了,搭建好了也可以推送到hub上,开源给其他人使用。1docker search centos
  2. 以centos为例,用下面命令进行pull1dcoker pull centos
  3. 从拉下来的镜像创建容器1docker run -dit --privileged -p 8088:80 -v /tmp/www:/var/www --name srv01 --restart unless-stopped centos /usr/sbin/init这个命令不做详细解释,大家有看不太懂的可以直接问我(其实我也只是会用而已)。执行完这个命令,Docker容器就运行起来了。如何查看是否运行成功呢?使用下面命令:1docker ps #或者 docker ps -a 这个命令会把没有启动的或者启动失败的容器也查找出来
  4. 进入Docker容器配置环境1docker exec -it srv01 bash进行容器后就如同进入了一个全新的Centos操作系统,你可以用yum安装你想要安装的软件。

参考:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker是什么?
  • 为什么要使用Docker?
  • 使用Docker
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档