作者:潘吉祥
为什么学习docker
近年来微服务架构真的是非常流行了,作为开发者,即时你没有做过微服务,但肯定谈论过它或者听别人谈论过它。那么我们的docker和微服务之间究竟有着什么联系呢?
众所周知,微服务架构强调的是服务拆分,把一个大的系统拆分成多个小的系统,每个小系统提供的服务相互协作组成原来完整的大系统,然后就可以在每个小系统的基础上进行横向扩展,也就是集群,以此提高系统的服务能力,本质上就是分而治之的理念。
关键点来了,开发人员负责开发每个小系统,运维人员负责部署扩展,事实上这通常不是件一帆风顺的转交过程,会发生各种意想不到的情况。敲黑板,docker就可以成为解决这种情况的利器。
docker的实质就是一种容器虚拟化技术,使用docker可以把开发者开发的小系统制成镜像,丢给运维人员,运维人员只需要在机器上安装docker就可以运行这个镜像,如果横向扩展,可以运行多个镜像,一切OK!
如此一来,开发者只需要关心系统逻辑的开发,运维只需要管理镜像的运行!由此看来,使用docker可以大大缩短代码从开发、测试到部署、上线运行的周期,而且让代码具备超强的移植性,只要跑服务的机器上安装docker即可。此外,docker鼓励单个容器运行单个应用服务,服务于服务之间就表现为多个容器的互联,进行这对于构建微服务架构是非常有利的。
说了这么多,接下来就来学习这个神奇的码头工吧!(docker原义为码头工人,搬运工,这与docker的工作设计理念是一致的)
docker安装
作为入门教程,安装必不可少,因为现在的不少教程是存在些遗漏的,直接用安装好的docker,以至于初学者在软件环境上遇到不少难题(说实话,这也是我遇到过的,着实很坑)
这里我使用的虚拟镜像是centOS7,注意如果使用centOS6版本的话内核对于docker的一些操作是不完全支持的;软件是virtueBox,本人以前最先使用的是VMware,但是有时候会出现服务自动挂掉的情况,后来换了virtueBox,就一直在使用这个了,也向大家推荐一下。
以下操作为本人亲自操作,放心实战!
使用root角色登录centOS
1.首先建议大家关掉防火墙
systemctl disable firewalld 开机禁止启动
2.更新yum包
yum update
3.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
4.设置docker软件安装包的下载yum源为阿里云(注意理解:不是docker下载镜像的源)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.接下来就可以安装啦(如果不设置第四步,这里的下载会很慢,我这里已经6M/s了)
yum install docker-ce
6.安装成功之后我们可以查看当前的docker版本
docker –v
7.设置docker获取镜像的加速源,这个很重要,默认的国外源几乎是无法使用的(通过docker我们可以拉取网上已经有的各种镜像如redis,nginx等,就像设置maven的pom源)这里我们选择了阿里云的加速地址:
https://bjtzu1jb.mirror.aliyuncs.com
创建docker镜像加速配置:
vi -p /etc/docker/daemon.json
在文件中添加如下内容
{
"registry-mirrors":["https://bjtzu1jb.mirror.aliyuncs.com"]
}
保存退出,到此docker的安装已经完毕了。
docker使用
1.启动docker
systemctlstart docker
此时我们可以查看docker的信息
docker info
可以看到我们上面的配置已经生效了。
停止、重启、和开机启动:
systemctl stop/restart/enable docker
docker常用命令
1.搜索镜像(下载的镜像通过一条简单的命令创建容器就可以直接运行)
docker search 镜像名
例如我们搜索redis的镜像:docker search redis
参数:
NAME:镜像的仓库名
DESCRIPTION:镜像描述
STARS:用户评价,即用户欢迎程度
OFFICIAL:是否官方
2.下载(拉取)镜像
docker pull 镜像名:版本
例如:docker pull nginx 如果不加版本默认会为我们下载latest版本
3.查看镜像
docker images
可以看到我们刚才下载的镜像,这些镜像都是存储在Docker宿主机的/var/lib/docker目录下,参数意义:
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
需要注意的是根据镜像id可以确定唯一一个镜像,而镜像名+标签才能确定唯一一个镜像。
4.删除镜像
docker rmi 镜像id (我们通常地使用id来删除或者运行指定的镜像。)
关于容器(镜像)的运行、创建我们放在下一篇,关注不迷路哦!
END
【推荐阅读】
Dubbo爆出严重漏洞!可导致网站被控制、数据泄露!附解决方案
终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
又一个吊打百度网盘的开源神器,还是99年妹子开发的
阿里面试官:分别说说微信和淘宝扫码登录背后的实现原理?
6 个接私活的网站,你有技术就有钱!
你们心心念念的 GitHub 客户端终于来了!
1000 行 MySQL 学习笔记,史上最全珍藏版!
正在家里愉快办公,突然被通知公司倒闭,员工:没想到来得这么快
感谢阅读,请扫码关注
明天见