一、Docker概述
1.1.1、Docker是在Linux容器里运行应用的开源工具
是一种轻量级的虚拟机。诞生于2013年,最初的发起者是dotCloud公司,后来改名为DockerIne,之后专注于Docker相关技术和产品的开发。
1.1.2、docker与传统虚拟机的区别
特性 | docker容器 | 虚拟机 |
---|---|---|
启动速度 | 毫秒 | 1-3分钟 |
计算能力损耗 | 几乎无 | 损耗50% |
性能 | 接近原生 | 弱于 |
系统支持量(单机) | 上千个 | 几十个 |
隔离性 | 资源限制 | 完全隔离 |
1.1.3、虚拟机架构图
1.1.4、Docker容器架构图
二、Docker 容器的相关技术
2.2.1、namespaces 命名空间
- 编程语言 封装–代码隔离
- 操作系统 进程.网络.文件系统
2.2.2、Docker中的命名空间
- PID 进程隔离
- NET 管理网络接口
- IPC 管理跨进程的通信访问
- MNT 管理挂载点
- UTS 隔离内核和版本标识
2.2.3、 Docker 中的 C group 控制组
- 用来分配资源
- 来源于goole
- 功能: 资源限制 优先级设定 资源计量 资源控制
三、Docker的核心概念及安装
3.3.1、镜像(image)
- Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板,比如一个镜像可以是一个完
整的CentOS操作系统环境,称为一个CentOS镜像:可以是一个安装了MySQL的应用程序,称之为一个MySQL镜像等等。 - Docker提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经做好的应用镜像来直接使用。
3.3.2、容器(container)
- Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见的,可以保证平台的安全性。还可以把容器看作是一个简易版的Linux环境,Docker利用容器来运行和隔离应用。
3.3.3、仓库(Repository)
- Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公共仓库(Public)
或者私有仓库(Private) ,这样-来当下大安在另一台机器上使用这个镜像的时候,只需要从仓库上pull下来就可以了。 - 仓库注册服务器(Registry) 是存放仓库的地方,其中包含了多个仓库,每个仓所集中存放某一类镜像, 并且使用不同的标签(tag)
来区分它们。目前最大的公共仓生是Docker Hub,其中存放了数量庞大的镜像供用户下载使用。
四、安装Docker
4.4.1、Docher安装依赖环境
yum -y install yum-utils device-mapper-persistent-data lvm2
4.4.2、设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.4.3、安装docker-ce
Yum -y install docker-ce
4.4.4、镜像加速
tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://bg2vjg6v.mirror.aliyuncs.com"]
} EOF
systemctl daemon-reload :系统参数重载
systemctl restart docker :重启服务
4.4.5、网络优化开启路由转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
五、基本管理命令——镜像
5.5.1、查看docker版本信息
5.5.2、搜索镜像
格式:docker search 镜像名
5.5.3、查看、删除、拉取、存出、载入、上传等操作
1、制作容器
docker create [选项] 镜像运行的程序 /bin/bash
-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端
2、查看容器状态(ID)
Docker ps (表示查看运行状态的)
-a(表示查看全部状态的)
3、启动容器
Docker start 容器ID
4、进入容器
Docker exec -it 容器ID /bin/bash
5、删除容器
Docker rm 容器ID (但是删除前一定要停止容器)
停止容器:
查看状态:
删除容器:
6、强大的docker run
拉取镜像、制作容器和启动容器可以用一条命令完成,即三合一,容器平稳运行三步骤:下载镜像、创建容器、启动容器。
7、批量删除容器:
docker ps -a | awk ‘{print "docker rm "$1}’ |bash
运行状态的不删除
只删除停止状态
8、查看centos 7 的网卡信息
172.17.0.2是容器IP,用于与外界通信,网桥是172.17.0.1,启动docker后,虚拟机节点生成的
9、容器导出
10、容器导入(只会生成镜像,不会创建容器)
先删除容器之后再把镜像删除此时导入容器的镜像便可看见本地镜像有centos7这个镜像而容器中则没有