Docker 入门。
Docker简介
什么是docker?
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
为什么使用Docker?
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
1、更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
2、更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
3、更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4、更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
Docker相关概念
Docker是CS架构,主要有两个概念:
- Docker daemon: 运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互
- Docker client: Docker 命令行工具,是用户使用Docker的主要方式,Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon
了解了Docker的组成,再来了解一下Docker的三个主要概念:
- Docker image(镜像):镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过DockerFile创建,也可以从Docker hub/registry上下载。
- Docker container(容器):容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
- Docker hub/registry(): 共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为
https://registry.hub.docker.com/
,也可以搭建自己私有的Docker registry。
镜像就相当于打包好的版本,镜像启动之后运行在容器中,仓库就是装存储镜像的地方。
Docker安装配置
Docker的入门安装
建议在linux环境下安装Docker,window环境搭建比较复杂且容易出错,使用Centos7+yum来安装Docker环境很方便。
以下安装过程参考 Docker官方文档
1、安装之前需要先卸载旧的docker(如果有)
1 | yum remove docker \ |
2、下载yum-util 包
1 | yum install -y yum-utils |
3、设置镜像仓库
1 | yum-config-manager \ |
4、更新yum软件包索引
1 | yum makecache fast |
5、安装docker
1 | docker-ce社区版(推荐) ee企业版 |
6、启动docker
1 | systemctl start docker.service |
使用 docker version
命令查看docker版本
7、Hello World 案例
下面,我们通过最简单的 image 文件”hello world”,感受一下 Docker。
可以通过以下命令运行hello-world
1 | docker run hello-world |
第一次时,docker未能在本地找到相应的hello-world镜像,便去远程仓库下载。
完成后可以使用如下命令查看镜像。
1 | docker images |
输出这段提示以后,hello world就会停止运行,容器自动终止。有些容器不会自动终止,因为提供的是服务,比如Mysql镜像等。
8、卸载docker
1 | 1、卸载依赖 |
配置阿里云的镜像加速
登录阿里云控制台,找到容器镜像服务,找到镜像加速器,选择centos
按照下面的 命令提示,输入自己的阿里云镜像加速命令即可
底层原理
Docker是怎么工作的?
docker是一个 C-S结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问。
DockerServer 接受 DockerClient 的指令,就会执行这个命令。
Docker为什么比 VM 快 ?
1、Docker有着比虚拟机更少的抽象层。
2、docker利用的是宿主机的内核,VM 需要是Guest OS。
OS :操作系统
VM(虚拟机)里的OS 称为 GuestOS
物理机里的OS 称为 HostOS
所以说,新建一个容器的时候,docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别的;而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级别!
之后学习完毕所有的命令,再回过头来看这段理论,就会很清晰!