说明:

Docker是一个操作系统级的虚拟化技术,是基于LXC技术构建的轻量级容器引擎。与传统的虚拟化技术相比,Docker具有更高效的系统资源利用率、更快速的启动时间、提供一致的运行环境、更轻松的迁移等众多优势。

详解docker

  • 首先要明白docker到底是什么?什么是容器?什么是镜像?

举个栗子,将docker比喻成一艘轮船,那容器就是轮船上一个一个的集装箱,而镜像就是组成集装箱的基本材料

 

  • 大白话理解了什么是镜像、容器后,来看看官方的定义吧
  1. 镜像:打包了运行环境的特殊文件系统,它包含了容器启动运行所需的所有信息,包括运行程序和配置数据等,镜像不包含任何动态数据,其内容在构建之后也不会改变。
  2. 容器:镜像是静态的定义,而容器是镜像运行时的实体,看成是一个具备某个运行环境的非常轻量的虚拟机。容器可以被创建、启动、停止和删除等。在创建容器时,需要显示地为容器指定镜像。指定镜像之后,容器就具备了镜像中保存的运行环境了。
  3. 二者的关系:类似于面向对象程序设计中的类和实例一样,类是镜像,对象/实例是容器

 

创建你的第一个Docker

1.获取一个镜像(从Docker Hub官方镜像仓库拉取镜像)

语法:docker pull [OPTIONS] <仓库名>:<标签>

举例:

docker pull ubuntu:latest

如果你获取镜像比较慢的话,可以去阿里云申请一个加速地址,来为你的获取官方镜像加个速

2.基于该镜像创建并启动一个容器

语法:docker run [OPTIONS] 镜像名 [COMMAND] [ARG]

举例:

docker run --name my_first_docker_container ubuntu:latest

启动后可以通过docker ps -a 来查看本地的docke所有容器情况,可以看到刚创建的容器时退出状态,至于为什么请继续看下去

3.进入该容器,执行“程序”(“Linux命令”、“shell脚本”、“C++程序”等)

就是在上一步骤的基础上添加一些执行的命令,一般第一步可以省略,因为docker run 的时候会先docker pull,这里的容器名与第二步的不一样,是因为你不能尝试去创建一个已经存在的容器,所以,一般情况下,第二步与第三步也是一起完成的

docker run --name my_first_docker ubuntu:latest echo "Hello,my first Docker"

以上步骤的工作原理

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载启动;
  2. 利用镜像创建并启动一个容器;
  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层;
  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
  5. 从地址池配置一个ip地址给容器;
  6. 执行用户指定的启动命令;
  7. 执行完毕后容器被终止。

借鉴于educoder

如果你想学到更多关于docker的知识,请查阅我的分类专栏之Docker