首页 > 其他分享 >Docker 笔记

Docker 笔记

时间:2022-12-21 21:56:47浏览次数:43  
标签:容器 tomcat 笔记 内存 镜像 Docker docker

title: Docker 笔记.md
date: 2022-12-19 17:02:34
tags:
- Docker

什么是Docker?

官方介绍

  • we help developers and development teams build and ship apps. 我们帮助开发人员和开发团队构建和发布应用
  • we have a complete container solution for you - no matter who you are and where you are on your containerizationjourney.
    我们为你提供了一个完整的容器解决方案,不管你是谁,不管你在哪,你都可以开始容器的的旅程。

官方定义: docker是一个容器技术。docker引擎:容器(container)(软件redis mysql tomcat rabbitmq ..) ---->构建 发布应用

通俗理解: docker是一个软件容器平台 | 引擎 | 技术

Docker优势

  • 环境一致、高效迁移

    如︰我们一个java Web应用程序涉及很多东西,比如jdk、tomcat、mysql等软件环境。当这些其中某一项版本不一致的时候,可能就会导致应用程序跑不起来这种情况。Docker则将程序以及使用软件环境直接绑定在一起,无论在那个机器上保证了环境一致。

  • 进程级隔离、容器独立

    如︰服务器自己的程序挂了,结果发现是别人程序出了问题把内存吃完了,自己程序因为内存不够就挂了这种也是一种比较常见的情况,如果你的程序重要性不是特别高的话,公司基本上不可能让你的程序独享一台服务器的,这时候你的服务器就会跟公司其他人的程序共享一台服务器,所以不可避免地就会受到其他程序的干扰,导致自己的程序出现问题。Docker就很好解决了环境隔离的问题,别人程序不会影响到自己的程序。

    img

  • 镜像机制、便于部署

    公司要弄一个活动,可能会有大量的流量进来,公司需要再多部署几十台服务器。在没有Docker的情况下

    要在几天内部署几十台服务器,这对运维来说是一件非常折磨人的事,而且每台服务器的环境还不一定一样,就会出现各种问题,最后部署地头皮发麻。用Docker的话,我只需要将程序打包到镜像,你要多少台服务,我就给跑多少容器,极大地提高了部署效率。

Docker和虚拟机 区别

img

比较上面两张图,我们发现虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重。Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。

另外在调用宿主机的CPU、磁盘等等这些资源的时候,拿内存举例,虚拟机是利用Hypervisor去虚拟化内存,整个调用过程是虚拟内存->虚拟物理内存->真正物理内存,但是Docker是利用Docker Engine去调用宿主的的资源,这时候过程是虚拟内存->真正物理内存

传统虚拟机 Docker容器
磁盘占用 GB MB
CPU内存占用 虚拟OS非常占用CPU和内存 Docker引擎占用极低
启动速度 (从开机到运行项目)几分钟 (从开启容器到运行项目)几秒
安装管理 需要专门的运维技术 安装、管理方便
应用部署 每次部署都费时费力 从第二次部署开始轻松简洁
耦合性 多个应用服务安装到一起 每个应用服务一个容器,达成隔离
系统依赖 需求相同或相似的内核,目前推荐是Linux

Docker 核心概念

img

  • dockerfile:docker生成镜像配置文件,用来书写自定义镜像的一些配置
  • tar:一个对镜像打包的文件,日后可以还原成镜像

镜像 Image

一个镜像就代表一个软件。

  • 镜像是只读的,不能进行写操作。

  • 镜像是原子化的 逻辑镜像=物理镜像+环境镜像+OS镜像 逻辑镜像是应用模板

容器 Container

一个镜像运行一次就会生成一个容器,容器就是一个运行的软件服务

  • 容器可读可写

容器本质上是多个镜像加载到内存中的副本的组合,因此容器是OS级别的隔离,最终表现为精简的OS+运行需要的环境+对应的应用,比如tomcat容器就是精简的OS+jdk+tomcat。 镜像每次运行之后就产生一个容器,容器就是镜像实例,也就是应用。

仓库 Repository

仓库是用来存储所有镜像/软件的位置,类似于maven仓库,也是镜像下载和上传的位置,有远程和本地仓库之分。

  • 本地仓库:用来存储在使用docker过程中的相关镜像。

镜像相关操作

0. 辅助命令

  • docker version:用来查看docker客户端引擎 和 server端引擎版本信息
  • docker info:用来查看docker引擎详细信息
  • docker --help:用来帮助信息

1. 镜像 image

  • 查看当前本地仓库中存在哪些镜像:docker image ls 或者 docker images

    定位一个镜像:名称:tag,比如tomcat:8.0

    • docker image -q:只列出镜像id
  • 下载一个镜像:docker pull 镜像名称

    获取最新版本:docker pull tomcat

    获取指定版本:docker pull tomact:8.0

  • 搜索镜像:docker search 镜像名

    docker search tomcat:只能看当前镜像是否存在,不能列出版本

  • 删除镜像:docker image rm 镜像名(name:tag) | 镜像 id

    正常删除:docker image rm 镜像名(name:tag) | 镜像 id,要求必须是没有运行过的镜像

    强制删除:docker image rm -f 镜像名(name:tag) | 镜像 id

    批量删除镜像:docker image rm -f $(docker image tomcat -q)

2. 容器

1、

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7f0a664400f tomcat:8.0 "catalina.sh run" 40 seconds ago Up 38 seconds 8080/tcp gracious_bose

标签:容器,tomcat,笔记,内存,镜像,Docker,docker
From: https://www.cnblogs.com/stdxiaozhang/p/16992594.html

相关文章

  • 自动化测试技术笔记(三):如何编写技术方案
    前面两篇笔记我介绍了自动化测试前期调研注意事项和前置准备阶段切入点,有同学在后台提问:“做完前期的调研和准备工作,领导要求写一个落地方案并评审,自动化测试的落地方案......
  • docker-02
    一、私有仓库  dockerpull拉取,都是从hub.docker上拉取的,公司自己做的docker镜像,放在哪比较合适?dockerpush推到hub.docker,如果是公开,大家都可以下载,公司内部只希望公......
  • 【Python】爬虫笔记-TypeError: Object of type 'method' is not JSON serializable
    最近尝试对b站做数据分析,自己边学边造轮子。b站的api返回的格式都是json,在对数据进行格式转换的过程中遇到一个令人哭笑不得的问题,特此记录下来。0x01首先获得b站的api......
  • sass学习笔记
    前言Sass教程Sass中文文档|Sass中文网VScode插件推荐:Sass以及LiveSassCompilerSass的一些用法1、类名嵌套类名里面写类名2、类名重复&修饰符.header{......
  • Node学习笔记
    Node.js学习笔记node.js简介:什么是Node.js?Node.js是一个基于ChromeV8引擎的javascript运行环境注意:浏览器是js的前端运行环境Node.js是js的后端运行环境Node.......
  • Node.js(笔记02) - fs文件系统模块
    fs 文件系统模块fs 模块是 Node.js 官方提供的,用来操作文件的模块。提供了一系列的方法和属性,用来满足用户对文件的操作需求;例如:fs.readFile() 方法,用来读取指定文件中......
  • 今日内容 docker-compose部署项目
    私有仓库#dockerpull拉取,都是从hub.docker上拉取的,公司自己做的docker镜像,放在哪比较合适#dockerpush推到hub.docker,如果是公开,大家都可以下载,公司内部只希......
  • 【《硬件架构的艺术》读书笔记】08 消抖技术
    8.1简介在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号,这就是抖动。消抖使用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。(说人话就......
  • 将微服务项目利用Docker部署到服务器
    一、Docker基本知识写DockerFile文件创建自己的镜像volumn挂载目录容器间通信:同一network下docker-compose进行多容器部署二、部署过程(docker-hub网站里有现成容器部......
  • 【Vant】Vant 开发笔记
      Van-Form表单组件:文档地址:https://vant-contrib.gitee.io/vant/v2/#/zh-CN/form1、提交方法官方文档默认的方式是使用nativeType,非常不理解可以改用按照elm......