docker
中文意思为船坞、码头,其logo生动的解释它的作用,应用程序可以被装载在一个个集装箱当中,各个集装箱互不影响,又共用同一块地方和资源。docker
是用go语言编写的,因此非常的高效。
Docker vs 虚拟机
在容器化概念出来之前,虚拟机是我们常用的功能,当我们要在一台windos主机或者服务器运行linux的程序时,我们可以创建一个虚拟机并配置虚拟机的操作系统,相当于主机的“子主机”
一样。我们可以将应用程序放在其中并运行。
使用docker
则基于docker的运行引擎,不需要配置各自操作
- 占用资源 docker更加轻量,占用资源极少
- docker启动速度极快,虚拟机通常需要几分钟去启动
- docker中的隔离只做到进程隔离,但虚拟机可以做到系统隔离
- docker的安全性更弱,因为与主机使用同一root权限
- 目前docker的集中管理工具还不够成熟,但虚拟机方面都有十分全面的虚拟化工具。
docker和虚拟机有许多的差异,需要根据实际的开发需要来选择。
Docker三大核心概念
- 镜像
镜像提供了容器运行时所需要的环境,可以理解成编程语言中抽象的类。例如有一个Nginx
类,可以通过这个类实例化出Nginx
。 - 容器
容器就是镜像实例化
出来的实例,基于docker
的沙箱机制,每个容器都互不干扰、独立运行。容器可以被创建、启动、停止、删除等。假如我们需要一座房子,只要找到房子这个镜像,就可以创建无数个房子供我们使用。 - 仓库
仓库是存放镜像的地方。每个人都可以创建镜像并将它存放起来供自己或他人使用,镜像的创建和管理要求严格,官方仓库提供了许多非常高质量的镜像服务。
Docker简单使用
- 首先是下载并运行docker
- 可以通过
docker version
和docker info
查看docker的相关信息 docker run hello-world
,创建hello-world的容器,如果本地没有hello-world
的镜像,则会在仓库中寻找并下载docker images
查看当前本地的镜像集合docker ps -a
查看当前所有的容器集合docker rm <Container ID>
根据容器id删除对应容器docker rmi <Image ID>
根据镜像id删除对应镜像