说明:
Docker
是一个操作系统级的虚拟化技术,是基于LXC
技术构建的轻量级容器引擎。与传统的虚拟化技术相比,Docker
具有更高效的系统资源利用率、更快速的启动时间、提供一致的运行环境、更轻松的迁移等众多优势。
详解docker
- 首先要明白docker到底是什么?什么是容器?什么是镜像?
举个栗子,将docker比喻成一艘轮船,那容器就是轮船上一个一个的集装箱,而镜像就是组成集装箱的基本材料
- 大白话理解了什么是镜像、容器后,来看看官方的定义吧
- 镜像:打包了运行环境的特殊文件系统,它包含了容器启动运行所需的所有信息,包括运行程序和配置数据等,镜像不包含任何动态数据,其内容在构建之后也不会改变。
- 容器:镜像是静态的定义,而容器是镜像运行时的实体,看成是一个具备某个运行环境的非常轻量的虚拟机。容器可以被创建、启动、停止和删除等。在创建容器时,需要显示地为容器指定镜像。指定镜像之后,容器就具备了镜像中保存的运行环境了。
- 二者的关系:类似于面向对象程序设计中的类和实例一样,类是镜像,对象/实例是容器
创建你的第一个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"
以上步骤的工作原理
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载启动;
- 利用镜像创建并启动一个容器;
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层;
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
- 从地址池配置一个ip地址给容器;
- 执行用户指定的启动命令;
- 执行完毕后容器被终止。
借鉴于educoder
如果你想学到更多关于docker的知识,请查阅我的分类专栏之Docker