在介绍Docker之前,推荐大家一本我刚接触java的时候读过的书《java编程思想》,这是一本零几年出版的书,在这本书上对java未来做出的推断,里面就提到了微服务,容器和镜像的思想。而今天说的Docker就是运用的容器➕镜像实现的。
Docker的简介
Docker是我们开发人员和系统管理员使用容器开发部署和运行应用程序的平台,使用Linux容器来部署应用程序称为集装箱化,这得使用docker可轻松部署应用程序。有了他之后,我们把应用或者代码部署到一个系统上,只需要把几行命令迁移即可,而不用像以前一样,再重新去搭建和部署。他可以给我们提供一次性的环境,也可以随开随关,扩容和缩容,还可以通过多个容器,使一台机器可以跑多个服务,模拟出微服务架构,特别适合微服务的架构。而想要基本使用他,要从他的安装、启动、镜像、容器操作入手。
1.Docker安装前的环境准备
在这里我使用的环境是CentOS,因此我们要将Docker安装到CentOS上,这里建议安装在CentOS7.x以上的版本。我使用VMware的虚拟机中安装了Centos7。直接打开提供好的虚拟机文件挂载,挂载后,先设置内存大小,但不能超过宿主机的内存大小。接下来启动虚拟机,启动成功后,需要用户名和密码登陆。在cmd里使用ip addr或ifconfig命令查看虚拟机系统的IP,使用客户端SecureCRT软件,连接该IP的主机。
2.Docker的安装
在安装前我们要进行依赖性检查,需要一个64位系统的红帽系统,内核的版本必须大于3.10,可以通过下面的命令来查看linux内核版本。
方式一:查看已经安装后的软件。
操作前的准备
在操作Docker之前我们要了解他的四个基本对象的概念,第一个镜像:镜像是构建 Docker 容器的基石,类似虚拟机镜像,Docker镜像是由文件系统叠加而成(是一种文件的存储形式);第二个容器:容器是镜像的一个运行实例,是一个运行环境,类似linux系统环境;第三个注册中心:注册中心来保存用户构建的镜像,注册服务器是存放仓库的地方。根据存储的镜像公开分享与否,Docker仓库分为公开仓库(Public)和私有仓库(Private)两种形式。Docker 公司运营公共的Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的镜像。我这里先使用默认的Docker Hub;第四个仓库:注册中心服务器是存放仓库的地方,其上往往存放着多个仓库。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag 标记,类似于版本号)来进行区分。
3.注册中心的国内加速镜像(Mirror)的配置
因为官方的docker服务器在国外,比较慢。一般要配置使用国内注册中心加速镜像。常见的加速镜像地址,第一个中科大镜像: 中科大Docker加速镜像地址:docker.mirrors.ustc.edu.cn 中科大Docker加速镜像官网说明:lug.ustc.edu.cn/wiki/mirror… 中科大Linux加速镜像官网说明:mirrors.ustc.edu.cn/ 第二个Docker中国区官方镜像:Docker中国官方镜像加速-地址:registry.docker-cn.com Docker中国官方镜像加速-官网说明:www.docker-cn.com/registry-mi… 第三个阿里的docker镜像,因为需要注册所以详情可以上网查找。
我这里使用中科大的加速镜像,配置如下,首先编辑daemon.json文件(没有该文件的话,请先建一个)
4.镜像的操作
第一步先查询一下Docker Hub上有没有需要的镜像
5.容器的操作
第一步列出容器
- -i:保持标准输入(STDIN)打开,可实现交互式输入输出。该参数也可以写成--interactive=true。
- -t:分配一个伪终端(pseudo-TTY:伪终端、虚拟控制台),用于交互式的输入输出,必须有
-i参数。该参数也可以写成--tty =true。 - bash:分配伪终端时要在容器上执行的执行,这里使用的linux的bash脚本命令,该命令完整写法为/bin/bash。
- 因为run和镜像名字之间的选项没有顺序,但命令必须放到镜像名字之后。
最后是守护式容器的创建,创建一个需要长期运行的容器并打印容器ID。
- -d:在后台运行容器并打印容器ID。该参数也可以写成--detach或--detach=true。
登陆守护式容器方式:
第三步容器的停止
- -v:将当前工作目录装载到容器中。绑定装载卷的宿主机目录不存在时,Docker会自动在宿主机上为您创建这个目录。
- --read-only:将容器的根文件系统安装为只读。卷的挂载可以与只读标志选项 --read-only 结合使用,用于控制容器对文件是否能写入。只读标志将容器的根文件系统挂载为只读,禁止向容器指定卷以外的位置写入。容器中只有挂载的目录是可写的,其他的目录无法写入,从而保护容器。
如果将宿主机上的/root/myvolume目录挂载到mycentos3中的/myvolume目录中:
6.案例-Redis部署
目标:使用Docker部署一个Redis,并通过客户端连接访问。
第一步:拉取Redis镜像
案例-MySQL部署
目标:使用Docker部署一个MySQL,并通过客户端连接访问。
第一步:拉取MySQL镜像
- -e:代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
第三步cmd远程测试连接,首先进入mysql容器
案例-Tomcat部署
目标:使用Docker部署一个Tomcat,并部署应用来访问。
第一步:拉取tomcat镜像
数据的备份和迁移
第一步将容器提交为新镜像,根据容器的更改创建新镜像,即基于原始镜像,将其运行的容器中更改的内容,来生成新的镜像。
总结
Docker我们先从他的镜像、容器、注册中心、仓库四个概念入手,然后从他的安装、启动、镜像、容器这四个熟练操作,最后就是他里面数据的备份和迁移的了解,就可以基本使用Docker,下面展示一张Docker的基础学习示意图。