Docker使用扩展

news2024/11/28 12:40:00

日升时奋斗,日落时自省 

目录

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.coloradmin.cn/o/1365430.html

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

相关文章

FPGA高端项目:纯verilog的 25G-UDP 高速协议栈,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的以太网方案本协议栈的 1G-UDP版本本协议栈的 10G-UDP版本1G 千兆网 TCP-->服务器 方案1G 千兆网 TCP-->客户端 方案10G 万兆网 TCP-->服务器客户端 方案 3、该UDP协议栈性能4、详细设计方案设计架构框图网络调试助手…

《Learning eBPF》读书笔记

文章目录 章节内容简介第1章 什么是ebpf&#xff0c;为什么它很重要&#xff1f;第2章 ebpf版hello world第3章 ebpf程序剖析ebpf虚拟机一个xdp的hello word例子c语言程序编译为ebpf字节码加载bpf程序到内核检查加载的程序运行时编译机器码附加到事件分离程序卸载程序 第4章 bp…

CAN物理层协议介绍

目录 ​编辑 1. CAN协议简介 2. CAN物理层 3. 通讯节点 4. 差分信号 5. CAN协议中的差分信号 1. CAN协议简介 CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519) &#xff0…

光明源@智慧公厕系统的功能介绍-详情可点击查看

什么是智慧公厕系统&#xff1f;智慧公厕系统是一种通过科技手段提升公共卫生设施管理和服务水平的解决方案。智慧公厕系统都有哪些功能呢&#xff1f;那么小编讲以光明源的角度来讲一下公厕系统都有哪些功能&#xff01; 光明源智慧公厕系统-实时监控和管理公厕 该系统使用各…

【leetcode】力扣算法之旋转图像【难度中等】

题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 用例 输入&#xff1a; matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…

【Spring实战】26 使用Spring Security 保护 Spring Boot Admin

文章目录 1. 定义1.集成流程1&#xff09;添加 Spring Boot Admin 依赖2&#xff09;配置 Spring Boot Admin3&#xff09;启动 Spring Boot Admin 服务4&#xff09;访问 Spring Boot Admin 服务5&#xff09;添加 Spring Security 依赖6&#xff09;配置 Spring Security7&am…

【书生大模型00--开源体系介绍】

书生大模型开源体系介绍 0 通用人工智能1 InternLM性能及模型2 从模型到应用 大模型成为目前很热的关键词&#xff0c;最热门的研究方向&#xff0c;热门的应用&#xff1b;ChatGPT的横空出世所引爆&#xff0c;快速被人们上手应用到各领域&#xff1b; 0 通用人工智能 相信使…

02、Kafka ------ 配置 Kafka 集群

目录 配置 Kafka 集群配置步骤启动各Kafka节点 配置 Kafka 集群 启动命令&#xff1a; 1、启动 zookeeper 服务器端 小黑窗输入命令&#xff1a; zkServer 2、启动 zookeeper 的命令行客户端工具 &#xff08;这个只是用来看连接的节点信息&#xff0c;不启动也没关系&#…

Hadoop3.3.5云服务器安装教程-单机/伪分布式配置

系列文章目录 华为云服务器试用领取 领取的试用云服务器在哪 Hadoop3.3.5云服务器安装教程-单机/伪分布式配置 文章目录 系列文章目录创建hadoop用户更新apt安装SSH、配置SSH无密码登陆安装Java环境安装 Hadoop3.3.5Hadoop单机配置(非分布式)Hadoop伪分布式配置运行Hadoop伪分…

【AI视野·今日Sound 声学论文速览 第四十二期】Fri, 5 Jan 2024

AI视野今日CS.Sound 声学论文速览 Fri, 5 Jan 2024 Totally 10 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers PosCUDA: Position based Convolution for Unlearnable Audio Datasets Authors Vignesh Gokul, Shlomo Dubnov深度学习模型需要大量干净的…

Windows.OpenSSL生成ssl证书配置到nginx

一、下载OpenSSL程序安装 到E:\soft\OpenSSL-Win64 二、打开一个CMD控制台窗口&#xff0c;设置好openssl.cnf路径 E: cd E:\soft\OpenSSL-Win64\bin set OPENSSL_CONFE:\soft\OpenSSL-Win64\bin\openssl.cnf 三、在当前目录 E:\soft\OpenSSL-Win64\bin 里创建两个子目录 m…

UVa12419 Heap Manager

题目链接 UVa12419 - Heap Manager 题意 内存以内存单元为基本单位&#xff0c;每个内存单元用一个固定的整数作为标识&#xff0c;称为地址。地址从0开始连续排列&#xff0c;地址相邻的内存单元被认为是逻辑上连续的。我们把从地址i开始的s个连续的内存单元称为首地址为i长度…

三代半导体材料有何区别

什么是半导体材料 半导体材料是制作半导体器件和集成电路的电子材料&#xff0c;是半导体工业的基础。利用半导体材料制作的各种各样的半导体器件和集成电路&#xff0c;促进了现代信息社会的飞速发展。 绝缘体、半导体和导体的典型电导率范围 半导体材料的研究开始于19世纪初…

行走在深度学习的幻觉中:问题缘由与解决方案

如何解决大模型的「幻觉」问题&#xff1f; 我们在使用深度学习大模型如LLM&#xff08;Large Language Models&#xff09;时&#xff0c;可能会遇到一种被称为“幻觉”的现象。没错&#xff0c;它并不是人脑中的错觉&#xff0c;而是模型对特定模式的过度依赖&#xff0c;这…

ChatGPT学习笔记——大模型基础理论体系

1、ChatGPT的背景与意义 近期,ChatGPT表现出了非常惊艳的语言理解、生成、知识推理能力, 它可以极好的理解用户意图,真正做到多轮沟通,并且回答内容完整、重点清晰、有概括、有条理。 ChatGPT 是继数据库和搜索引擎之后的全新一代的 “知识表示和调用方式”如下表所示。 …

任务调度实现

一、定时任务概述 在项目中开发定时任务应该一种比较常见的需求&#xff0c;在 Java 中开发定时任务主要有三种解决方案&#xff1a;一是使用JDK 自带的 Timer&#xff0c;二是使用 Spring Task&#xff0c;三是使用第三方组件 Quartz Timer 是 JDK 自带的定时任务工具,其简单易…

Nougat:科学文档的OCR 使用记录

https://github.com/facebookresearch/nougat python环境需要在3.8以上 安装&#xff1a;pip install nougat-ocr 模型默认下载地址&#xff1a;/home/****/.cache/torch/hub/nougat-0.1.0-small 环境安装好之后默认使用cpu UserWarning: CUDA initialization: The NVIDIA dr…

数据恢复软件哪个好?10款好用的数据恢复软件推荐(免费和付费)

我们使用的个人电脑、智能手机和其他数字设备包含我们所有的个人和重要数据。我们不能丢失数据&#xff0c;幸运的是&#xff0c;这些设备都不可靠。它们可能随时损坏或损坏&#xff0c;在此过程中丢失我们的重要数据。 不幸的是&#xff0c;没有工具可以 100% 确保您永远不会丢…

2024 年 API 安全:预测和趋势

随着技术以前所未有的速度不断进步&#xff0c;API&#xff08;应用程序编程接口&#xff09;安全性的复杂性也随之增加。随着 API 在现代应用程序和服务中的激增&#xff0c;组织将需要更好地了解其 API 环境以及 API 给运营带来的风险。 到 2024 年&#xff0c;预计几个关键…

olap/spark-tungsten:codegen

15721这一章没什么好说的&#xff0c;不再贴课程内容了。codegen和simd在工业界一般只会选一种实现。比如phothon之前用codegen&#xff0c;然后改成了向量化引擎。一般gen的都是weld IR/LLVM IR/当前语言&#xff0c;gen成C的也要检查是不是有本地预编译版本&#xff0c;要不没…