目录
一、docker简介
1、docker是什么
2、虚拟机与容器虚拟化技术对比
(1)传统虚拟机
(2)容器虚拟化技术
二、docker基本组成
1、镜像(image)
2、容器(container)
3、仓库(repository)
三、docker安装
1、确定内核版本
2、官方安装docker文档解析
3、启动docker,并验证
4、卸载docker
四、docker镜像加速器配置
Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。源代码托管在Github上,并遵从Apache2.0协议。Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。简单来说:Docker就是一种快速解决生产问题的一种技术手段。
Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案-----系统平滑移植,容器虚拟化技术。
环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。
Linux容器(Linux Containers,缩写为 LXC)
Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
(3)对比(VM&Docker)
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便
docker的优势:
更快速的应用交付和部署:传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
更便捷的升级和扩缩容:随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
更简单的系统运维:应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
更高效的计算资源利用:Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统,相当于容器的“源代码”。
再比如,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
从面向对象的角度:
Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。再比如,就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。
容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
从镜像容器的角度:
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库(Repository)是集中存放镜像文件的场所。
类似于,Maven仓库,存放各种jar包的地方;github仓库,存放各种git项目的地方;Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等。
整体架构及底层通信原理(刚开始作为了解即可)
CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.9为例。
查看自己机器的内核:
# 显示系统所有相关信息
uname -a
# -r 显示内核发行版本号
# -m 显示计算机硬件架构
# -n 显示主机名称
# -s 显示内核名称
# -v 显示内核版本
# -p 显示处理器类型
# -i 显示硬件平台
前提:centos能上互联网
查看官方centos安装文档https://docs.docker.com/engine/install/centos/
(1)卸载旧版本(如果有得话,没有就跳过)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
(2)安装依赖的包
yum -y install gcc
yum -y install gcc-c++
我的已经安装过。如下:
(3)安装方式选择
大多数用户设置Docker的存储库并从中进行安装,以便于安装和升级任务。这是推荐的方法。
(4)安装yum-utils包(它提供了yum config manager实用程序)并设置存储库
sudo yum install -y yum-utils
千万注意:在设置镜像仓库的时候,如果按照官网设置,有可能会连接失败超时,因为官网上是外国服。建议设备为阿里云的。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(5)更新yum软件包索引
yum makecache fast
(6)安装docker引擎(从这里开始才是真正安装docker)
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
此命令直接安装最新版,如有特定版本需求,可根据官网中的第二步进行选择。
开启docker服务,无回显(没有消息就是好消息)
sudo systemctl start docker
查看进程,可查看到已启动
ps -ef|grep docker
查看版本:
docker version
测试hello-world
sudo docker run hello-world
systemctl stop docker
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
阿里云官网https://www.aliyun.com/
1、并注册一个属于自己的阿里云账户
2、点击产品--容器与中间件--容器镜像服务
4、选择镜像加速器获取地址。
5、根据自身的系统,选择正确的脚本执行。并重启docker服务器
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker常用操作命令(启动类,镜像命令,容器命令)_mr__bai的博客-CSDN博客()