当前位置: 首页 > news >正文

Linux之Docker虚拟化技术(二)

一、创建docker-service服务

/usr/lib/systemd/system目录下创建服务文件,这里可能会出现环境问题报错,我这里就做了一个软链接映射到docker启动目录

其修改的配置文件如下

[Unit]
Description=Docker server daemon
Documentation=man:docker(8) man:sshd_config(5)
After=network.target docker-keygen.target
Wants=docker-keygen.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=multi-user.target

二、docker网络模式(四种)

  • host模式

宿主机和容器共用一套端口,IP地址相同,端口范围也仅限在1~65535范围

[root@localhost ~]# docker run -itd --name=vm01 --net=host rockylinux-ssh:latest
87b25827ac3ed0c55d2a921e4173baf170d0b6ec389f5d25512fe148cf183003
[root@localhost ~]# 

  • container模式

所创建的虚拟机和你创建的容器为同一个IP

首先我这里创建了一台虚拟机的IP是在虚拟网桥docker0分配的

## 创建虚拟机
docker run -itd --name=vm0 rockylinux-ssh:latest

根据创建的虚拟机做一个container网络模式的映射

[root@localhost ~]# docker run -itd --name=vm1 --net=container:vm0 rockylinux-ssh:latest
7d7b6ffd62e70a61ac76c6a77e70fd03e7ed7d37c09944f9748e7bccc4ca8a99

下面我们是根据container模式创建的虚拟机,它和我们创建的vm0容器的ip、网关掩码都是一样的

  • None模式(自定义ip地址 静态IP )

虚拟机内的网卡IP不会被分配,需要手动进行配置,常用pipework进行手动配置

[root@localhost ~]# docker run -itd --name=vm2 --net=none rockylinux-ssh:latest
dddf11283b2057252abb70494cf6405c62e341fb1fcbd3a89f917fca07d9448f

查看容器内网卡信息

这里的自定义网卡信息我们通常会使用pipework工具来自定义设置

## 安装pipework工具
git clone https://github.com/jpetazzo/pipework## 通常情况下我们会把他放在/usr/bin目录下## 为了防止权限无法访问我们通常会个给它授予权限
[root@localhost ~]# chmod +x  /usr/bin/pipework
[root@localhost ~]# 

检验之后效果如图所示

创建自定义网络过程


## pipework 参数解释
docker0 指代宿主机与虚拟机的通信的网卡
## -i 指定创建的网卡名
## vm2只创建的容器
## 192.168.101.128指桥接网段指定的ip 
## 24表示掩码
## 172.17.0.1 表示网关
#############[root@localhost system]# pipework docker0 -i eth0 vm2 192.168.101.128/24@172.17.0.1

自定义网卡已经配置成功

  • bridge桥接模式(默认桥接方式)

默认会将docker容器连接到虚拟网桥交换机,然后虚拟机IP会由这个虚拟网桥交换机进行IP转发

创建过程如下

1.首先docker虚拟机会将虚拟网卡与虚拟网桥交换机搭建为veth_pair设备

2.然后veth_par一端在容器的内部,默认情况下docker容器veth_pair会被放在一个虚拟网桥交换机中,而不同容器会有多个veth_par对,其内部通信

3.然后通过虚拟网桥交换机通过docker0连接dhcp池子自动分配一个ip和端口配置

4.此时容器可以与宿主机进行通信,同时也可以与外网进行通信,但是其他宿主机访问宿主机的容器时是需要通过nat规则进行ip路由的转发,从而映射到宿主机ip和端口

原理图如下:

桥接物理网卡,保证在局域网内部容器充当机器都能内部通信

  • 首先将宿主机的docker0网卡设置成br0,ens33网卡桥接一个网卡br0,具体配置情况如下图所示

ens33网卡加入如下配置

Bridge="br0"

将docker0网卡设置为桥接网卡


## 配置信息如下
## 主要给ifcfg-br0网卡配置文件加入如下配置即可TYPE="BRIDGE"
BOOTPROTO="static"
TYPE="BRIDGE"
BOOTPROTO="static"
GATEWAY=192.168.101.2
DNS1=114.114.114.114                                                                                                                
~                             ### 重启网卡
sytemctl restart NetworkManager

已经桥接到了br0网卡

使用桥接的自定义网桥 分配虚拟网桥段的ip

修改service启动配置文件

创建网卡,分配网卡地址

[root@localhost ~]# pipework br0 -i eth0 vm6 192.168.101.88/24@192.168.101.1
[root@localhost ~]# 

http://www.dtcms.com/a/357003.html

相关文章:

  • Python结构化模式匹配:解析器的革命性升级
  • 大模型 “轻量化” 之战:从千亿参数到端侧部署,AI 如何走进消费电子?
  • 【ACP】2025-最新-疑难题解析-11
  • 机器视觉opencv教程(二):二值化、自适应二值化
  • Partner 类开发:会议参与者可视化控件
  • 经典扫雷游戏实现:从零构建HTML5扫雷游戏
  • 科技大会用了煽情BGM
  • 【技术分享】系统崩溃后产生的CHK文件如何恢复?完整图文教程(附工具推荐)
  • 论文阅读:GOAT: GO to Any Thing
  • 智慧工地系统:基于Java微服务与信创国产化的建筑施工数字化管理平台
  • 开关电源设计“反馈回路”部分器件分析
  • Nginx的主要配置文件nginx.conf详细解读——及其不间断重启nginx服务等操作
  • 从Cloudflare到EdgeOne:我的个人站点加速之旅与性能对比实测
  • LeetCode Hot 100 Python (11~20)
  • 微服务入门指南(一):从单体架构到服务注册发现
  • 将自己的jar包发布到maven中央仓库(2025-08-29)
  • 【Web安全】文件上传下载安全测试的全面剖析与实践指南
  • 如何在实际应用中选择Blaze或Apache Gluten?
  • 深入解析PCIe 6.0拓扑架构:从根复合体到端点的完整连接体系
  • 【国内电子数据取证厂商龙信科技】ES 数据库重建
  • shell命令扩展
  • Qt类-扩充_xiaozuo
  • ArcGIS Pro中 Nodata和nan 黑边的处理
  • 沃尔玛AI系统Wally深度拆解:零售业库存周转提速18%,动态定价争议与员工转型成热议点
  • 【lua】Lua 入门教程:从环境搭建到基础编程
  • Java深拷贝与浅拷贝核心解析
  • C primer plus (第六版)第十一章 编程练习第1,2,3,4题
  • typescript postgres@3.x jsonb数据插入绕过类型检测错误问题
  • Linux驱动学习-spi接口
  • 手写一个Spring框架