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.rhkb.cn/news/233151.html

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

相关文章

超维空间M1无人机使用说明书——21、基于opencv的人脸识别

引言&#xff1a;M1型号无人机不仅提供了yolo进行物体识别&#xff0c;也增加了基于opencv的人脸识别功能包&#xff0c;仅需要启动摄像头和识别节点即可 链接: 源码链接 一、一键启动摄像头和人脸识别节点 roslaunch robot_bringup bringup_face_detect.launch无报错&#…

Cache伪共享

伪共享 什么是伪共享 为了解决计算机系统中主内存与CPU之间运行速度差问题&#xff0c;会在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。 这个Cache一般是被集成到CPU内部的&#xff0c;所以也叫CPU Cache。 在Cache内部是按行存储的&#xff0c;其中每一行称为…

深入理解循环神经网络(RNN)及其变体

目录 前言1 RNN实现顺序记忆1.1 RNN的序列处理能力1.2 梯度问题&#xff1a;RNN的局限性1.3 应对梯度问题的策略 2 RNN变体&#xff1a;解决梯度问题2.1 GRU&#xff08;门控循环单元&#xff09;2.2 LSTM&#xff08;长短期记忆网络&#xff09;2.3 变体优势&#xff1a;处理长…

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

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

目标检测-One Stage-YOLOv4

文章目录 前言一、目标检测网络组成二、BoF&#xff08;Bag of Freebies&#xff09;1. 数据增强2.语义分布偏差问题3.损失函数IoUGIoUDIoUCIoU 三、BoS(Bag of Specials)增强感受野注意力机制特征融合激活函数后处理 四、YOLO v4的网络结构和创新点1.缓解过拟合&#xff08;Bo…

抽丝剥茧设计模式

Singleton 单例 饿汉式 最简单的方式 /*** 饿汉式* 类加载到内存后&#xff0c;就实例化一个单例&#xff0c;JVM保证线程安全* 简单实用&#xff0c;推荐使用&#xff01;* 唯一缺点&#xff1a;不管用到与否&#xff0c;类装载时就完成实例化* Class.forName(""…

命令行模式的rancher如何安装?

在学习kubectl操作的时候&#xff0c;发现rancher也有命令行模式&#xff0c;学习整理记录此文。 说明 rancher 命令是 Rancher 平台提供的命令行工具&#xff0c;用于管理 Rancher 平台及其服务。 前提 已经参照前文安装过了rancher环境了&#xff0c;拥有了自己的k8s集群…

redis可视化工具 RedisInsight

redis可视化工具 RedisInsight 1、RedisInsight是什么2、下载RedisInsight3、使用RedisInsight4、其他redsi可视化工具 1、RedisInsight是什么 RedisInsight 是一个用于管理和监控 Redis 数据库的图形用户界面&#xff08;GUI&#xff09;工具。它是由 Redis Labs 开发的&…

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城搭建的完整指南

随着互联网的快速发展&#xff0c;越来越多的企业开始注重数字化转型&#xff0c;以提升自身的竞争力和运营效率。在这个背景下&#xff0c;鸿鹄云商SAAS云产品应运而生&#xff0c;为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

STM32---中断

中断框图 一.中断 中断&#xff1a;当有中断请求时&#xff0c;CPU会停止处理当前的任务&#xff0c;转而去处理中断任务。 中断输入线有19/20根&#xff08;互联型号20根&#xff09;。 分类&#xff1a;系统异常&#xff08;10个&#xff09;和外部中断&#xff08;60个&…

Java环境准备:JDK与IDEA

新手小白学Java–环境准备篇 文章目录 新手小白学Java--环境准备篇第1节 JDK的下载与安装第2节 IDEA的下载与安装第3节 使用IDEA创建第一个Java项目第4节 使用小技巧查看电脑的操作系统版本显示出文件的后缀名IDEA 修改字体大小IDEA 修改显示主题色IDEA 修改单行注释的颜色IDEA…

how2heap-2.23-11-poison_null_byte

什么是poison_null_byte 当然不止这一种&#xff0c;下面最简单的形式 #include <malloc.h> int main() {char * a malloc(0x200);char * b malloc(0x200);size_t real_size malloc_usable_size(a);a[real_size] 0;return 0; }影响&#xff1a; chunk a&#xff0…

二叉树基础oj练习(单值二叉树、相同的树、二叉树的前序遍历)

讲了这么多数据结构相关的知识(可以看我的数据结构文章专栏): 抓紧刷题巩固一下了 目录 1.单值二叉树 题目描述 思路1 代码1 思路2 代码2 2.相同的树 题目描述 思路 代码 3.二叉树的前序遍历 代码 思路 1.单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCod…

【数据库】CRUD常用函数UNION 和 UNION ALL

文章目录 一、CRUD二、函数2.1 字符函数 (Character Functions):2.2 数字函数 (Numeric Functions):2.3 日期函数 (Date Functions):2.4 流程控制函数:2.5 聚合函数: 三、UNION 和 UNION ALL3.1 UNION&#xff1a;3.2 UNION ALL3.3 注意事项 一、CRUD CRUD 是指数据库操作的四…

018、通用集合类型

Rust标准库包含了一系列非常有用的被称为集合的数据结构。大部分的数据结构都代表着某个特定的值&#xff0c;但集合却可以包含多个值。 与内置的数组与元组类型不同&#xff0c;这些集合将自己持有的数据存储在了堆上。这意味着数据的大小不需要在编译时确定&#xff0c;并且可…

第11课 利用windows API捕获桌面图像并通过FFmpeg分享

在上一章&#xff0c;我们已经实现了一对一音视频对话功能。在实际应用中&#xff0c;我们常需要把自己的电脑桌面分享给他人以实现桌面共享功能&#xff0c;这种功能在视频会议、在线教学等场景中很常见&#xff0c;这种功能如何实现呢&#xff1f;这节课我们就来解决这个问题…

初识Linux shell

Linux初探 Linux系统可以划分为4个部分&#xff1a; Linux内核&#xff1a;Linux系统的核心&#xff0c;控制着系统的所有硬件和软件&#xff0c;在必要时分配硬件&#xff0c;并根据需要执行软件。 内核主要功能&#xff1a; 系统内存管理&#xff1a;内核通过硬件上称为交换…

VS+QT五子棋游戏开发

1、首先安装好VS软件和QT库&#xff0c;将其配置好&#xff0c;具体不在此展开说明。 2、文件结构如下图&#xff1a; 3、绘制棋盘代码&#xff0c;如下&#xff1a; void Qwzq::paintEvent(QPaintEvent* event) {QPainter painter(this);painter.setRenderHint(QPainter::An…

VMware Workstation虚拟机CentOS 7.9 配置固定ip的步骤

VMware Workstation虚拟机CentOS7.9配置固定ip的步骤 编辑虚拟机 打开VMware Workstation。 选择要配置的虚拟机&#xff0c;但不要启动它。 点击“编辑虚拟机设置”&#xff08;Edit virtual machine settings&#xff09;。 选择“网络适配器”&#xff08;Network Adapter&…

ArcGIS制图技巧总结

Part 1 制图综述 1.1 制图的目的 随着GIS在各行各业的深入应用&#xff0c;各信息化部门和生产单位都逐渐建立起自己的GIS的应用&#xff0c;同时积累了大量的地理数据。随着应用深度和广度的推进&#xff0c;针对数据建立专题应用越来越迫切&#xff0c;对行业专题制图的需…