Docker 三要素

文章目录

      • Docker 简介
      • Docker客户端
      • Docker服务器
      • Docker 镜像
      • Docker 容器

Docker 简介

学习完容器的相关概念,开始学习docker的核心组件分别是Docker客户端、Docker服务器、Docker镜像、Docker容器、仓库。

学习之前,我们先思考一个问题,目前开发面临着怎样的挑战?

随着系统在架构上的调整,已经变得非常复杂了,之前采用的三层架构,开发将代码告诉运维,运维打包好后部署在几台物理服务器上,暴露出的问题很少,而今天随着应用的增多,各类的服务比如MQ、DB、Redis、应用等,为了方便管理,这些不同的服务有可能会部署到不同的环境,一方面这些服务有所依赖的库和软件包,另一方面存在多种部署环境,这就产生了一个问题:如何让这些服务不用考虑运行环境的因素,能够顺利的运行?

docker的出现正是解决了类似的问题,它的思想将各类软件打包,为代码提供了一个基于容器标准化运输系统。将任何应用及其所依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。

对于开发人员: Build Once 、Run Anywhere,开发人员只需要为应用创建一次运行环境。然后打包成容器便可在其他机器上运行。

对于运维人员: Configure Once、Run Anything
只需要配置好标准的runtime运行环境、服务器就可以运行任何容器。容器消除了开发、测试、生产环境的不一致性,提高工作效率。

Docker采用的是Client/Server架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。

Docker客户端

Docker客户端最常用的就是docker命令,如docker image docker run等。

Docker服务器

Docker服务器指的是docker 运行在服务器上的后台进程
如systemctl status docker.service
在这里插入图片描述

Docker 镜像

可将Docker镜像看成只读模板,通过它可以创建Docker容器。
镜像有多种生成方法:

(1)从无到有开始创建镜像;
(2)下载并使用别人创建好的现成的镜像;
(3)在现有镜像上创建新的镜像。
它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统

镜像命令
docker images
列出本机镜像
在这里插入图片描述

各个选项说明:

REPOSITORY:表示镜像的仓库源 TAG:镜像的标签版本号 IMAGE ID:镜像ID CREATED:镜像创建时间
SIZE:镜像大小

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

·

OPTIONS说明: ·
-a :列出本地所有的镜像(含历史映像层) ·
-q :只显示镜像ID

扩展
· docker search 某个XXX镜像名字
在这里插入图片描述

在这里插入图片描述
OPTIONS说明:

· – limit : 只列出N个镜像,默认25个 · docker search --limit 5 redis

如搜索Mysql5.0版本只显示点赞数最多的前5个
在这里插入图片描述

docker pull

docker pull 某个XXX镜像名字 · 下载镜像 · docker pull 镜像名字[:TAG] ·
docker pull 镜像名字 · 没有TAG就是最新版 · 等价于 · docker pull 镜像名字:latest
docker pull ubuntu

例:拉取redis:5.0版本的镜像

docker pull redis:5.0

在这里插入图片描述

扩展

docker system df 查看镜像/容器/数据卷所占的空间

docker images 的镜像相加等于 docker system df 的镜像所占空间
在这里插入图片描述

常用命令

·    docker rmi 某个XXX镜像名字ID
·    删除镜像
·    删除单个
·    docker rmi  -f 镜像ID
·    删除多个
·    docker rmi -f 镜像名1:TAG 镜像名2:TAG
·    删除全部
·    docker rmi -f $(docker images -qa)

扩展:

什么是docker虚悬镜像是什么?

仓库名、标签都是的镜像,俗称虚悬镜像dangling image,容器有时候在构建过程中的不成功会产生 虚悬镜像。

Docker 容器

从镜像容器角度,可以把容器看做是一个简易版的 Linux
环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。 Docker容器就是Docker镜像的运行实例。

用户可以通过CLI(Docker)、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。

镜像与容器的关系
镜像相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
在这里插入图片描述

容器常用命令

· docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

--name="容器新名字"       为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互)-P: 随机端口映射,大写P
-p: 指定端口映射,小写p

在这里插入图片描述

启动交互式容器(前台命令行)

使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it centos /bin/bash

参数说明:

-i: 交互式操作。
-t: 终端。
centos : centos 镜像

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:

列出当前所有正在运行的容器

·    docker ps [OPTIONS]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。

启动已停止运行的容器

·    docker start 容器ID或者容器名
·    重启容器
·    docker restart 容器ID或者容器名
·    停止容器
·    docker stop 容器ID或者容器名

强制停止容器

·    docker kill 容器ID或容器名
·    删除已停止的容器
·    docker rm 容器ID
·    一次性删除多个容器实例
·    docker rm -f $(docker ps -a -q)
·    docker ps -a -q | xargs docker rm

仓库(repository)

仓库(Repository)是集中存放镜像文件的场所。

类似于 Maven仓库,存放各种jar包的地方; github仓库,存放各种git项目的地方;
Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。 最大的公开仓库是 Docker
Hub(https://hub.docker.com/), 存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

Docker常用命令

帮助启动类命令

  1. 启动docker: systemctl start docker
  2. 停止docker: systemctl stop docker
  3. 重启docker: systemctl restart docker
  4. 查看docker状态: systemctl status
  5. docker 开机启动: systemctl enable docker 查看docker概要信息: docker info
  6. 查看docker总体帮助文档: docker --help 查看docker命令帮助文档: docker 具体命令 --help

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/101108.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于ros工作空间devel下setup.bash的理解

在创建了ros的工作空间之后 在工作空间的devel文件夹中存在几个setup.*sh形式的环境变量设置脚本 使用source命令运行这些脚本文件,则工作空间的环境变量设置可以生效(如可以找到该工作空间内的项目)。 source devel/setup.bash 设置环境变量…

机器学习之数据清洗

一、介绍 数据清洗是机器学习中的一个重要步骤,它涉及对原始数据进行预处理和修复,以使数据适用于机器学习算法的训练和分析。数据清洗的目标是处理数据中的噪声、缺失值、异常值和不一致性等问题,以提高数据的质量和准确性。 二、方法 处理…

MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射,让你在面试中脱颖而出!!

目录 一、引言 二、MyBatis动态SQL 2.1.if元素使用 2.2.foreach元素使用 三、MyBatis模糊查询 ①使用#{字段名} ②使用${字段名} ③使用concat{%,#{字段名},%} 总结 四、MyBatis结果映射 4.1.案例演示 4.1.1.resultType进行结果映射 4.1.2.resultMap进行结果映射 …

客户服务体系最重要一点——如何进行同理心构建

您可以将所有的时间和精力投入到竞争激烈的商业、网络和发展世界中,但您只能通过一件关键的事情获得成功:卓越的客户服务。 出色的客户服务的关键要素在于一件事:具有同理心的能力。在客户服务领域,同理心是一种神奇的成分&#…

无涯教程-PHP.INI File Configuration函数

PHP配置文件php.ini是影响PHP功能的最终且最直接的方法。每次初始化PHP时都会读取php.ini文件。换句话说,无论是模块版本的httpd重新启动还是CGI版本的每次脚本执行都重新启动。如果未显示您的更改,请记住停止并重新启动httpd。 该配置文件已注释完整。键区分大小写,关键字值不…

微服务集成spring cloud sentinel

目录 1. sentinel使用场景 2. sentinel组成 3. sentinel dashboard搭建 4. sentinel客户端详细使用 4.1 引入依赖 4.2 application.properties增加dashboard注册地址 4.3 手动增加限流配置类 4.4 rest接口及service类 4.5 通过dashboard动态配置限流规则 1. sentinel使…

密码学学习笔记(十九):密码学关键术语的解释1

数据加密标准(DES) 数据加密标准是使用最广泛的加密体制,它于1977年被美国国家标准和技术研究所(NIST)采纳为联邦信息处理标准FIPS PUB 46。 DES3DESAES明文分组长度(位)6464128密文分组长度(位)6464128密钥长度&…

TCP拥塞控制详解 | 6. 主动队列管理

网络传输问题本质上是对网络资源的共享和复用问题,因此拥塞控制是网络工程领域的核心问题之一,并且随着互联网和数据中心流量的爆炸式增长,相关算法和机制出现了很多创新,本系列是免费电子书《TCP Congestion Control: A Systems …

「Vue|网页开发|前端开发」01 快速入门:用vue-cli快速写一个Vue的HelloWorld项目

本文主要介绍如何用vue开发的标准化工具vue-cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程。 文章目录 一、准备工作:安装node.js二、项目搭建创建项目目录全局安装vue-cli使用Webpack初始化项目启动项目学会…

【使用Node.js搭建自己的HTTP服务器】

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

生成式AI系列 —— DCGAN生成手写数字

1、模型构建 1.1 构建生成器 # 导入软件包 import torch import torch.nn as nnclass Generator(nn.Module):def __init__(self, z_dim20, image_size256):super(Generator, self).__init__()self.layer1 nn.Sequential(nn.ConvTranspose2d(z_dim, image_size * 32,kernel_s…

无涯教程-TensorFlow - Keras

Keras易于学习的高级Python库,可在TensorFlow框架上运行,它的重点是理解深度学习技术,如为神经网络创建层,以维护形状和数学细节的概念。框架的创建可以分为以下两种类型- 顺序API功能API 无涯教程将使用Jupyter Notebook执行和…

5、css学习5(链接、列表)

1、css可以设置链接的四种状态样式。 a:link - 正常,未访问过的链接a:visited - 用户已访问过的链接a:hover - 当用户鼠标放在链接上时a:active - 链接被点击的那一刻 2、 a:hover 必须在 a:link 和 a:visited 之后, a:active 必须在 a:hover 之后&…

两款开箱即用的Live2d

目录 背景第一款:开箱即用的Live2d在vue项目中使用html页面使用在线预览依赖文件地址配置相关参数成员属性源码 模型下载 第二款:换装模型超多的Live2d在线预览代码示例源码 模型下载 背景 从第一次使用服务器建站已经三年多了,记得那是在2…

php+echarts实现数据可视化实例2

效果: 代码 php <?php include(includes/session.inc); include(includes/SQL_CommonFunctions.inc); ?> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

nginx防盗链

防盗链介绍 通过二次访问&#xff0c;请求头中带有referer&#xff0c;的方式不允许访问静态资源。 我们只希望用户通过反向代理服务器才可以拿到我们的静态资源&#xff0c;不希望别的服务器通过二次请求拿到我们的静态资源。 盗链是指在自己的页面上展示一些并不在自己服务…

Android Selector 的使用

什么是 Selector&#xff1f; Selector 和 Shape 相似&#xff0c;是Drawable资源的一种&#xff0c;可以根据不同的状态&#xff0c;设置不同的图片效果&#xff0c;关键节点 < selector > &#xff0c;例如&#xff1a;我们只需要将Button的 background 属性设置为该dr…

数据结构-->栈

&#x1f495;休对故人思故国&#xff0c;且将新火试新茶&#xff0c;诗酒趁年华&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;详解链表OJ题 前言&#xff1a; 前面已经学习过顺序表&#xff0c;链表。他们都是线性表&#xff0c;今天要学习的栈也是一种线…

MYSQL数据库

数据库概述 1、基本概念 1.1、数据&#xff1a;(DATA) 描述事物的符号记录,包括数字&#xff0c;文字、图形、图像、声音、档案记录等,以“记录”形式按统一的格式进行存储 1.2、表&#xff1a; 将不同的记录组织在一起&#xff0c;用来存储具体数据 1.3、数据库&#xff1…

Nacos

Nacos介绍 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的⾸字⺟简称&#xff0c;⼀个更易于构 建云原⽣应⽤的动态服务发现、配置管理和服务管理平台。 在这个介绍中&#xff0c;可以看出Nacos⾄少有三个核⼼功能&#xff1a; 1. 动态服务发现 2. 配…