一、docker的初识
1.1 docker为什么出现
在docker出现以前,一款产品的上线,需要两套环境,从开发到上线的环境,和应用配置都是不太一样的。在开发环境和应用环境(开发----运维)容易出现一些问题,比如,在我的电脑上开一运行,但是,版本更新,导致服务不可用,这对于运维来讲,考验就非常大了!
在以前,环境的配置是十分的麻烦的,每一个机器都要部署环境(如:集群redis、ES等)费时费力!在服务器配置一个应用的环境(如redis、MySQL、jdk、ES等),不能够跨平台。
传统的模式是开发做的jar包,运维来做部署
Docker给以上的问题,提出了解决方案!!!
出现的docker后,开发打包部署上线,一套流程全部做完!!方便快捷!
例如:
Java---->apk----->发布(应用商店)------->使用者使用apk-------->安装即可使用!
Java----->jar(环境)------>打包项目带上环境(镜像)------->(docker仓库:商店)------->下载发布的镜像--------->直接运行即可
运维人员不需要考虑环境问题!
1.2 docker的历史
2010年,几个搞IT的年轻人在美国处理了一家公司(dotCloud),做了一些pass的云计算服务!LXC有关的容器技术!将自己的技术(容器技术)命名为Docker!Docker在刚开始的时候,没有引起行业的注意,他们的公司快活不下去的时候,他们想到了开源,在2013年,Docker开源!于2014年4月9日,Docker发布Docker1.0!
Docker 是在 Linux 容器里运行应用的一种开源工具,是一种轻量级的虚拟机,诞生于 2013 年
Docker 项目加入了 Linux 基金会,全部开源代码均在 https://github.com/docker 上进行维护,官网为 https://www.docker.com/,Docker 与 OpenStack 同为最受欢迎的云计算开源项目
Docker 的 Logo 设计为蓝色的鲸鱼,拖着许多集装箱,如上图所示,鲸鱼可以看做是宿主机,集装箱可以理解为是相互隔离的容器,每个集装箱内都有自己的应用程序
Docker 的设计理念:Build、Ship and Run Any APP,Any where,即通过对应用组件的封装、发布、部署和运行等生命周期的管理,达到应用组件级别的“一次封装、到处运行”的目的
这里的组件,可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统
1.3 Docker的功能
Docker是基于go语言开发的一个开源项目!
官网地址:https://www.docker.com/
文档地址:https://docs.docker.com/get-docker/
仓库地址:https://hub.docker.com/
虚拟机的技术缺点:
1、资源占用十分多
2、冗余步骤多
3、启动慢
比较Docker和虚拟机技术的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
- 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响。
docker的优势
-
应用更快速的交付和部署
- 传统∶一堆帮助文档,安装程序
- Docker :打包镜像发布测试,一键运行
-
更便捷的升级和扩缩容
- 使用了Docker之后,我们部署应用就和搭积木一样!
- 项目打包为一个镜像,扩展服务器A!服务器B
-
更简单的系统运维
- 在容器化之后,我们的开发,测试环境都是高度一致的。
-
更高效的计算资源利用︰
- Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。
1.4 Docker的架构图
-
镜像( image ) :
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,例如:tomcat镜像-==>run ==> tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。 -
容器( container) :
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。有着启动,停止,删除等基本命令!
目前就可以把这个容器理解为就是一个简易的linux系统 -
仓库(repository ) :
仓库就是存放镜像的地方!仓库分为公有仓库和私有仓库!
Docker Hub(默认是国外的)
阿里云…都有容器服务器(配置镜像加速!)
二、安装Docker
1、 环境查看
安装docker的系统内核比哦徐是3.10以上的!
[root@localhost ~] # uname -r
3.10.0-693.el7.x86_64
[root@localhost ~]# cat /etc/os-releaseNAME="Centos Linux"
VERSION="7 (core)"ID="centos"
ID_LIKE="rhel fedora"VERSION_ID="7"
PRETTY_NAME="Centos Linux 7 (core)"ANSI_COLOR="O; 31"
CPE_NAME="cpe : /o: centos : centos :7"HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https : / /bugs.centos. org/"
CENTOS_MANTISBT_PROJECT="Centos-7"
CENTOs_MANTISBT_PROJECT_VERSION="7"REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
请输入下面的命令试一下:因为docker-ce 17.03 之后,需要先安装docker-ce-selinux!
然后再进行镜像安装!
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新yum软件包索引
yum makecache fast
5、安装docker(docker-ce、社区、ee、企业版)
yum install docker-ce docker-ce-cli containerd.io
6、启动docker
systemctl start docker
7、查看是否安装成功
docker version
8、hello-world
docker run hello-world
9、查看下载的hello-world镜像
docker images
三、卸载docker
1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
2、删除资源
rm -rf /var/lib/docker
/var/lib/docker是docker的默认工作路径
四、安装特定版本
#列出并排序存储库中可用的版本,按按版本号(从高到低)对结果进行排序,并被截断
yum list docker-ce --showduplicates | sort -r
...
...
#卸载Docker Engine,CLI和Containerd软件包
yum remove -y docker-ce docker-ce-cli containerd.io
#主机上的映像,容器,卷或自定义配置文件不会自动删除,要删除所有图像,容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
#注:必须手动删除所有已编辑的配置文件
#例:【docker-ce-18.09.1】
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
systemctl start docker
docker version