容器初识--Docker

这个阶段闲来无事,为了不荒度光阴,总得找点事情来做做或者学习下其他的东西,也是一闪灵光,打算学习虚拟技术,从Docker开始吧。

什么是docker呢,官方定义:docker是以Docker容器为资源分割和调度的基本单位,封装了整个软件运行时环境,为开发者和系统管理者而设计的,用于构建、发布和运行分布式应用的平台。它是一个跨平台、可移植并简单易用的容器解决方案。

我搞了一段时间,目前的理解就是:在系统中被单独隔离出来的一个资源单位,你可以在这个资源单位中干你想干的事情。对于容器及其docker的理解,不是建立在表面的文字描述,而是在实践的基础上,进行总结和归纳,诚然,我的总结也可能有一定的局限性,就学习而言,理解内涵首当其中,操作实践是为深入。对于运维而言,docker提供了很大的帮助。

对于他的优点,没有真正意义上的使用过,是不能知晓的,所谓可移植性、跨平台、高资源利用率等等只有使用过才知道。

为什么从docker开始入手呢,除了方便借助SEL实验室出的那本书(书写的很不错,值得推荐),还有搜罗各式各样的资料和技术博客来学习。当前,docker几乎是容器的代名词,很多人以为docker就是容器。其实,这是错误的认识,除了docker 还有coreos。所以,容器世界里并不是只有docker一家。既然不是一家就很容易出现分歧。任何技术出现都需要一个标准来规范它,不然各搞各的很容易导致技术实现的碎片化,出现大量的冲突和冗余。因此,在2015年,由Google,Docker、CoreOS、IBM、微软、红帽等厂商联合发起的OCI(Open Container Initiative)组织成立了,并于2016年4月推出了第一个开放容器标准。标准主要包括runtime运行时标准和image镜像标准。标准的推出,有助于替成长中市场带来稳定性,让企业能放心采用容器技术,用户在打包、部署应用程序后,可以自由选择不同的容器Runtime;同时,镜像打包、建立、认证、部署、命名也都能按照统一的规范来做。

两种标准主要包含以下内容:

  1. 容器运行时标准 (runtime spec)

a). creating:使用 create 命令创建容器,这个过程称为创建中 b). created:容器创建出来,但是还没有运行,表示镜像和配置没有错误,容器能够运行在当前平台 c). running:容器的运行状态,里面的进程处于 up 状态,正在执行用户设定的任务 d). stopped:容器运行完成,或者运行出错,或者 stop 命令之后,容器处于暂停状态。这个状态,容器还有很多信息保存在平台中,并没有完全被删除

  1. 容器镜像标准(image spec)

a). 文件系统:以 layer 保存的文件系统,每个 layer 保存了和上层之间变化的部分,layer 应该保存哪些文件,怎么表示增加、修改和删除的文件等; b). config 文件:保存了文件系统的层级信息(每个层级的 hash 值,以及历史信息),以及容器运行时需要的一些信息(比如环境变量、工作目录、命令参数、mount 列表),指定了镜像在某个特定平台和系统的配置。比较接近我们使用 docker inspect 看到的内容; c). manifest 文件:镜像的 config 文件索引,有哪些 layer,额外的 annotation 信息,manifest 文件中保存了很多和当前平台有关的信息; d). index 文件:可选的文件,指向不同平台的 manifest 文件,这个文件能保证一个镜像可以跨平台使用,每个平台拥有不同的 manifest 文件,使用 index 作为索引。

这么冗长和复杂的标准,我是硬着头皮看完的,能理解一些,要深入理解的话,须得动手操作。

就从安装开始吧!

1.安装docker

我是在基于Debian的KaliLinux中学习和安装的,Ubuntu命令什么的和它都一样。键入安装命令:

apt insatall docker *

为了防止缺少依赖关系,我特地的加上通配符 ‘*’,表示安装以docker开头的所有东西。

安装成功后进行一些基本命令的使用,可能你在安装中会出现些许问题,或者是命令键入错误,或是更新源有问题、或是其他内核的Linux命令不一致等等,耐心看错误提醒,搜寻解决办法。

查看环境信息:

docker info

 仔细看,你刚安装的docker容器信息、镜像信息、服务器版本等等好多信息都可以看见

2.生命周期管理

包括docker的启动、停止、重启等。

开启docker:service docker start即可。即开启容器docker这个服务。

有几个重要的命令:

1)核心命令之一。使用docker run --help查看可用选项,有很多命令,初期是用不到的,先做了解

docker run 

这个命令用来基于特定的镜像创建一个容器,并根据选项来控制该容器。使用docker run时,Docker将自动为每个新容器分配唯一的ID作为标识。

此时就创建并且运行了一个新的docker,顺便使用--name命名为helloworld。

2)既然分配了唯一ID,那就得知道它的ID、name、创建时间运行状态等其他信息。

docker ps -a

一目了然,十分清楚,这条命令也很常用。

docker ps是列出当前运行的容器,加上-a参数是列出所有已经创建的容器

3)容器的开启、停止重启

docker start/stop/restart

比较简单,不举例

4)从镜像仓库中下载各种需要的镜像

docker pull

Docker Registry是存储容器镜像的仓库。

docker官方仓库有许多即拿即用的镜像资源,通过pull可以有效利用。体现“一次编译,到处运行”特性

使用pull时可以从官方、私人、其他公共库获取镜像。

如获取Ubuntu的镜像:

docker push:将本地的image或者repository推送到官方等镜像库中。和docker pull相反。

5)查询已存在的镜像

docker images

我已经下了好几个,为后面的简单练习做准备,只不过下载的比较慢,因为仓库的话不是国内的,如果中断,重复下载即可。

根据ID确定具体容器,也可以使用容器名来确定。

使用-i来开启交互模式,始终保持输入流开放。

使用-a附加标准输入、输出或错误输出。

此外docker stop 或者docker restart 可以使用-t来设定时间

3.容器的运维操作

容器的操作是重中之重,Docker为用户提供了丰富的容器运维操作命令

1)attach:对开发人员特别有用,可以转到正在运行的容器,观察该容器的运行情况,或与容器的主进程进行交互。

先查看正在运行的docker,然后选择要连接的docker的ID,前几位即可,不必全部把ID打出来,再docker attach。

2)inspect:查看镜像和容器的详细信息,默认会列出所有信息,可以通过format参数来指定输出的格式

docker inspect

3)ps:查看容器相关信息,-a查看所有容器,-l查看最新创建容器,包括不在运行中的容器.这个提过,不再赘述。

4.其他子命令:

commit:可以将容器固话成一个新的镜像

events、history、logs

用于查看系统日志信息:events会打印实时系统事件;history指定镜像的历史版本信息;logs进程运行日志

这些不太常用,了解下即可。

一些常用操作:

docker stop $(docker ps -aq):停止所有容器

docker rm $(docker ps -aq):删除所有容器

docker rmi $(docker images -aq):删除所有镜像

docker image prune --force --all:删除不使用的镜像

docker container prune -f:删除所有停止的容器

docker ps -aq:列出所有容器Id

为什么说常用呢,因为刚开始配置一些环境和容器,会碰到好些未知错误,也无从解决,只能删掉,然后重新搞,再慢慢找出问题所在,后面删的多了,重新搞的多了也就慢慢知道了哪里有问题,也就会解决了。

对于docker初期的了解认识以及简单的操作命令大概就是这个样子,多做练习,理解方能深入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值