文章目录
- Docker初识
-
- 为什么会出现Docker
- 什么是Docker
-
- 之前的虚拟化技术
- 容器虚拟化技术
-
- Linux容器
- Docker的三要素
-
- 镜像
- 容器
- 仓库
- 小结
- Docker的安装
-
- 卸载Docker
- 安装
-
- 更新yum包
- 安装需要的软件包
- yum设置Docker的仓库
- yum查看Docker可用版本
- 启动Docker并设置开机自启
- 配置自己的阿里云镜像
-
- 登录或注册阿里云Docker
- 阿里云的Centos安装法
- 测试
- run做了什么
- Docker的原理简介
-
- Docker是怎么工作的
- 为什么Docker比VM执行快
-
- 什么是Hypervisor?
Docker初识
为什么会出现Docker
一个程序在进行迁移的时候。需要保证的条件很多才能正常的执行。
最难把控的就是环境配置每个机器上基本上都不一样。
Docker可以从系统环境开始,自底至上完整打包。
什么是Docker
Docker是基于Go语言实现的云开源项目。
Docker主要目标 Build,Ship and Run Any App,Anywhere 一次封装,到处运行。
Linux的容器技术的出现,Docker在它的基础上发展过来的。
将应用运行在Docker容器上,而Docker容器在任何操作系统上都是一致的。就实现了跨平台,跨服务器。
只需要一次配置好环境,到别的机子上就可以意见部署
java的技术我们都知道,最后都是要在Linux中进行执行的。
JDK,数据库,redis,Tomcat等
之前的虚拟化技术
java底层也是存在一个虚拟机,以至于java可以进行跨平台的进行操作。
java代码运行在虚拟机上,在由虚拟机进行将结果展示出来。
虚拟机就是带环建安装的一种解决方案
它可以在一个操作系统里面运行另一个操作系统
我们想要在window中使用Linux的功能就需要用到虚拟机
但是虚拟机,资源占用多,存在很多冗余部分
容器虚拟化技术
因为前面的虚拟机(一个操作系统中的运行另一个操作系统)
资源占用多,冗余部分杂乱
Linux发出新的虚拟化技术,Linux容器
Linux容器
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
- 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
- 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能却分计算资源。
Docker就是在此基础上出现的技术
Docker的三要素
镜像
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

容器
Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
仓库
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),
存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等
小结
Docker 本身是一个容器运行载体或称之为管理引擎。
我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。
只有通过这个镜像文件才能生成 Docker 容器。
image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。
同一个 image 文件,可以生成多个同时运行的容器实例。
Docker的安装
Docker支持CentOS6.5以上版本。并对一些版本存在要求
查看Linux的内核版本命令
uname -r
查看CentOS版本
7版本
cat /etc/redhat-release
6版本
lsb_release -a
卸载Docker
可能之前有安装过Docker可以使用该命令进行清除一下
yum remove docker docker-common docker-selinux docker-engine
安装
更新yum包
使用 root 权限更新 yum 包(生产环境中此步操作需慎重,看自己情况,学习的话随便搞)
yum -y update
这一步会做很多的操作将Linux中的yum包进行更新。
我们都知道我们可以通过yum直接在Linux中进行下载资源。
安装需要的软件包
yum-util
提供
yum-config-manager
功能,另两个是
devicemapper
驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
yum设置Docker的仓库
和Maven一样的道理,使用阿里会更加快一点。因为默认是外网仓库
下面两个都可用
# 中央仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
# 阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum查看Docker可用版本
yum list docker-ce --showduplicates | sort -r
选择准确一个版本号
yum -y install docker-ce-18.03.1.ce
启动Docker并设置开机自启
//启动
systemctl start docker
//自动启动
systemctl enable docker
配置自己的阿里云镜像
在下载镜像的的时候可以走阿里云而不是DockerHut外网。(下载会很慢)
登录或注册阿里云Docker
点这里: 开发者工具和资源
可能随着时间更新,网站就变得不一样了
进入阿里云,打开控制台
左侧的导航栏,找到容器服务→容器镜像服务
找到镜像加速器即可
按照文档继续操作
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6igp4y3f.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
阿里云的Centos安装法
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
安装效验
[email protected]:$ docker version
测试
docker run hello-word
以上就是介绍使用docker命令获取hello-world的镜像的过程,执行过程先是从自己的本地服务器上去找这个镜像。没有这个镜像之后,再去阿里云的服务器上找这个hello-world最新的镜像。
run做了什么
Docker的原理简介
Docker是怎么工作的
Docker是一个Client-Server结构的系统
Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问
守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,就是我们前面说到的集装箱。
- 我们在使用Docker的时候基本上都是通过Docker命令进行操作的。
- 客户端通过向Docker daemon发送命令进行操作主机中的镜像和容器
- 如果主机没有找到就会向远程仓库进行查找
为什么Docker比VM执行快
VM就是我们使用的虚拟机,在上面进行安装Linux系统
- docker有着比虚拟机更少的抽象层。由亍docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
- docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。