docker-2

27.构建python应用镜像-dockerfile实践项目

1.基于官方的镜像,构建python代码运行环境 dockerfile

2.运行镜像,开启一个读写的容器空间(定制操作,将代码丢进去,运行调试)

3.提交这个变化的容器层数据,提交新的镜像 docker commit

4.运行新镜像,加入参数,运行的容器可以端口映射且访问页面

5.这里还要写容器内的应用程序的启停脚本:-v 将脚本映射到容器去

 --改进:镜像只提供一个运行环境,其他数据:配置文件、源码、脚本,都尽量使用-v 映射进去方便进行维护

28.容器的无状态和有状态

容器运行的nginx产生的数据可以随意丢弃,称为无状态

容器运行的数据库产的数据很重要,需要对数据持久化存储,称为有状态

dockerfile中volume参数的作用:将数据映射出来,防止运维运行忘记主动使用-v参数

29.Docker存储卷用法

volume数据卷

作用:避免重要的数据,因容器重启而丢失,避免容器不断变大,产生大朗的数据,容器最终可以提供为镜像

可以使用-v参数,主动修改 -v 宿主机:容器:权限,权限2

30.搭建nginx+centos镜像 

cd /opt/dockerfile/7.9test
curl -o ./Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o ./epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repocat >Dockerfile <<'EOF'
> FROM centos:7.9.2009
> RUN rm -rf /etc/yum.repos.d/*
> ADD *.repo /etc/yum.repos.d/
> RUN yum makecache fast \
> && yum install nginx -y \
> && yum clean all
> EXPOSE 80
> CMD ["nginx","-g","daemon off;"]
> EOFdocker bulit -t nginx .

之后 dokcer run -d -P nginx  然后访问端口发现报错403.根据 docker部署nginx报403 拍错

31.cmd、entrypoint关系

32.dockerfile的优化方案(官网里有)

33.Dockerfile多阶段构建jar包

每一个镜像,都可以作为公共镜像,让其他镜像再使用

centos + jdk环境

运行jar包,下载对应jar包,docker run -v 把jar映射到容器内 使用镜像 java -jar xxx.jar包

34.mysql为什么要加入-v 一些参数,才能容器化启动?

因为mysql容器中有entryponit中的脚本中,必须运行的时候必须要有指定的 参数才能启动

35.docker history完整信息截取

docker history -- help 有一个完全信息参数   |  gerp -i +需要查询的关键信息

36.拿到镜像怎么做?

首先查询docker hub中文档,再查看该镜像的entrypoint脚本中需要指定的参数,怎么运行

37.提取容器ip格式化语法---format语法学一下

docker inspect `docker ps -aq`|grep -i IPaddress

docker inspect --format='{{.NetworkSettings.Networks.bridge.IPAddress}}' 容器名

# 简单玩法, 基于key 提取value,格式化主机名,容器ip

docker inspect --format='{{.Name}}   {{.NetworkSettings.Networks.bridge.IPAddress}}'  `docker ps -aq`

38.容器部署zabbix、jenkins等

39.yaml语法

基于容器化部署的应用,都是使用yaml语法

json网站格式,理解yaml格式类型(主要是字典和列表),使用工具yaml转json对应看

{  }--字典,里面每一个,就是一个元素---网站对应看


version: '3'      # yaml语法版本,版本越高,支持字段就越多,得看官网文档,有有哪些字段语法
services:		   #定义服务,名字myjenkins:		# myenkins服务image: 'jenkins/jenkins:latest'  # 镜像名container_name: myjenkins   # 你运行容器的名字 restart: always   # 容器重启策略privileged: true		# 特权化运行容器user: root		# 制定容器进程执行用户 ports:- '8080:8080'  - '50000:50000'volumes:- '/linux0224_data/jenkins:/var/jenkins_home'- '/var/run/docker.sock:/var/run/docker.sock'- '/usr/bin/docker:/usr/bin/docker'- '/root/.ssh:/root/.ssh'

40.docker-compse使用(注意有缩进)

1.安装 2.写docker-compose.yml  3.语法校验docker-compose.yml ,然后运行docker-compose up -d

41.私有仓库docker-harbor

1.下载harbor软件包、yaml文件

2.查看解压文件,修改相关参数   运行部署脚本

3.修改docker配置,支持非https镜像仓库

4.推送到私有镜像仓库,需要修改镜像tag,指定项目地址

5.登录docker harbor  login输入账号密码才能推和拉取镜像

42.私有registry仓库,纯api形式的仓库

43.docker所有网桥信息查询

docker inspect  `docker network ls -q` |grep -i '"Subnet"'

docker network ls

docker查看资源信息的命令

docker inspect image xx

docker inspect container xx

docker inspect network  xx

44.docker网桥与虚拟网络接口的关系

45.docker网桥的增删改查

46.容器访问控制

容器和宿主机之间通信 宿主机和外网之前通信

容器与容器之间的通信:使用同一个网桥

47.容器通信方式

网桥模式:一般docker network ls name为bridge的是dokcer0

docker0为二层交换机,分配ip地址

-net 的参数含义(网桥有用默认的网桥,也有自创的,也有用已存在的网桥)

主机模式:容器不创建单独的网络环境,直接使用宿主机的network

none:单机无网络环境的容器,需要计算产生数据的一些服务,比如AI 深度学习纯计算服务

48.网桥创建的时候,可以使用网络工具  百度搜 子网创建器

49.brctl show 、ifconfig:br-开头的都是自建网桥、docker network ls

50.查看网桥和容器的关系,查看网桥有哪些容器使用?

docker inspect 网桥 -->查看该网桥的子网网段 和 containers中使用该网桥的容器名及ip

51.如何使用自建网桥br-X,创建一个veth接口: docker run -d -p XXX:XXX --network=该网桥id 镜像,使用该网桥就自动创建相应的虚拟网络接口

52.修改docker0网段

查看docker0信息 docker inspect bridge

docker run -it busybox  --- ifconfig查看docker0网段信息

公司对容器网络环境有要求,给了ip范围,说了你们的容器的环境只能是192.168.15.0/24,去修改docker配置文件 添加zip 192.168.15.1/24

53.网络总结

1. 桥接模式(Bridge)

优点

  • 隔离性好:每个容器都有独立的网络命名空间,相互之间隔离,不会互相干扰。
  • 简单易用:桥接网络是Docker的默认网络模式,无需额外配置,容器可以直接进行通信。
  • 支持跨主机通信:虽然桥接模式本身主要适用于单机部署,但可以通过端口映射或Overlay网络实现跨主机通信。
  • 支持端口映射:方便外部访问容器内的服务。

缺点

  • 性能损失:桥接网络需要进行网络地址转换(NAT),可能会引入一定的性能损失。
  • 端口冲突:如果多个容器使用相同的端口号,可能会导致端口冲突。
  • 网络隔离性限制:虽然容器间网络隔离,但容器仍可通过宿主机的网桥进行通信,这可能带来一定的安全风险。

2. 主机模式(Host)

优点

  • 性能最优:容器直接使用宿主机的网络接口和IP地址,无需进行额外的网络地址转换,性能最高。
  • 简化网络配置:容器与宿主机共享网络命名空间,无需进行端口映射或网络转发配置。
  • 无需网络策略:只要能访问到宿主机,就能访问到容器。

缺点

  • 安全性降低:容器与宿主机共享网络命名空间,容器可以直接访问主机上的网络资源,增加安全风险。
  • 端口冲突:如果多个容器使用相同的端口号,可能会导致端口冲突。
  • 隔离性差:容器不再拥有独立的网络栈,网络环境隔离性差。

3. 容器模式(Container)

优点

  • 高效通信:两个容器共享同一个网络命名空间,容器间通信非常高效,无需经过宿主机的网络栈。
  • 简化配置:对于需要紧密协作的容器(如微服务架构中的容器),容器模式可以简化网络配置。

缺点

  • 隔离性差:与桥接模式一样,宿主机意外的其他主机无法访问到容器。
  • 安全性问题:由于容器间共享网络命名空间,一个容器的网络安全问题可能影响到其他容器。

4. 自定义网络模式

优点

  • 高度可配置:支持各种网络驱动(如bridge、overlay、macvlan等),可以根据需要创建复杂的网络拓扑。
  • 提供隔离性和安全性:通过子网、网关、DNS等配置,实现容器间的隔离和通信控制。
  • 支持服务发现:在自定义网络中,容器可以通过服务名进行通信,而无需关注底层网络配置。

缺点

  • 配置复杂度较高:需要适当的网络知识来配置自定义网络。
  • 可能涉及额外的网络性能开销:特别是在使用跨主机网络通信时。

5. 无网络模式(None)

优点

  • 安全性增强:容器与外部网络完全隔离,提供更高的安全性。
  • 资源节省:无需为容器分配网络接口和IP地址,节省网络资源。

缺点

  • 无法进行网络通信:容器无法与外部网络或其他容器进行通信,仅适用于不需要网络连接的场景。

54.先想好命令怎么敲--->再转为yaml格式

55.如何使用docker-compose

docker-compose命令语法

教程文档:

https://yeasy.gitbook.io/docker_practice/compose/compose_file

粘贴代码使用粘贴模式 set paste

56.docker-compose部署zabbix

学习软件 sublime Text、Notepad++

把yaml格式都放到sublime Text中加入yaml格式写看,再使用vim 的粘贴模式粘贴

docker-compose容器编排后也要用docker-compose命令管理,尽量别使用docker命令管理

57.使用docker-compose部署wordpress

docker-compose -f wordpress.yml ps

docker inspect wordpress-compose_db_1 

# 容器内,暴露的数据卷
            "Volumes": {
                "/var/lib/mysql": {}
            },

# 挂在再外部的信息
 },
        "Mounts": [
            {
                "Type": "volume",  # 卷的类型
                "Name": "wordpress-compose_db_data",
                "Source": "/var/lib/docker/volumes/wordpress-compose_db_data/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            }
        ],

# volume 类型解释
# volume   容器内的数据,映射到宿主机的 /var/lib/docker/volumes/卷的名字
# bind类型   docker run -v 宿主机目录:容器目录

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

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

相关文章

生产英特尔CPU处理器繁忙的一天

早晨&#xff1a;准备与检查 7:00 AM - 起床与准备 工厂员工们早早起床&#xff0c;快速洗漱并享用早餐。为了在一天的工作中保持高效&#xff0c;他们会进行一些晨间锻炼&#xff0c;保持头脑清醒和身体活力。 8:00 AM - 到达工厂 员工们到达英特尔的半导体制造工厂&#…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…

javaweb中的请求与响应--基于postman工具的应用(附带postman的详细安装步骤)

一、前言 后端的第一天感觉难度就上来了&#xff0c;可能是基础太过薄弱了吧。目前看视频已经有点跟不上了&#xff0c;果然15天想要拿下还是太勉强了点。30天还差不多。不知道读者们有没有好好的去学这方面的知识&#xff0c;没有什么是学不会的&#xff0c;关键是坚持。 Po…

Ubuntu22.04安装NIVIDIA显卡驱动总结

1.首先在安装驱动时需要判断系统有无GPU以及GPU的型号 可以参考这篇文章&#xff1a; https://blog.51cto.com/u_13171517/8814753#:~:textubuntu%20%E7%B3%BB%E7%BB%9F%20%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD%E7%B3%BB%E7%BB%9F%E6%9C%89%E6%B2%A1%E6%9C%89GPU%201%20%E6%…

STM32实战篇:闪灯 × 流水灯 × 蜂鸣器

IO引脚初始化 即开展某项活动之前所做的准备工作&#xff0c;对于一个IO引脚来说&#xff0c;在使用它之前必须要做一些参数配置&#xff08;例如&#xff1a;选择工作模式、速率&#xff09;的工作&#xff08;即IO引脚的初始化&#xff09;。 IO引脚初始化流程 1、使能IO引…

乐观锁原理

乐观锁是一种并发控制的方法&#xff0c;主要用于多线程环境下&#xff0c;用于保证数据的一致性。其核心思想是&#xff1a;"在多个事务中乐观地读取数据&#xff0c;在提交时再验证是否有冲突&#xff0c;如果没有&#xff0c;则提交&#xff1b;如果有&#xff0c;则回…

每天五分钟深度学习:向量化技术在神经网络中的应用

本文重点 向量化技术,简而言之,就是利用矩阵运算(而非传统的for循环)来执行大规模的计算任务。这种技术依赖于单指令多数据(SIMD)架构,允许一个指令同时对多个数据元素执行相同的操作。例如,在向量化加法中,不再需要逐个元素进行加法操作,而是可以一次性对整个向量执…

Android使用AndServer在安卓设备上搭建服务端(Java)(Kotlin)两种写法

一直都是通过OkHttp远程服务端进行数据交互&#xff0c;突发奇想能不能也通过OkHttp在局域网的情况下对两个安卓设备或者手机进行数据交互呢&#xff1f; 这样一方安卓设备要当做服务端与另一个安卓设备通过OkHttp进行数据交互即可 当然还可以通过 socket 和 ServerSocket 通…

EasyExcel批量读取Excel文件数据导入到MySQL表中

1、EasyExcel简介 官网&#xff1a;EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 2、代码实战 首先引入jar包 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</v…

PMP–知识卡片--项目管理五大过程组

记忆 五大“项目管理过程组”&#xff1a;启动&#xff0c;规划&#xff0c;执行&#xff0c;监控&#xff0c;收尾 五个领域&#xff0c;十个字&#xff0c;形象理解&#xff0c;理解逻辑&#xff1a;先启动→再规划→再执行→要监控→最后收尾 定义 经典项目管理场景将项目…

“闭门造车”之多模态思路浅谈:自回归学习与生成

©PaperWeekly 原创 作者 | 苏剑林 单位 | 科学空间 研究方向 | NLP、神经网络 这篇文章我们继续来闭门造车&#xff0c;分享一下笔者最近对多模态学习的一些新理解。 在前文《“闭门造车”之多模态思路浅谈&#xff1a;无损》中&#xff0c;我们强调了无损输入对于理想的…

mac生成.dmg压缩镜像文件

mac生成.dmg压缩镜像文件 背景准备内容步骤1&#xff0c;找一个文件夹2&#xff0c;制作application替身1&#xff0c;终端方式2&#xff0c;黄金右手方式 3&#xff0c;.app文件放入文件夹4&#xff0c;制作.dmg压缩镜像文件5&#xff0c;安装.dmg 总结 背景 为绕开App Store…

Go语言---并发编程之channel(双channel,单channel)以及应用实例(生产者消费者、打印机模型)

Channel goroutine 运行在相同的地址空间&#xff0c;因此访问共享内存必须做好同步。goroutine 通过通信来共享内存&#xff0c;而不是其享内存来通信。 引用类型 channel 是CSP 模式的具体实现,用于多个 goroutine 通讯。其内部实现了同步&#xff0c;确保并发安全。 chan…

FastAPI 学习之路(三十四)数据库多表操作

之前我们分享的是基于单个表的数据库表的操作&#xff0c;我们在设计数据库的时候也设计了跨表&#xff0c;我们可以看下数据库的设计 class User(Base):__tablename__ "users"id Column(Integer, primary_keyTrue, indexTrue)email Column(String(10), uniqueTr…

Python:Python基础知识(注释、命名、数据类型、运算符)

.注释 Python有两种注释方法&#xff1a;单行注释和多行注释。单行注释以#开头&#xff0c;多行注释以三个单引号 或三个双引号 """ 开头和结尾。 2.命名规则 命名规则: 大小写字母、数字、下划线和汉字等字符及组合&#xff1b; 注意事项: 大小写敏感、首…

ESP32FreeRTOS开发笔记:1.双核并行

ESP32 的 Arduino 框架内部集成了 FreeRTOS&#xff0c;允许开发者利用其多任务处理功能。在代码中&#xff0c;xTaskCreatePinnedToCore 函数是 FreeRTOS 提供的 API&#xff0c;用于创建任务并指定任务在哪个核心上运行。 FreeRTOS 是一个流行的实时操作系统内核&#xff0c;…

JavaSE学习笔记之内部类、枚举类和基本类型包装类

今天我们继续复习Java相关的知识&#xff0c;和大家分享有关内部类等方面的知识&#xff0c;希望大家喜欢。 目录​​​​​​​ 内部类 成员内部类 ​编辑 静态内部类 局部内部类 匿名内部类 枚举类 定义方法 基本类型包装类 自动装箱和拆箱 内部类 成员内部类 成…

《Windows API每日一练》9.1.5 自定义资源

自定义资源&#xff08;Custom Resources&#xff09;是在 Windows 程序中使用的一种资源类型&#xff0c;用于存储应用程序特定的数据、图像、音频、二进制文件等。通过自定义资源&#xff0c;开发者可以将应用程序所需的各种资源文件集中管理和存储&#xff0c;便于在程序中访…

从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用

一、背景需求分析 近日&#xff0c;我国多省市遭遇连日暴雨&#xff0c;导致水库、湖泊、河道等水域水位暴涨&#xff0c;城市内涝频发。随着夏季汛期的到来&#xff0c;降雨天气频繁&#xff0c;水利安全管理面临严峻挑战。为保障水库安全、预防和减少洪涝灾害&#xff0c;采…

文档去重(TF-IDF,MinHash, SimHash)

2个doc有些相似有些不相似&#xff0c;如何衡量这个相似度&#xff1b; 直接用Jaccard距离&#xff0c;计算量太大 TF-IDF: TF*IDF TF&#xff1a;该词在该文档中的出现次数&#xff0c; IDF&#xff1a;该词在所有文档中的多少个文档出现是DF&#xff0c;lg(N/(1DF)) MinHash …