云计算——Docker(1)
目录
学习任务
-
认识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可以干什么
-
将一整套环境打包封装成镜像,无需重复配置环境,解决环境带来的种种问题
-
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镜像的制作步骤。】
更多推荐
所有评论(0)