Docker使用扩展

日升时奋斗,日落时自省 

目录

1、容器

1.1、容器的生命周期

1.1.1、容器OOM

1.1.2、容器异常退出

1.1.3、容器暂停

1.2、容器命令

1.2.1、创建容器

1.2.2、启动容器

1.2.3、容器日志

1.2.4、容器交互

1.2.5、容器停止

1.2.6、扩展

1.3、综合演示

 2、存储卷

2.1、简述

2.2、存储卷分类

2.3、管理卷

2.3.1、-v挂载方式

2.3.2、--mount挂载方式

2.4、绑定卷

2.4.1、-v绑定方式

2.4.2、--mount绑定方式

2.5、临时卷

2.5.1、--tmpfs方式创建

2.5.2、--mount指定参数创建

2.6、展示样例

3、 docker网络

3.1、网络的重要性

3.2、常见网络类型

3.2.1、bridge网络

3.2.2、host网络

3.2.3、container网络

3.2.4、none网络

3.3、docker网络管理命令

3.3.1、网络命令

3.3.2、创建网络

3.3.2、网络详情

3.4、样例演示


注:认识docker中的容器,docker中设置网络和存储卷绑定

1、容器

容器就是镜像运行的实体;简单来说就是环境,环境中存在很多东西,都处于运转中,容器就是这样的环境,容器中的进程属于运行状态,那容器就缺不了创建、运行、删除等状态了

1.1、容器的生命周期

容器的生命周期是容器可能处于的状态:

  • created:初建状态
  • running:运行状态
  • stopped:停止状态
  • paused: 暂停状态
  • deleted:删除状态

注:下图红色数字是一个启动到停止的流程,仅仅只是停止,想要删除的话,需要的是将镜像先停止stop再rm命令删除

 参数解释:

  • create :创建容器
  • run :运行容器
  • start: 容器转为运行状态
  • stop:停止状态
  • kill:故障死机,执行kill(或者断电),容器转入停止状态,这种操作容易丢失数据
  • restart:重启容器,容器进入运行状态
  • pause:容器进入暂停状态
  • unpause:取消暂停状态,容器进入运行状态
  • rm:删除容器(需要容器在停止运行状态)
  • OOM:宿主机内存被耗尽,非计划终止,需要杀死最吃内容的容器

1.1.1、容器OOM

Docker 在处理 OOM 事件时分为三种情况

(1)容器中的应用耗尽了主机系统分配给容器的内存限额,触发OOM事件,容器被强制关闭

(2)用户不想关闭这个容器,那么可以选择--oom-kill-disable 来禁用 OOM-Killer,首先不满足(1)就是不能超过这个限度,只需要将最坏的情况封闭在一定范围之内

(3)如果用户使用了--oom-kill-disable,但也没有使用-m 来设定上限,因而此时此容器将会尽可能多地使用主机内存资源。换言之,主机内存有多大,它就将用多大(限制分配内存)

1.1.2、容器异常退出

容器的异常可能由于某个子进程退出,影响到init进程,导致其也退出(init进程是docker容器中的主要运行者,它的退出代表容器下线),Docker Daemon 会尝试再次重新将此容器由 Stopped 状态转为 Running状态。只有设置了--restart 参数的容器, Docker Daemon 才会去尝试启动,否则容器会保持停止状态。

1.1.3、容器暂停

Docker“剥夺”了此容器的 CPU 资源。而其他资源,如 Memory 资源、 Network 资源等还保留未动。如此一来,失去了 CPU 资源的进程,是不会被主机内核系统所调度的

1.2、容器命令

注:所有之前需要一个基础命令来支持下面的操作:

docker ps(查看运行容器)

docker ps -a (查看所有容器)

1.2.1、创建容器

docker create [options] image [command] [arg]

docker container create 

简单介绍几个参数:

  • --name="容器名称"
  • -e 就是设置环境变量
  • -m :设置内存最大值
  • --restart:自动重启

简单的拿一个命令来尝试一下:docker create --name mynginx nginx:last

1.2.2、启动容器

docker run [options] image [command] [arg...]

参数:

  • -d : 后台运行容器,并返回容器ID 比create多了个这个参数
  • -i : 以交互模式运行容器,通常与-t 同时连用
  • -p:指定端口映射,格式为 : 主机(宿主)端口:容器端口
  • --rm:shell退出的时候自动删除容器

简单的拿一个命令来尝试一下:docker run -p 80:80 -d nginx:latest

1.2.3、容器日志

docker logs [options] container

参数:

  • -f :跟踪日志输出
  • --since:显示某个开始的所有日志
  • -t :显示时间戳
  • -n :最新n调日志

注:首先需要你有一个自己的镜像

简单的拿一个命令来尝试一下: docker logs --since="2024-01-05" --tail=10 mynginx

1.2.4、容器交互

docker exec [options] container command [arg...]

参数:

  • -d : 分离模式 在后台运行
  • -it : 交互
  • -w:指定工作目录

注:前提你需要有一个容器  以下命令就是为来进入到容器中的

简单的拿一个命令来尝试一下:docker exec -it mynginx bash

1.2.5、容器停止

docker stop conntainer(停止 需要有指定的容器名称)

docker container stop(也可以这么写)

简单的拿一个命令来尝试一下:docker stop mynginx

1.2.6、扩展

命令需要了,来官网查查

文档处:

详细内容看这里,每个命令与详细参数

1.3、综合演示

这里就把redis作为演示吧

docker进行redis7版本的拉取,同时绑定端口号,设置一个容器名称,-d表示后台运行

docker run --name redistest -p 8300:6379 -d  redis:7

注:docker ps 就是查看是否运行成功了  

下面我们进入都redistest镜像中设置以下参数看看是否能用

 docker exec -it redistest bash

进入容器之后不是就进入了redis本身,还需要redis命令进入redis中 redis-cli进行

 友友们可以尝试以下,连接你们服务器端口号就是你绑定的,我这里绑定服务器8300,开发端口号后Redis界面连接即可查看

 2、存储卷

2.1、简述

就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着,当我们在容器中的这个目录下写入数据时,容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录(简单点:本地文件目录与容器内容文件目录建立绑定关系)

特点:可以在宿主机和容器内共享数据库内容、容器和宿主机的数据读写是同步的

2.2、存储卷分类

目前 Docker 提供了三种方式将数据从宿主机挂载到容器中管理卷、绑定卷、临时数据卷

  • volume docker 管理卷,默认映射到宿主机的/var/lib/docker/volumes 目录下, 只需要在容器内指定容器的挂载点是什么
  • bind mount 绑定数据卷在宿主机上的路径要人工的指定一个特定的路径, 在容器中也需要指定一个特定的路径, 两个已知的路径建立关联关系
  • tmpfs mount 临时数据卷,映射到于宿主机内存中,一旦容器停止运行, tmpfs mounts 会被移除,数据就会丢失,用于高性能的临时数据存储

2.3、管理卷

相关命令:

命令别名功能
docker volume create创建存储卷
docker volume inspect显示存储卷详细信息
docker volume lsdocker volume list列出存储卷
docker volume prune清理所有无用数据卷
docker  volume rm删除卷,使用中的无法删除

这里就不在对这些命令在一一解释了,下面我们直接上干货

docker volume ls

注:下面是展示我曾经使用的存储卷,友友首次使用该命令可能是没有的

也是可以有参数:-f 过滤参数条件进行显示,在存储卷较多的情况下采用

下面来看看这绑定卷里面都有什么?

docker volume inspect 卷名

Mountpoint:挂在的位置 

每次操作的时候就cd 到挂载的位置去修改信息

 删除就友友们私下玩的时候删吧,这个没有啥演示的

2.3.1、-v挂载方式

参数挂载

docker  run -v name:directory[:options]

  • 第一个参数:卷名称
  • 第二个参数:卷映射到容器的目录
  • 第三个参数:选项,如ro表示readonly

举例演示:docker run -d --name devtest -v myvol2:/app nginx:latest

容器目录就是/app

myvol2是一个管理卷名,系统会给他分一个路径作为本地绑定卷的路劲

2.3.2、--mount挂载方式

基本上就是格式不同

--mount '<key>=<value>,<key>=<value>'

  • 参数 type :类型表示bind ,volume ,or tmpfs
  • source , src :对于命名卷,这是卷的名称。对于匿名卷,省略此字段
  • destination, dst,target:文件或目录挂载在容器中的路径
  • ro,readonly: 只读方式挂载

举例演示:docker run -d --name devtest --mount source=myvol2,target=/app nginx:latest

2.4、绑定卷

2.4.1、-v绑定方式

bind mount (绑定卷)

命令规则:

docker run -v name:directory[:options]

参数:

  • 第一个参数:宿主机目录,这个和管理卷是不一样的
  • 第二个参数:卷映射到容器的目录
  • 第三个参数:选项,如ro表示readonly

举例演示:docker run -d -it  --name devtest -v /root/data/test1:/app nginx:latest

2.4.2、--mount绑定方式

--mount '<key>=<value>,<key>=<value>'

  • 参数 type :类型表示bind ,volume ,or tmpfs
  • source , src :宿主机目录,这个和管理卷不一样
  • destination, dst,target:文件或目录挂载在容器中的路径
  • ro,readonly: 只读方式挂载

举例演示:docker run -d -it --name devtest --mount type=bind,source=/root/data/test1,target=/app nginx:latest

2.5、临时卷

tmpfs(临时卷)

临时卷数据位于内存中,在容器和宿主机之外

tmpfs局限性

不同与管理卷和绑定卷挂载,不能在容器之间共享tmpfs挂载

这个功能只有在linux上运行docker时才可以用

注:因为临时卷是在内存中,所以其他容器使用不了

2.5.1、--tmpfs方式创建

创建规则: --tmpfs 容器目录

docker run -d -it --name tmptest --tmpfs /app nginx:latest

2.5.2、--mount指定参数创建

--mount '<key>=<value>,<key>=<value>'

  • type : 类型表示 bind, volume, or tmpfs
  • destination, dst,target:挂载在容器中的路径
  • tmpfs-size: tmpfs 挂载的大小(以字节为单位)。默认无限制
  • tmpfs-mode: tmpfs 的八进制文件模式。例如, 700 或 0770。默认为 1777或全局可写

举例演示:docker run -d -it --name tmptest --mount type=tmpfs,destination=/app nginx:latest

2.6、展示样例

绑定本地文件是因为,容器中不能进行文件修改

注:这里采用管理卷进行操作演示

首先运行一个nginx启动,管理卷绑定nginx页面,不难看出进入到交互模式之后vim命令就适用不了

注:看管理卷能看到

 数据共享:这里可以直接修订nginx的html进行操作

 修改index.html后进行的

3、 docker网络

3.1、网络的重要性

多个容器之间通信、容器和宿主机的通信、容器和外界主机通信

3.2、常见网络类型

3.2.1、bridge网络

bridge 驱动会在 Docker 管理的主机上创建一个 Linux 网桥。默认情况下,网桥上的容器可以相互通信。也可以通过 bridge 驱动程序配置,实现对外部容器的访问。
Docker 容器的默认网络驱动.当我们需要多个容器在同一个 Docker 主机上通信时,桥接网络是最佳选择

容器1-----bridge----容器2-----bridge----容器3-----bridge----容器4

3.2.2、host网络

对于独立容器,移除容器和 Docker 主机之间的网络隔离,并直接使用主机的网络。当网络堆栈不应该与 Docker 主机隔离,但是希望容器的其他资源被隔离时,主机网络是最佳选择

3.2.3、container网络

这个模式指定新创建的容器和引进存在的一个容器共享一个网络 ,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 ip,而是和一个指定的容器共享 ip,端口等,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离

注:感觉跟bridge网络很像是吧,bridge网络是横向的,而容器网络是纵向的

容器1----依托---容器2----依托----容器3---创建网络1

这样多个容器就是使用网络1

3.2.4、none网络

Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、 IP、路由等信息。容器完全网络

注:是不是感觉这个网络没有啥用,自己一个人把自己孤立起来,实际上可以用来存储一些数据,这些数据是不能通过网络来获取安全性也有了保障

这里还有一个overlay网络,友友们有兴趣的话可以去看看了解一下

3.3、docker网络管理命令

3.3.1、网络命令

命令别名功能
docker network create创建网络
docker network connect连接网路
docker network disconnect断开网络
docker network lsdocker network list列出网络列表
docker network prune删除不使用的网络
docker network inspect查看网络详情
docker network rmdocker network remove删除1个或者多个网络

3.3.2、创建网络

docker network create [option] network

参数:

  • -d,--dirver :网络驱动
  • --gateway:网关地址
  • --subnet:表示网段的CIDR格式的子网
  • --ipv6:启用ipv6

举例演示:docker network create --dirver=bridge --subnet=192.168.0.0/16 br0

注:创建网络为桥接网络,网段 192.168 子网掩码16位 br0是网络名称

3.3.2、网络详情

docker network inspect  [options] network [network...](查看网络详情)

参数:

  • -f :指定格式

举例演示:docker network inspect mynetwork

3.4、样例演示

当前我的docker下有这么些网路

我们这里从新创建一个事例

连接的网络需要存在 

注:创建好的默认为桥接网络

 docker run -itd --name mynginx --network mynetwork nginx:1.22.0

查看相关网络是否绑定 

下面可以看详细配置信息:(这里截图不全,友友们可以自省尝试,看看)

如果需要删除

docker network rm 网络名 (不在演示) 

 注:docker有基础的使用能力

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

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

相关文章

ChatGPT | 模型架构 | 应用 | 思考

介绍 ChatGPT 3.5 是 OpenAI 推出的语言模型的一个版本&#xff0c;是 GPT&#xff08;生成式预训练模型&#xff09;系列的一部分。在自然语言理解和生成方面具有强大的能力&#xff0c;可以应用于问答系统、文本生成、翻译和对话系统等多个领域。 模型架构 GPT-3.5&#x…

【代码】Keras3.0:实现残差连接

简介 残差连接是一种非常重要的网络结构创新&#xff0c;最早被广泛应用于ResNet&#xff08;Residual Neural Network&#xff09;模型中&#xff0c;由何凯明等人在2015年的论文"Deep Residual Learning for Image Recognition"中提出。 核心思想 通过引入“short…

Linux stm32串口下载程序

一、工具 使用stm32flash进行串口下载 二、stm32flash安装 sudo apt-get install stm32flash 三、查看串口设备名称 先拔掉串口运行下面指令&#xff0c;获得所有设备名称,插上串口再运行一次&#xff0c;新增的就是串口设备名称&#xff0c;记住串口设备名称&#xff0c;以…

【Hadoop】说下HDFS读文件和写文件的底层原理?

文件读取文件的写入 文件读取 客户端调用 FileSystem 对象的 open&#xff08;&#xff09;函数&#xff0c;打开想要读取的文件。其中FileSystem 是 DistributeFileSystem 的一个实例&#xff1b;DistributedFileSystem 通过使用 RPC&#xff08;远程过程调用&#xff09; 访N…

Unity 了解Input Manage下默认的输入轴

在Unity菜单Edit->Project Settings->Input Manager->Axes下有一些默认的输入轴&#xff0c;如 这些输入轴代表不同类型的输入&#xff0c;其中&#xff1a; Horizontal&#xff1a;水平移动输入轴。通常与键盘的左右箭头键、A和D键、游戏手柄的左摇杆水平轴等相关联…

【AI视野·今日CV 计算机视觉论文速览 第282期】Wed, 3 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Wed, 3 Jan 2024 Totally 70 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Street Gaussians for Modeling Dynamic Urban Scenes Authors Yunzhi Yan, Haotong Lin, Chenxu Zhou, Weijie Wang, Haiya…

nvm安装教程,实现node的多版本管理(图文界面)

目录 前言1. 安装配置2. 使用方式 前言 由于前端项目不同的node版本&#xff0c;导致重复的卸载安装会比较麻烦&#xff0c;对此需要nvm来管理 类似python版本的差异&#xff0c;可以使用虚拟环境管理&#xff08;anconda&#xff09;&#xff0c;在我原先的文章也有讲解过 …

从法律和经济学角度看工业数据共享

文章目录 前言一、工业数据利用现状二、工业数据的新特点三、数据再利用和储备的现状(一)防止先行者通过数据进行垄断(二)数据储备情况以及数据成本、数量和价值四、工业数据共享的法律经济学模型分析情形一:在没有数据共享政策的情况下,尝试给出如下命题。情形二:有数据…

LeetCode-加一(66)

题目描述&#xff1a; 给定一个由整数组成的非空数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 思路&#xff1a; 这里主要分…

《路由与交换技术》---简答题

1、什么是STP&#xff1f;解决什么问题&#xff1f; STP代表生成树协议&#xff08;Spanning Tree Protocol&#xff09;。它是用于在计算机网络中解决环路问题的一种协议。 STP的主要目标是消除环路&#xff0c;保持网络的稳定性和可靠性&#xff0c;同时提供冗余路径以实现网…

快速实现产品智能:用 AI 武装你的 API | 开源日报 No.138

openchatai/OpenCopilot Stars: 3.8k License: MIT OpenCopilot 是一个允许你拥有自己产品的 AI 副驾驶员的项目。它集成了产品底层 API&#xff0c;并可以在需要时执行 API 调用。它使用 LLMs 来确定用户请求是否需要调用 API 端点&#xff0c;然后决定调用哪个端点并根据给定…

【办公软件】手机当电脑摄像头Iriun Webcam软件安装与试用

家里电脑是台式的没有摄像头&#xff0c;但老安卓手机有一台。本来想用小爱摄像头做电脑摄像头&#xff0c;但是发现像素有点差&#xff0c;捣鼓了半天没成功。看网上别人都用旧手机来当电脑摄像头&#xff0c;并且也能使用音频&#xff0c;所以还是用旧手机做摄像头比较香。 …

爆肝整理,接口测试+为什么要做接口测试总结,策底贯通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、什么是接口测试…

创建Vue3项目

介绍 使用命令创建vue3项目 示例 第一步&#xff1a;执行创建项目命令 npm create vuelatest第二步&#xff1a;填写输入项 第三步&#xff1a;进入study-front-vue3文件夹 cd study-front-vue3第四步&#xff1a;执行npm命令安装依赖 npm install第五步&#xff1a;运行…

YOLO蒸馏原理篇之---MGD、CWD蒸馏

一、MGD蒸馏 论文地址:https://arxiv.org/abs/2205.01529 论文翻译:https://mp.weixin.qq.com/s/FSvo3ns2maTpiTTWsE91kQ 1.1 摘要 知识蒸馏已成功应用于各种任务。当前的蒸馏算法通常通过模仿教师的输出来提高学生的表现。本文表明,教师还可以通过指导学生的特征恢复来提…

60.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏公告功能的逆向分析与测试

内容来源于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;文字资源读取类的C还原-CSDN博客 码云地址&#xff08;master分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;878db7708de09b448010ef54526fe…

爬虫-3-模拟登录,代理ip,json模块

#本文仅供学习使用(O&#xff40;) 如果服务器响应的数据为json数据: 那么我们可以用 res.json() 或 json模块(将json字符串转换为Python里面的字典类型) 接收数据。

高德地图Web服务使用方法——电子围栏

1 高德地图Web服务 1.1 添加Key 注册高德地图&#xff0c;进入控制台&#xff0c;创建新应用&#xff0c;添加Key&#xff0c;选择Web服务&#xff0c;不添加域名白名单&#xff0c;勾选同意政策。 刷新界面&#xff0c;记住获取到的Key。 1.2 下载安装Postman https://www…

线性代数 --- 矩阵行列式的性质

Determinant det A|A| 矩阵的行列式是一个数&#xff0c;这个数能够反应一些关于矩阵的信息。行列式只对方阵有效。 若矩阵A为&#xff1a; 则A的行列式为&#xff1a; 性质1&#xff1a; 单位矩阵的行列式等于1 性质2&#xff1a;行与行之间的交换会改变det的正负号 以2x2单位…

Vue知识总结-中

VUE-生命周期 生命周期概述 生命周期也常常被称为生命周期回调函数/生命周期函数/生命周期钩子生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数生命周期函数的名字不能更改,但函数的具体内容是由我们程序员自己编写的生命周期函数中的this指向是vm或组件实例对象 生命周…