0 场景简述
0.1虚拟化技术
所谓的虚拟化技术实际是一种资源管理技术,他可以将我们计算机中的实体资源进行虚拟化
虚拟化技术种类有很多,例如:软件虚拟化,硬件虚拟化,内存虚拟化,网络虚拟化,桌面虚拟化,虚拟机等
目的:就是为了提供我们计算机的使用率
在实际的生产环境中,虚拟化技术主要用来解决高性能的屋里硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层屋里硬件,从而最大化的利用屋里硬件对资源充分利用
0.2 虚拟化技术分类
全虚拟化架构
我们的虚拟机VMware就是利用了这种技术
操作系统可以和虚拟机系统不相同OS虚拟化架构
OS虚拟化架构出来的操作系统要和我们底层的操作系统共享系统内核(即相同的操作系统)
我们的Docker就是用了这种架构硬件层虚拟化架构
0.3 Docker容器
容器主要的作用就是装东西,比如我们的数组,集合也是容器,我们可以使用数组,集合来存储我们的数据
我们也可以使用Docker来装我们的软件,比如:我们可以把mysql安装到docker容器中,tomcar,redis,nginx都可以安装到docker中
我们把响应的软件安装到docker容器中以后好处:
- 方便我们队软件环境进行搬运
- 开发环境,测试换件,生产环境————>统一我们的软件,有了docker以后我们可以极大的减少我们的部署成本,可以把mysql安装到dicker中,这样可以直接把容器给他
- 各个容器之间是隔离状态:这样就减少了我们软件之间的影响
docker是os层虚拟化架构的一种体现产品,os层虚拟化架构虚拟出来的操作系统需要和宿主机中的操作系统共享一个内核,docker容器的体积相对较小
0.4 Docker的组件
- 客户端和服务端
在宿主机启动的所有docker容器中,启动的虚拟机都是客户端,而我们的宿主机是服务端 - 镜像
镜像是一组文件的集合,竟像是构建Docker的基石(相当于操作系统镜像,能安装操作系统),其中包括了容器的文件系统结构与内容 - 注册中心
类似于我们的Maven仓库,在注册中心中存储了很多的常用镜像,docker中的注册中心地址是docker——hub - 容器
容器就是镜像的运行实例,镜像和容器之间的关系就类似于类和对象的关系我们的容器创建时需要通过镜像来进行构建的
1 Docker的操作
1.1安装Docker
使用yum命令来进行在线安装
yun install docker
[配图]
提示信息
[配图]
输入y进行安装
[配图]
安装之后我们检查docker版本
docker -v
[配图]
1.2卸载Docker
查看docker的安装包
yum list installed|grep docker
[配图]
- 删除安装包,就是删除刚才看到的文件
yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64
删除docker镜像
rm -rf /var/lib/docker/
再次检查Docke是否删除成功
yum list installed|grep docker
[配图]
1.3启动/关闭Docker
systemctl命令是系统服务管理指令,他是service和chkconfig两个命令组合
systemctl start docker 启动docker
systemctl status docker 产看docker的启动状态
systemctl stop docker 停止docker
systemctl restart docker 重启docker
docker info 查看docker的重要信息
docker -help 查看docker的帮助文档
1.4启动Docker报错
有时候我们启动docker会报错如下
[配图]
我们查看docker状态
[配图]
这里表示的意思是此linux的内核中的SELinux不支持overlay2 graph driver,解决办法有两个,
- 要么升级内核版本(升级操作系统)
- 要么在docker里禁用selinux
--selinux-enabled=false
vi /etc/sysconfig/docker
[配图]
再次启动docker,并且查看docker状态
1.5列出镜像
列出宿主机上所有存在的镜像
docker images
第一次安装docker的时候是没有镜像的,索引我们看到的镜像信息是空的
列名 | 含义 | 备注 |
---|---|---|
PEPOSITORY | 镜像所在的仓库名称 | |
TAG | 镜像标签 | 为了区分同一个仓库下的不同镜像,Docker提供了一种标签(Tag)的功能,每个景祥在列出来的时候都带有一个标签 |
IMAGE ID | 镜像ID | |
CREATED | 创建时间 | 创建镜像的时间(不是获取镜像的时间) |
SIZE | 镜像大小 | 90 |
注:这些镜像都是存储在Docker宿主机的/var/lib/docker目录下的
1.6搜索镜像
去注册中心(docker hub)上去所属需要的镜像
docker search 镜像名
如:搜索tomcat镜像
[配图]
列名 | 含义 |
---|---|
NAME | 仓库名称 |
DESCRIPTION | 镜像描述 |
STARS | 综合评分,反应一个镜像受欢迎程度 |
OFFICIAL | 是否官方 |
AUTOMATED | 自动构建,表示该镜像由Docker Hub自动构建流程创建的 |
1.7拉取镜像
我们拉取镜像默认是从Docker Hub镜像仓库上进行获取的,在Docker Hub的官网上我们可以看到一些信息
[配图]
国情原因,国内下载Docker Hub官方的相关镜像比较慢,可以使用国内(docker.io)的一些镜像加速器,镜像保持和官方一致,关键是速度快
常用的镜像加速器有Mirror与Private Registry
区别如下
序号 | Private Registry | 备注 |
---|---|---|
1 | Private Registry(私有仓库)是开发者或者企业自建的镜像缓存库,通常用来保存企业内部的Docker镜像,用于内部开发流程和产品的发布,版本控制 | Mirror是一种代理中转服务器,我们(比如daocloud)提供的Mirror服务,直接对接Docker Hub的官方Registry。Docker Hbu上有数以十万计的各类Docker镜像 |
2 | 在使用Private Registry时,需要在Docker Pull或Dockerfile中直接接入Private Registry的地址,通常这样会导致与Private Registry的绑定,缺乏灵活性 | 使用Mirror服务,只需要在Docker守护经常(Dacmon)的配置文件中加入Mirror参数,即可在局范围内透明的访问官方的Docker Hub,避免了对Dockerfile镜像引用来源的修改 |
ustc镜像
是老牌的linux镜像服务提供者
配置ustc镜像加速
编辑文件
vi /etc/docker/daemon.json
在配置文件中配置如下内容
{
“registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn"]
}
重启docker
systemctl restart docker
如果重启docker以后还是无法进行加速,可以重启宿主机尝试
拉取镜像:
docker pull 镜像名称
拉取tomcat镜像
docker pull tomcat
1.8 删除镜像
我们可以删除指定的镜像也可以删除所有镜像
删除指定镜像
docker rmi 镜像名称/镜像ID
删除所有镜像
1
docker rmi `docker images -q`
注:中间的字符可以被当作linux的命令进行解析执行
docker images -q 获取所有镜像的ID
2 Docker容器操作
2.1 查看容器
查看正在运行的容器
docker ps
[配图]
列名 | 含义 |
---|---|
CONTAINER ID | 容器的id |
IMAGE | 创建容器时所使用的镜像 |
COMMAND | 运行容器中的软件执行的命令 |
CREATED | 容器创建时间 |
STATUS | 容器的状态:UP表示运行状态 Exited表示关闭状态 |
PORTS | 宿主机端口和容器中软件的端口的对应关系 |
NAMES | 容器名称 |
查看多有的容器(包括正在运行的容器和之前启动过的容器)
docker ps -a
查看最后一次运行的容器
docker ps -l
查看停止的容器
docker ps -f status=exited
2.2 创建容器
创建容器命令
docker run
创建容器参数介绍
参数名称 | 参数含义 |
---|---|
-i | 运行容器 |
-t | 表示容器启动后进入命令行,加入这两个参数后,容器创建就能登录进去。分配一个伪终端 |
-d | 在run后面加上-d参数,则会创建一个守护模式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后就回自动进入容器) |
–name | 为创建的容器命名 |
-v | 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到宿主机上 |
-p | 表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可以使用多个-p做多个端口映射 |
2.3 交互式容器
创建一个交互式容器取名为mycentos
docker run -it –name=mycentos centos /bin/bash
使用ps查看容器状态
[配图]
使用exit退出容器
[配图]
然后再查看容器状态
[配图]
我们退出了容器也就关闭了容器
2.4 守护式容器
创建的容器名不能重复
docker run -di –name=mycentos2 centos
创建好后我们进入这个容器
docker exec -it 容器名称/容器ID /bin/bash
2.5 停止与启动容器
停止容器
docker stop 容器名称/容器ID
启动已经关闭的容器
docker start 容器名称/容器ID
最后更新: 2018年11月30日 11:42