docker简介

docker主页

地址:https://www.docker.com/

什么是容器?

容器是一种虚拟化的方案,与传统的虚拟机不同

传统的虚拟机通过中间层将虚拟机虚拟运行在物理硬件之上

容器则是直接运行在用户空间的

Docker的运行依赖于Linux的内核特性:Namespace和Cgroups

所以Docker上只能运行Linux系统,而不能运行Windows系统

什么是docker?

docker是一个能够把开发的应用程序自动部署到容器的开源引擎

docker源码的地址是:https://github.com/moby/moby

docker的组成?

  • Client 客户端

docker是CS架构的程序,docker的客户端向docker的服务器端,也就是docker的守护进程发出请求,守护进程处理完所有的工作并返回结果。docker对服务器的访问,既可以是本地的,也可以是远程的。

  • Daemon 守护进程
  • Image 镜像

镜像可以简单地理解为容器的源代码,docker的镜像是一个层叠的只读文件系统,其最底端是一个引导文件系统bootfs,这个我们平时不会和它交互;第二层是root文件系统rootfs,rootfs可以是一种或多种的操作系统,在传统的Linux引导过程中,root会先以只读的方式加载,当引导结束并完成了完整性检查后,才会被切换为读写模式。但在docker中,root文件系统永远只能是只读状态,并且docker利用联合加载技术(union mount)又会在root文件系统之上,加载更多的只读文件系统,联合加载的意思就是,一次加载多个文件系统,然后将各层文件系统叠加到一起,让最终的文件系统包含所有的底层文件和目录,docker将这样的文件系统称为镜像

一个镜像可以放在另外一个镜像的顶部,位于下面的镜像称为父镜像,最底部的镜像称为基础镜像,也就是root文件系统

  • Container 容器

容器通过镜像启动,docker的容器是docker的执行单元,容器中可以运行客户的一个或多个进程

当一个容器启动时,docker会在该镜像的最顶层加载一个读写文件系统,我们在docker中运行的程序,就是在这个层中执行的

当docker第一次启动一个容器时,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用到这一层上

比如要修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏,这就是docker中的一个重要技术,写时复制(copy on write)

当创建一个新容器时,docker会创建一个镜像栈,在栈的最顶层添加这个读写层

  • Registry 仓库

docker用仓库来保存用户构建的镜像

仓库分为公有和私有两种

公有的就是Docker HUB,我们可以在这个上面分享和保存自己的镜像,也可以在上面查找我们需要的镜像,节省自己构建的时间

docker简介_第1张图片

查看docker版本

docker简介_第2张图片

Ubuntu下安装docker

首先检查内核版本:

uname -a

检查Device Mapper

ls -l /sys/class/misc/device-mapper

Ubuntu下Docker的安装有两种方式,一种是Ubuntu维护的docker,这个版本比较旧,不推荐使用这个安装方式

还有一种就是用docker官方自己维护库进行安装

下面介绍第二种方法

首先检查APT的HTTPS是否支持,也就是查看这个路径下是否有http文件的存在

docker简介_第3张图片

然后用curl执行脚本安装:

curl -sSL https://get.daocloud.io/docker | sh

安装完成后查看docker的版本:

sudo docker version

docker简介_第4张图片

docker的基本操作

docker简介_第5张图片

IMAGE指定启动容器所使用的操作系统镜像,后面的COMMAND和ARG是指容器执行的命令和其参数

docker简介_第6张图片

新增加参数-i和-t,并在容器启动时运行bash命令

-i告诉守护进程,始终打开标准输入

-t表示docker,要为创建的容器分配一个伪tty终端

这样新创建的容器才能提高一个可交互式的shell

docker简介_第7张图片

-a 表示列出所有容器

-l 表示列出最新创建的容器

第一列是docker的守护进程在启动容器时为容器分配的唯一ID

最后一列是docker为容器自动分配的名字

查看之前建立的容器

inspect命令会对容器进行详细的检查,包括名称、命令、网络配置以及一些其他的数据

docker简介_第8张图片

docker简介_第9张图片

-i 参数表示可以用交互的方式

docker简介_第10张图片

你可能感兴趣的:(docker)