余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

为什么要用docker?

xiyangw 2023-05-14 11:16 8 浏览 0 评论

什么是docker?恐怕90%的人脑子一闪而过的都是那张图:一条鲸鱼背上扛着一堆箱子,图片下方是大大的“docker”。 docker是什么? 是鲸鱼? 还是一堆箱子? 或者说是载着箱子的鲸鱼? ....

为什么要用docker?

这里小编不做解释,先引用一下官方的解释: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 顾名思义,docker是一个容器引擎,容器且不说,什么是引擎? 我们知道: 汽车的引擎是发动机,有了发动起,汽车才能跑起来 游戏需要游戏引擎(如Unity3D..),基于引擎的开发,能让游戏动起来。 如官言,docker也是一种引擎,基于这个引擎,开发者能让他们开发的应用处于一个有隔离性的、可移植性的容器中,以便于发布于各种机器中而无需考虑兼容性问题。 因此就不难解释,为什么docker的logo是一条装着一堆箱子的鲸鱼 这是因为:docker扮演的是图中鲸鱼的角色,而鲸鱼之上的集装箱就是一个个容器,容器中是我们开发的应用程序(不仅限于web应用),每个容器都有自己独立的环境(环境设置、网络、文件系统...),互不干扰。而每个箱子,又可以打包成一个新的镜像,放到其它服务器的docker环境中直接运行,不再需要重复安装程序运行环境。

上面的解释插入了两个生疏的概念:

镜像容器

我们先讲容器 容器,顾名思义:就是装东西的器皿,在docker中,容器就是装载我们的应用程序的器皿,在docker的logo中,容器就是一个个箱子。我们知道,运行JavaWeb应用程序需要有Tomcat,那么我们就需要创建一个Tomcat的容器,才能把我们的程序放进去运行。

那么,容器哪里来的呢

我们知道,给电脑安装Windows系统需要有Windows镜像,因此给docker安装容器也是需要镜像的,所以,通俗一点,镜像就类似于我们日常中的安装软件,甚至说是操作系统镜像更为形象点。

那容器和镜像有什么关系?

网上说是类和对象的关系,没错,但是这样的比喻没什么实际卵用。

我们知道:要运行一个web程序,需要有个Tomcat环境,需要Tomcat环境,那就下载一个Tomcat解压出来,然后把web程序放入Tomcat的webapps中启动即可,

那么在docker中要运行一个web程序,就需要有Tomcat容器,需要Tomcat容器,就得去下载Tomcat镜像(也可以自己构建),把镜像pull下来之后,运行起来,就是一个Tomcat容器,此时把web程序至于Tomcat挂载的数据目录webapps中既可以运行。

所以docker中,容器和镜像的关系更像是一种动静的关系,也就是说,存于仓库中的镜像是一个死的软件,而运行起来的容器则像是一个正在运行的程序(进程)。

###2.Docker有什么用

对docker有了清晰的了解之后,我们心里可能在想: 这玩儿对我有什么用? 我在哪里能用得上? 怎么用才对?

这里引用几个案例来让大家体会体会。

1.案例一

前几天,公司一批服务器就要到期了,由于服务器是15年购买的,硬件的性能远比现在新出的云主机低,因此决定把所有服务器都换成新一代服务器,但是小编整准备动手迁移服务器时,内心一阵阵崩溃感涌上心头,仔细一算,每台服务器都要做同样的事情: 1. 安装jdk、Tomcat、nginx 2. 配置jdk环境变量和系统变量 3. 配置Tomcat 4. 配置nginx 5. 安装项目所需的视频解码组件 6. 导入项目所需的一些特殊字体 后来决定用docker部署的办法,在每台服务器都把docker安装之后,只需要在其中一台服务器中把Tomcat镜像从镜像仓库拉取下来,把这些配置都设置好,做成一个自己的镜像上传到镜像仓库中,之后在其他几台服务器都下载自己做的镜像,运行于docker中,把代码上传,就万事大吉了。

案例二

前不久的圣诞活动中,公司临时的活动方案在程序员的加班加点中终于上线,但是一上线之后发现推广海报中的中文名字乱码,领导问责测试人员怎么没做好测试,测试很委屈的说我已经测试无数遍并且测试报告都提交了,解决了所有问题才上线的;没办法只能让服务器同事查看正式服务器中的tomcat配置,发现原来 tomcat用了默认编码方式:iso8859-1,而测试环境中是UTF-8。针对这个问题,项目组决定把开发环境迁移到docker中,在测试环境中测试无误后,把镜像打包发布到正式环境中,解决了环境不同导致的问题。

3. docker的安装

感知到docker对我们开发者的好处之后,相信大家也跃跃欲试了吧,下面 就Linux centOS(版本大于等于7.0)系统进行演示docker的安装步骤:

1.删除可能存在的旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

安装一些必备工具:

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker源:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

更新yum缓存

yum makecache fast

安装

yum install docker-ce

6.创建docker用户

温馨提示:以下操作不是必备,但是为了养成一个Linux用户的使用的良好习惯,小编不建议直接使用root操作,因此创建一个用户用来操作docker。

useradd docker_manager

docker_manager是用户名,可以根据喜好起名,创建完用户之后,设置密码

passwd docker_manager  

docker_manager_wkt

会提示输入密码和确认密码,按照提示操作即可

配置docker用户的权限

visudo

visudo是配置用户权限的文件,在命令行中输入visudo回车之后,会进入文件操作,找到“# %wheel ALL=(ALL) NOPASSWD: ALL”这一行,把前面的“#”去掉,保存文件

授权

usermod -aG wheel,docker docker_manager

启动 Docker CE

sudo systemctl enable docker sudo systemctl start docker

此时在命令行中输入“docker info”之后,能够展示docker相关信息,就表示docker安装成功。

docker info

镜像加速:

编辑daemon.json文件(首次安装daemon.json是个新文件,不要惊讶)

vim /etc/docker/daemon.json

加入以下内容:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

保存,sudo systemctl restart docker重启即可。


相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: