一、什么是Docker容器

Docker的思想来自于集装箱, 是一个以容器的形式将应用程序及其所有依赖项打包在一起的平台。它使用容器使应用程序的创建、部署和运行变得更加容易。Docker 在容器内绑定应用程序及其依赖项。容器允许开发人员将应用程序及其所需的所有部分(例如库和其他依赖项)打包在一起,然后将其作为一个包发送出去。docker的主要目标是"Build,Ship and Run any App,Angwhere",构建,运输,处处运行。

二、Docker三大核心概念:

镜像::镜像是docker的前置条件,就比如你需要电脑上安装一个app,前提是你得去软件中心下载它所对应的exe安装包;如果你要在docker中你需要构建一个mysql容器,那么你得先准备一个mysql镜像;

容器::容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见、互不影响,可以分别将其启动、开始、停止、删除;每个容器都有唯一的标识ID,只需要操作id或者名称加版本就可以;

仓库: 类似代码仓库,是集中存放 Docker 镜像文件的地方。最大的公开仓库是官方提供的 Docker Hub,其中存放着数量庞大的镜像供我们下载使用。国内也有不少云服务提供商也提供了仓库的本地源,为我们提供稳定的国内访问。我们创建好自有镜像后就可以使用 push 命令将它上传到指定的公有或者私有仓库。这样其他人就可以在另外一台机器上下载并使用该镜像,这很像 Git 代码仓库的管理与使用方式。

三、举例解释

我需要盖一座别墅,于是我找设计人员设计结构、运输原材料、建筑工人盖房子等等一系列操作,花了很长时间才盖好;住了一段时间,我想去海边住,我还想要现在这种结构和布局,那么又得按照原来的方式找设计人员设计结构、运输原材料、建筑工人盖房子等等一系列操作,这时候出现一个魔法师,他可以将我的别墅复制一份做成镜像,到了海边,我就用这个镜像复制一套别墅,直接入住。

回归实际开发运维环境中,别墅就是一套系统,盖房的过程就是项目部署过程(安装mysql/postgres、jdk、redis、nginx、中间件、配置各种环境等等),但是每部署一套系统都需要重复步骤,很花费精力和时间,而且还需要考虑版本兼容问题; 那么我们就用docker来解决这个问题;用docker部署好之后,只需要重新拉取镜像随便复制一份就可以,不用再关注版本、兼容、部署等问题。

四、Dokcer的作用

解决环境和切换的问题
比如说装Linux虚拟机,重装Windows系统,都是需要一个叫镜像的东西,我们通过这个镜像来装系统,docker就是这种思想,把环境打包,用的时候直接拉取就可以。

更快速的交付和部署
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

高效的部署和扩容
Docker容器可以打包为镜像文件(类似VM虚拟机的那些快照文件),迁移的时候我们只需要在新服务器上安装docker,就能把之前打包好的镜像文件导入到docker里面,运行容器,就能实现访问,不需要重新配置环境。

轻量、消耗少
使用Docker能合并多个服务以降低费用,不多的操作系统内存占用,跨实例共享多个空闲的内存,这些技术让Docker能以更加紧密的资源提供更有效的服务合并。基于LXC轻量级特点,启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,在单机环境下与KVM之类的虚拟化方案相比,能够更加快速和占用更少资源。

更高的资源利用率
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。

更简单的管理
它有可视化ui界面,展示整个docker环境的容器列表,容器状态,容器属性、容器创建等,可以对容器进行相关的操作,如容器的基本信息、启停、删除、状态监控(CPU、内存、网络情况)、日志查看、进入容器终端(docker exec)。目前市面有很多,可以搜索docker管理界面软件。

五、centos安装Docker

安装步骤

1,使用 root 权限登录 Centos,确保 yum 包更新到最新

sudo yum update

2,如果安装过旧版本,卸载旧版本

sudo yum remove docker  docker-common docker-selinux docker-engine

3,装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

4,设置yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5,安装docker,默认最新版本

sudo yum install docker-ce

如果需要指定版本,先查看所有仓库中所有docker版本,并选择特定版本安装

 yum list docker-ce --showduplicates | sort -r
sudo yum install <FQPN>    # 例如:sudo yum install docker-ce-17.12.0.ce

6,启动并加入开机启动

 sudo systemctl start dockersudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

 docker version

六、常用命令总结

docker pull 镜像名<:tags> --从远程仓库拉取镜像到本地仓库docker images        --查看本地仓库所有镜像docker run 镜像名<:tags>    --基于镜像创建容器并启动,可以添加-d port1:port2参数,port1:宿主机端口,port2:容器端口, -d参数代表后台运行docker ps    --查看当前所有启动的容器docker ps -a   --查看本地所有容器,包含未启动的,删除容器的时候可用来查询容器iddocker start/stop/restart 容器id  --启动/停止/重启容器docker rm <-f> 容器id   删除<-f:    --强制删除>容器,运行中的容器不能删除,-f可以强制docker rmi <-f> 镜像名称 <:tags>       --删除<强制删除>镜像,镜像有容器在启动,不能被删除,-f可以强制docker exec [-it] 容器id  /bin/bash   --进入容器主目录,exec:在对应容器中执行命令,-it:采用交互方式执行命令
Ctrl+P+Q  退出当前容器sudo docker inspect  容器id   --查看容器的详情docker logs -f -t --since="2020-04-17" --tail=10  id或者名称        --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 -f : 查看实时日志 -t : 查看日志产生的日期 -tail=10 : 查看最后的10条日志。

通俗易懂的Docker容器技术简单解释相关推荐

  1. Docker容器技术 笔记

    Docker容器技术 Docker是一门平台级别的技术,涉及的范围很广,所以,在开始之前,请确保你完成:Java SpringBoot 篇(推荐完成SpringCloud篇再来)视频教程及之前全部路线 ...

  2. Day 92 : Docker容器技术详解

    Docker容器技术详解 Docker是基于Go语言开发的开源应用容器引擎,遵从Apache Licence 2.0协议,可以让开发者打包应用以及应用的依赖包到一个可移植的容器中,然后发布到各种发行版 ...

  3. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

    上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-addres ...

  4. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)

    在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster  Cluster 是计算.存储和网络资源的集合,Kubernetes 利用 ...

  5. 如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

    2019独角兽企业重金招聘Python工程师标准>>> Rex-Ray 是一个优秀的 Docker volume driver,本节将演示其安装和配置方法. Rex-Ray 以 st ...

  6. Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)

    微服务架构的应用由若干 service 组成.比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 ...

  7. 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)

    2019独角兽企业重金招聘Python工程师标准>>> 上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker s ...

  8. k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)

    命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx ...

  9. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)

    前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性.不过截止到现在,有一个重要问题还没有涉及:如何访问 service?这就是本节要讨论的问题. 为了便于分析 ...

最新文章

  1. 使用OpenCV 实现matlab的padarray(A, padsize, ‘symmetric’)函数简单实现
  2. SAP推出下一代数字转型平台SAP HANA 2
  3. 额外篇| Python制作词云
  4. oracle 中序号的一种生成方式
  5. go 获取cpu核数
  6. mysql crash 如何导出数据库_mysql 如何做到crash后无损恢复数据的
  7. python抖音github_使用 Python 下载抖音无水印视频
  8. Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
  9. JAVA的类名.this
  10. 【B/S】java(4)
  11. C++之MFC之Unicode转char*
  12. onnx-tensorrt:builtin_op_importers.cpp:628:5: error: ‘IIdentityLayer’ is not a member of ‘nvinfer1’
  13. ts视频下载 准备下载视频的你确定不进来看看吗
  14. 时域有限差分法matlab,本科 研究生《时域有限差分法(基于MATLAB)》
  15. 无线RTU 数据采集 远程测控
  16. HITACHI日立印刷机电源维修W-PSX175
  17. 怎样避免使用手机群控系统被封号的情况
  18. 我是如何在开源系统中(Vue)中引入阿里巴巴Icon图标的?
  19. 微信小程序获取二维码报错:{“errcode“:47001,“errmsg“:“data format error hint:“}
  20. [常用工具] Python视频处理库VidGear使用指北

热门文章

  1. BZOJ 2687: 交与并
  2. 之前学习的复习,以及一些问题总结。PART 1
  3. kali开启两张网卡的配置
  4. C语言小球滚动程序,关于小球滚动与滑动问题的处理方法
  5. 质数距离 acwing
  6. 杭电题库刷题记录2014
  7. VSCode无法在终端使用`conda activate`命令来更换python环境解决方法
  8. thinkphp 6.x 数据库增删改查
  9. asp.net_DropDownList应用
  10. office2020与2016版的不同_office2019和2016区别哪个好