1、docker概念和基本使用命令

docker概念

微服务:不再是以完整的物理机为基础的服务软件,而是借助于宿主机的性能。以小量的形式,单独部署的应用。

docker:是一个开源的应用容器引擎,基于go语言开发的,使用时apache2.0的协议。docker是在Linux里面运行的容器化的开源工具。是一种轻量级的虚拟机。

鲸鱼是宿主机,集装箱是一个个独立的应用。每个应用之间都是相互隔离和独立的

docker的设计的宗旨

1、封装

2、发布

3、部署

4、运行

5、销毁

容器的生命周期————>达到一次封装,多次运行的目的。

可移植,可扩展,兼容性的目的。随时对地都可以快速的部署和使用docker的应用。

docker应用的隔离

docker是在Linux上运行,与其他的容器共享主机的内核,包括其他的资源(cpu,内存,硬盘),但是docker应用都是独立的进行,为什么能做到独立:

Linux的命名空间namespace可以实现资源的隔离

Linux的cgroup可以实现对docker应用程序的资源限制

namespace是Linux内核的一种特性,允许将一组系统资源进行隔离,是一种命名空间中的进程看起来像在系统中拥有独立的资源。

namespace的6个命名空间

1、UTS  隔离主机名和域名:系统调用的参数,在每个应用中,都能看到自己的主机名和域名,与其他进程分隔开。

2、PID  隔离进程:隔离内容:进程编号,当运行应用之后,每个应用都有自己的独立的进程编号的空间,每个进程之间不会发生冲突。

3、network  隔离网络:每个应用启动之后,都有自己的独立的网络空间,隔离网络设备、端口和网络栈。

4、mount  隔离文件系统:隔离文件系统,每个应用挂载之后都有之间独立的文件系统挂载点,这些挂载点互补冲突,也不会互相干扰。

5、IPC  隔离信号量:隔离信号量,消息队列和共享内存,在IPC隔离当中,每个进程之间都有独立的通信资源。

6、user  隔离用户和用户组:每个用户和组都是独立的命名空间,不同的用户和组之间都是隔离开的。

docker的核心概念

仓库:docker的仓库是用来保存镜像的地方,也是获取镜像和上传镜像的目的地。

镜像:docker镜像是创建容器的基础,一个镜像就类似于一个可执行的、包含源码的二进制包,包括容器运行的参数、设置、环境变量和配置文件。是一个打包好的可运行程序。

容器:容器是基于镜像创建的运行的实例

docker基本命令

拉取镜像-docker pull

查看当前下载到本地的镜像-docker images

  • REPOSITORY:应用的名称
  • TAG:镜像的标签,应用的版本
  • IMAGE ID:镜像在本地的唯一标识
  • CREATED:发布在镜像仓库的时间
  • SIZE:镜像的大小

查看镜像的详细信息-docker inspect

查看镜像的详细信息-docker inspect 镜像ID

镜像下载完保存在/var/lib/docker/

overlay2:镜像的联合文件系统,有四层。

  • lowerDir:镜像的底层文件系统,整个镜像的根文件系统(运行载体)
  • upperDir:可写层,用户可以自定义的在底层文件系统上进行修改,但是这些修改又不影响根文件系统,容器可以实现读写。
  • mergedDir:合并目录,就是用户看到的容器内的一个视图
  • workDir:工作目录,进行写操作时,可以是联合文件系统overlay2更新和跟踪对于文件系统的修改。

创建镜像副本-docker tag

docker tag nginx:1.22 nginx:自定义标签:相当于给nginx:1.22做了一个副本

镜像的组成:镜像名:标签

删除镜像-docker rmi -f

docker rmi -f nginx:1.22/ID:删除镜像

导出/导入镜像-docker save/load

docker save -o /opt/centos.tar centos:7:把本地镜像导出到指定位置,保存为指定名称

docker load -i centos.tar:把镜像导入到本地docker中

创建容器-docker run -itd

docker run -itd ubuntu:22.04:如何基于镜像创建容器

  • -i:表示容器开启标准输入,接受用户输入的指令。
  • -t:生成一个伪终端tty,用户可以进入容器的内部。
  • -d:容器创建完之后进入后台运行
  • run:如果不存在指定的镜像,他会自动拉取仓库指定的镜像然后再创建容器。拉取+运行

查看运行状态的容器-docker ps

docker ps -a:查看所有状态的容器,包括运行和停止以及报错的容器。

Up:表示容器正在运行中

出现exit的原因:容器启动之后,都会有一个执行的命令,如果该命令执行完毕之后没有其他的可执行内容,那么容器会立刻退出进入终止状态。

进入容器内部-docker  exec  -it  容器id  bash

docker  exec  -it  容器id/名称  /bin/bash | bash:进入容器内部操作

创建自定义名称容器-docker  run  -itd  --name

docker  run  -itd  --name  自定义名称  容器名称:给容器自定义名称

容器:基于镜像的配置和环境,创建一个基于Linux系统的,在这个系统当中安装了指定应用的小型虚拟机。

宿主机和容器文件传输-docker  cp

1、宿主机的文件复制到容器内部:docker  cp  文件名  容器名:/路径

2、容器的文件复制到宿主机:docker  cp  容器名:/文件名   宿主机目录

查看容器的日志-docker  logs  -f

查看容器的标准输出:查看容器的日志

docker  logs  -f  容器名称

端口映射

-P:指定宿主机随机端口和容器内的端口映射,从32768——65535。

-p:需要人工指定宿主机的端口和容器进行映射,只要指定端口宿主机没有被占用都可以使用。

创建一个以nginx:1.22镜像的容器test1,指定宿主机随机端口和容器内的80端口映射

  • 82:宿主机端口,80:容器端口

删除容器-docker  rm   -f

docker  rm   -f  容器名称:强制删除容器

  • 容器是基于镜像创建的,但是容器一旦运行,镜像不再是依赖条件,镜像可以删除,不影响部署的容器。

查看容器IP地址

批量删除容器

1、批量删除后台所有已经停止的容器

2、批量删除所有容器

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

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

相关文章

Genymotion配套VirtualBox所在地址

在 Genymotion打开虚拟机前需要先打开VirtualBox中的虚拟机 C:\Program Files\Oracle\VirtualBox\VirtualBox.exe 再开启genymotion中的虚拟机开关

【Linux】深刻理解软硬链接

一.软硬链接操作 1.软连接 touch 创建一个文件file.txt ,对该文件创建对应的软链接改怎么做呢? ln -s file.txt file-soft.link .给对应文件创建软连接。 软连接本质就是一个独立的文件,因为我们对应的软连接有独立的inode,他…

linux下MySQL的数据存放

在 Linux 下安装的 MySQL,数据表的数据默认存放在 My晓SQL 数据库的**数据目录**(Data Directory)中。具体来说,MySQL 会将所有数据库的数据存储在一个由 MySQL 配置文件中指定的目录里。该目录包含了所有数据库的表、索引、日志等…

第三十六章 Spring之假如让你来写MVC——拦截器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

快速上手 HarmonyOS 应用开发

一、DevEco Studio 安装与配置 1. DevEco Studio 简介 DevEco Studio 是 HarmonyOS 的一站式集成开发环境(IDE),提供了丰富的工具和功能,支持 HarmonyOS 应用开发的全流程。 2. DevEco Studio 下载与安装 下载地址&#xff1a…

Java Web开发进阶——错误处理与日志管理

错误处理和日志管理是任何生产环境中不可或缺的一部分。在 Spring Boot 中,合理的错误处理机制不仅能够提升用户体验,还能帮助开发者快速定位问题;而有效的日志管理能够帮助团队监控应用运行状态,及时发现和解决问题。 1. 常见错误…

图解Git——分支的新建与合并《Pro Git》

⭐分支的新建与合并 先引入一个实际开发的工作流: 开发某个网站。为实现某个新的需求,创建一个分支。在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。你将按照如下方式来处理: 切换到你…

C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

【数据可视化-12】数据分析岗位招聘分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

LeetCode 977 题:有序数组的平方

LeetCode 977 题&#xff1a;有序数组的平方 (Squares of a Sorted Array) LeetCode 第977题要求给定一个按非降序排列的整数数组 nums&#xff0c;返回每个数字的平方并按升序排列。 题目描述 给定一个整数数组 nums&#xff0c;它按非降序排列&#xff08;即 nums[i] < …

excel仅复制可见单元格,仅复制筛选后内容

背景 我们经常需要将内容分给不同的人&#xff0c;做完后需要合并 遇到情况如下 那是因为直接选择了整列&#xff0c;当然不可以了。 下面提供几种方法&#xff0c;应该都可以 直接选中要复制区域然后复制&#xff0c;不要选中最上面的列alt;选中可见单元格正常复制&#xff…

微信小程序实现拖拽盒子效果

要实现一个当前盒子高度由里面的盒子进行支配高度拖拽的效果 // wxml<view class"exmation-item" wx:elif"{{type4}}"> <view class"exmation-item-drag-box" id"drag-box"> <!-- 内容 --><view class"exm…

支持向量回归(SVR:Support Vector Regression)用于A股数据分析、预测

简单说明 支持向量回归是一种用来做预测的数学方法,属于「机器学习」的一种。 它的目标是找到一条「最合适的线」,能够大致描述数据点的趋势,并允许数据点离这条线有一定的误差(不要求所有点都完全落在这条线上)。 可以把它想象成:找到一条「宽带」或「隧道」,大部分…

透明部署、旁路逻辑串联的区别

背景 需讨论防火墙到底是串联&#xff0c;还是旁挂。 通常串联指的就是“透明部署”&#xff0c;旁挂指的就是“逻辑串联”。 透明部署&#xff08;串联&#xff09; 也称为透明模式或桥接模式&#xff0c;是一种安全设备的部署方式。在这种模式下&#xff0c;安全设备被串联…

LabVIEW水位监控系统

LabVIEW开发智能水位监控系统通过集成先进的传感技术与控制算法&#xff0c;为工业液体存储提供精确的水位调控&#xff0c;保证了生产过程的连续性与安全性。 项目背景 在化工和饮料生产等行业中&#xff0c;水位控制的准确性对保证生产安全和提高产品质量至关重要。传统的水…

深入浅出 Android AES 加密解密:从理论到实战

深入浅出 Android AES 加密解密&#xff1a;从理论到实战 在现代移动应用中&#xff0c;数据安全是不可忽视的一环。无论是用户隐私保护&#xff0c;还是敏感信息的存储与传输&#xff0c;加密技术都扮演着重要角色。本文将以 AES&#xff08;Advanced Encryption Standard&am…

hadoop-yarn常用命令

一、YARN命令介绍 1. YARN命令简介 YARN提供了一组命令行工具&#xff0c;用于管理和监控YARN应用程序和集群。 2. yarn application命令 (1) yarn application命令的基本语法 yarn application命令的基本语法如下&#xff1a; yarn application [genericOptions] [comma…

R语言的语法糖

R语言的语法糖 引言 在编程语言中&#xff0c;所谓的“语法糖”是指那些使得程序员能够以更简洁、直观的方式书写代码的语法形式。R语言作为一种用于统计分析和数据可视化的编程语言&#xff0c;具有丰富的功能和灵活的语法。本文将深入探讨R语言中的语法糖&#xff0c;帮助读…

React Fiber框架中的Render渲染阶段——workLoop(performUnitOfWork【beginWork与completeWork】)

触发渲染过程——renderRoot renderRoot 是一个函数&#xff0c;用于触发渲染工作。它通常会调用并递归地执行一系列的渲染任务&#xff0c;直到完成整个更新过程。这个过程包括执行 Fiber 树中的 beginWork 和 completeWork&#xff0c;以及渲染新状态或 DOM。 function ren…

【优先算法】思还故里闾,欲归道无因 - 前缀和

本篇博客给大家带来的是前缀和算法的知识点, 也是一样通过OJ题理解,掌握,应用该算法. &#x1f40e;文章专栏: 算法 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&…