本文旨在用最通俗的语言讲述最枯燥的基本知识linux
最近Docker忽然火得不得了,处处都是谈论Docker的声音,相信你们和小编同样的心情,看这个东西有点高大上,但尝试去阅读Docker文章时又发现概念很模糊、不接地气、难以理解、无从下手…因而三天打鱼两天晒网,最终不了了之,反正公司也没要求用这玩意儿,不费劲了…nginx
这不,当前几天项目要求快速上线而且部署多台服务器环境时,小编一台一台服务器的yum install、vim、restart…想屎的心都有,那时小编内心想要是有一个这么一个U盘,能把整个环境一台一台的Ctrl+V过去,那该多好啊。那时脑子一会儿闪过一个念头:Docker不就是我想拥有的那个U盘吗。程序员
怀着这样的一个念头,小编花了一些时间去查阅Docker相关的书籍、看视频、逛论坛,刚开始学习时很是难受,搞不懂什么是容器什么是镜像什么是鲸鱼船…而涉及到一些原理底层的知识,书籍里的那些概念比代码都能懂,小编硬啃了一段时间而且实操了几回以后,再回过头来,才豁然开朗。念及许多想要学Docker却苦于难以入门的开发者们,正在学习却很挣扎的初学者们,故而把小编这段时间的学习成果,以一个初学者的角度,遵循按部就班的原则,编成一份通俗易懂的文章,但愿能以此引导入门,早日成Docker大神。web
文章提纲:docker
- 什么是Docker
- Docker对咱们有什么用处
- Docker安装和使用
- 彩蛋
什么是docker?恐怕90%的人脑子一闪而过的都是那张图:一条鲸鱼背上扛着一堆箱子,图片下方是大大的“docker”。
docker是什么?
是鲸鱼?
仍是一堆箱子?
或者说是载着箱子的鲸鱼?
….
编程
上面的解释插入了两个生疏的概念:json
- 镜像
- 容器
咱们先讲容器
容器,顾名思义:就是装东西的器皿,在docker中,容器就是装载咱们的应用程序的器皿,在docker的logo中,容器就是一个个箱子。咱们知道,运行JavaWeb应用程序须要有Tomcat,那么咱们就须要建立一个Tomcat的容器,才能把咱们的程序放进去运行。vim
那么,容器哪里来的呢centos
咱们知道,给电脑安装Windows系统须要有Windows镜像,所以给docker安装容器也是须要镜像的,因此,通俗一点,镜像就相似于咱们平常中的安装软件,甚至说是操做系统镜像更为形象点。缓存
那容器和镜像有什么关系?
网上说是类和对象的关系,没错,可是这样的比喻没什么实际卵用。
咱们知道:要运行一个web程序,须要有个Tomcat环境,须要Tomcat环境,那就下载一个Tomcat解压出来,而后把web程序放入Tomcat的webapps中启动便可,
那么在docker中要运行一个web程序,就须要有Tomcat容器,须要Tomcat容器,就得去下载Tomcat镜像(也能够本身构建),把镜像pull下来以后,运行起来,就是一个Tomcat容器,此时把web程序至于Tomcat挂载的数据目录webapps中既能够运行。
因此docker中,容器和镜像的关系更像是一种动静的关系,也就是说,存于仓库中的镜像是一个死的软件,而运行起来的容器则像是一个正在运行的程序(进程)。
对docker有了清晰的了解以后,咱们内心可能在想:
这玩儿对我有什么用?
我在哪里能用得上?
怎么用才对?
这里引用几个案例来让你们体会体会。
1.案例一
前几天,公司一批服务器就要到期了,因为服务器是15年购买的,硬件的性能远比如今新出的云主机低,所以决定把全部服务器都换成新一代服务器,可是小编整准备动手迁移服务器时,心里一阵阵崩溃感涌上心头,仔细一算,每台服务器都要作一样的事情:
- 案例二
前不久的圣诞活动中,公司临时的活动方案在程序员的加班加点中终于上线,可是一上线以后发现推广海报中的中文名字乱码,领导问责测试人员怎么没作好测试,测试很委屈的说我已经测试无数遍而且测试报告都提交了,解决了全部问题才上线的;没办法只能让服务器同事查看正式服务器中的tomcat配置,发现原来 tomcat用了默认编码方式:iso8859-1,而测试环境中是UTF-8。针对这个问题,项目组决定把开发环境迁移到docker中,在测试环境中测试无误后,把镜像打包发布到正式环境中,解决了环境不一样致使的问题。
感知到docker对咱们开发者的好处以后,相信你们也跃跃欲试了吧,下面
就Linux centOS(版本大于等于7.0)系统进行演示docker的安装步骤:
1.删除可能存在的旧版本
1sudo yum remove docker \
2 docker-client \
3 docker-client-latest \
4 docker-common \
5 docker-latest \
6 docker-latest-logrotate \
7 docker-logrotate \
8 docker-selinux \
9 docker-engine-selinux \
10 docker-engine
复制代码
- 安装一些必备工具:
1yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码
- 添加Docker源:
1yum-config-manager \
2 --add-repo \
3 https://download.docker.com/linux/centos/docker-ce.repo
复制代码
- 更新yum缓存
1yum makecache fast
复制代码
- 安装
1yum install docker-ce
复制代码
6.建立docker用户
舒适提示:如下操做不是必备,可是为了养成一个Linux用户的使用的良好习惯,小编不建议直接使用root操做,所以建立一个用户用来操做docker。
1useradd docker_manager
复制代码
docker_manager是用户名,能够根据喜爱起名,建立完用户以后,设置密码
1passwd docker_manager
2
3docker_manager_wkt
复制代码
会提示输入密码和确认密码,按照提示操做便可
- 配置docker用户的权限
1visudo
复制代码
visudo是配置用户权限的文件,在命令行中输入visudo回车以后,会进入文件操做,找到“# %wheel ALL=(ALL) NOPASSWD: ALL”这一行,把前面的“#”去掉,保存文件
- 受权
1usermod -aG wheel,docker docker_manager
复制代码
- 启动 Docker CE
sudo systemctl enable docker
sudo systemctl start docker
此时在命令行中输入“docker info”以后,可以展现docker相关信息,就表示docker安装成功。
1docker info
复制代码
- 镜像加速:
编辑daemon.json文件(首次安装daemon.json是个新文件,不要惊讶)
1vim /etc/docker/daemon.json
复制代码
加入如下内容:
1{
2 "registry-mirrors": [
3 "https://registry.docker-cn.com"
4 ]
5}
复制代码
保存,sudo systemctl restart docker重启便可。
上面针对docker使用了一种比较通俗诙谐的语言来说述,也是为了方便读者能容易的解读和理解,理解而且成功安装docker以后,大家就会千方百计的要把本身的web项目部署到docker了,这我没说错吧,你们能够网上查找一些资料去学习这一块,固然也能够选择:
关!注!我!
下篇文章我会对docker网络、数据卷、经常使用操做命令和建立本身的docker镜像、上传镜像等作一个全面的解答,以后会docker部署web项目的流程、以及运行Redis、MongoDB、nginx等经常使用软件作一些例子讲解。
以为本文对你有帮助?请分享给更多人
关注「编程无界」,提高装逼技能![]()