目录

学习任务

认识Docker

熟悉Docker的常用命令

制作一个kodexplorer网盘docker镜像

 认识Docker  

Docker诞生的背景

Docker的历史

Docker是什么

Docker可以干什么

为什么需要Docker

熟悉Docker的常用命令

制作Kodexplorer网盘docker镜像


学习任务

  • 认识Docker
  • 熟悉Docker的常用命令
  • 制作一个kodexplorer网盘docker镜像

 认识Docker  

【Docker 项目诞生于2013年初,最初是dotCloud公司内部的一个业余项目,基于Google公司推出的Go语言实现。项目后来加入了Linux基金会,遵从了Apache 2.0协议,项目代码在GitHub上进行维护】

  • Docker诞生的背景

        一个新技术的普及过程中,除了带有技术本身的酷炫色彩,一定也伴随着生产效率的提升和成本的降低。

        在软件产品的传统开发流程中,软件从开发到上线,从操作系统安装,到运行环境依赖,再到应用配置,需要消耗大量技术资源在很多琐碎无意义的运维工作上。

        随着虚拟机和云计算的普及,许多公司开始租用 AWS 或 OpenStack 的虚拟机,用脚本在这些机器上自动化部署,但这个过程中会碰到云端虚拟机和本地环境不一致的问题,解决起来依旧费时费力。

        为了解决这些问题,PaaS 平台服务(Platform-as-a-service)诞生了。PaaS 有应用托管的能力,提供与开发环境相同的运行环境。PaaS 会为每一个应用单独创建一个隔离环境,然后再隔离环境中启动这些应用进程,从而达到多个用户的应用互不干涉地再虚拟机里批量、自动运行起来地目的。

        而 Docker 就属于新一代地 PaaS 项目,它脱胎于 Linux Container (LXC)技术,与先前的 PaaS 不同的是, Docker 把 Cgroups 、 Namespace 和 UnionFS 等一系列技术整合起来,极大地降低了容器技术的复杂度,提升了开发者的用户体验。 Docker 公司定义了以容器镜像为标准的应用打包格式,并且建立 Docker Hub 服务进行镜像分发和协作。这些举措迅速创建了一个良好的社区和合作伙伴生态圈,其中包括 AWS 、Google 、Microsoft 、IBM 等行业巨头和国内的众多公司。

【说白了,PaaS 平台服务的诞生就是为了解决云端虚拟机和本地环境不一致、应用之间需要隔离的问题,而Docker则是在原先PaaS 平台服务的基础上进行了进一步的提升,定义了以容器镜像为标准的应用打包格式。其主要目的还是为了提升生产效率和降低成本,并提升开发者的用户体验】 

  • Docker的历史

        2010年,几个做IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为 “Docker”。

        Docker 技术诞生之后,并没有引起行业的关注。而 dotCloud公司 作为一家小型创业企业,在激烈的竞争之下,也步履维艰。就在他们快要坚持不下去的时候,“开源”的想法脱颖而出。

        2013年,dotCloud公司 的创始人之一,Docker之父——Solomon Hykes 正式决定,将Docker项目开源。

        正是这一策略的实施,越来越多的IT工程师发现了 Docker 的优点,然后蜂拥而至,加入到 Docker 开源社区。Docker 的人气迅速攀升,速度之快,令人膛目结舌。

        开源当月,Docker 0.1 版本发布。此后的每一个月, Docker 都会发布一个版本,到2014年6月9日,Docker 1.0版本正式发布。此时的Docker 已经成为行业里人气最火爆的开源技术,没有之一。

        Docker 火了之后,dotCloud 公司就干脆把公司名字也改成了 Docker Inc 。

  • Docker是什么

        Docker 是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上。

        Docker 的 Logo如下所示

Docker 的 Logo 生动描述了 Docker 这个产品的本质:软件行业的集装箱。

        【集装箱是指具有一定强度、刚度和规格专供周转使用的大型装货容器。对于绝大多数的货物,我们不需要专门定制化运输船。在一艘大型货船上,各种各样的货物被集装箱标准化,可以把货物规整地摆放运输,各个集装箱之间互相隔离,不会影响】

我们将 Docker 与集装箱做个类比,方便我们更好地理解 Docker :

                

传统行业集装箱 Docker
货物的实体 软件应用和自身运行依赖的环境
具有统一的规格,便于运输 运行环境的统一性
与外界环境隔离 容器之间互不影响

  • Docker可以干什么
  1. 将一整套环境打包封装成镜像,无需重复配置环境,解决环境带来的种种问题

  2. Docker容器间是进程隔离的,谁也不会影响谁

  • 为什么需要 Docker

对企业来说:

        Docker 是世界领先的软件容器平台

        开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题

        运维人员利用 Docker 可以在隔离容器中并运行和管理应用,获得更好的计算密度

        企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能

对个人来说:

        掌握使用 Docker 使用可以提升自身竞争力,

        Docker 在日常使用中也可以提供不少便利

熟悉Docker的常用命令

docker search 镜像名    (搜索仓库镜像)

docker pull 镜像名    (拉取镜像)

docker ps     (查看目前正在运行的所有容器)

docker ps -a  (查看所有容器,包括已经停止的容器)

docker commit 容器名  自定义镜像名  (将容器打包成镜像)

docker images (查看docker镜像)

docker rmi image_id/image_name    (删除镜像)

docker build    (使用Dockerfile创建镜像)

docker run    (运行容器) (例如:docker run -d -p 宿主机端口:容器端口 --name 自定义容器名 镜像)

【注:

        run(创建并启动一个容器)=build&start
        -d 后台存放
        -p 端口映射
        -it 分配交互式的终端(安装容器要给)
        --name 自定义一个名字】

docker exec -it ... /bin/bash   (进入容器中执行命令) (例如:docker exec -it  container_id/container_name /bin/bash)

docker logs  container_id/container_name   (查看容器日志)(例如:docker logs -f -t --tail 10 container_id )

docker start  container_id/container_name    (启动容器)

docker restart  container_id/container_name    (重启容器)

docker stop container_id/container_name    (停止容器)

docker rm -f container_id/container_name    (删除容器)(只能删除已停止的容器)

docker rm -f `docker ps -a` (删除所有的容器)

制作Kodexplorer网盘docker镜像

【本章内容较多,所以分两篇发送。第一篇主要是理论部分,即Docker的简单介绍和Docker的一些常用命令,第二篇则是实践部分,即Kodexplorer网盘docker镜像的制作步骤。】

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐