docker(1)https://developer.aliyun.com/article/1530609
容器
- 从面向对象角度
Docker利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虛拟化的运行环
境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜
像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台 - 从镜像容器角度
可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库
仓库(Reppsitory) 是集中存放镜像文件的场所。
类似于
Maven仓库,存放各种jar包的地方;
github仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(Public) 和私有仓库(Private) 两种形式。
最大的公开仓库是==Docker Hub(ttps://hub.docker.com/),==存放了数量庞大的镜像供用户下载。
国内的公开仓库包括阿里云、网易云等
总结
需要正确理解仓库/镜像/容器的概念:
docker本身是一个容器运行载体或称之为管理引擎.我们把应用程序和配置打包正好形成一个可以交付的运行环境,这个打包好的运行环境就是image镜像文件.只有通过这个镜像文件才能生成Docker容器实例(相当于java new出来的一个对象)
image文件可以看作是容器的模板。Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器
实例。
镜像文件
- image文件生成的容器实例,本身也是一一个文件,称为镜像文件。
容器实例
- 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建-一个对应的运行实例,也就是我们的容器
仓库
- 就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了。
2.docker入门图解
3.docker平台架构
Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。
Docker运行的基本流程为:
1用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
2 Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求。
3 Docker Engine执行Docker内部的一系列工作,每-项工作都是以- 一个Job的形式的存在。
4 Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储。
5当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境。
6当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成。
7 Libcontainer是-项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。
最终操作的是一个迷你版的docker容器实例(里面有阉割版的linux)
4.安装
https://docs.docker.com/engine/install/centos/
yum -y install gcc
yum -y install gcc-c++
配置镜像仓库
- 安装 yum-utils包
sudo yum install -y yum-utils
- 设置存储库,这里官网上给的仓库地址不连外网会非常慢,我们使用阿里云镜像
sudo yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum
yum makecache
5.阿里云镜像加速
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
加速器地址
https://cznhpi5o.mirror.aliyuncs.com
1. 安装/升级Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce
2. 配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://cznhpi5o.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
6. 为什么Docker比vm快
(1)docker有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
三,常用命令
1.帮助启动类命令
- 启动docker:systemctl start docker
- 停止docker:systemctl stop docker
- 重启docker:systemctl restart docker
- 查看docker状态:systemctl status docker
- 开机启动: systemctl enable docker
- 查看docker概要信息: docker info
- 查看docker总体帮助文档: docker --help
- 查看docker命令帮助文档: docker具体命令 --help
2.镜像命令
- docker images 列出本地的所有镜像 OPRIONS说明
- -a列出本地所有镜像(含历史映像层)
- -q只显示镜像ID
- docker search某个xxx镜像名字
- OPTIONS说明:
- –limnit: 只列出N个镜像,默认25个
- docker search --limit 5 redis
- 某个xXx镜像名字
- docker system df查看镜像/容器/数据卷所占的空间圆
- docker rmi某个xxx镜像名字ID 删除镜像
- 面试题:谈谈docker虛悬镜像是什么?