docker网络模式及配置

一、Docker网络模式

docker run 创建docker容器时,可以用-net选项指定容器的网络模式,docker有以下4种网络模式:

  1. host 模式,使用-net=host指定。
  2. container模式,使用-net=container:NAME_or_ID指定。
  3. none模式,使用-net=none 指定。
  4. bridge模式,使用-net=bridge 指定,默认设置。

****1、****host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。例如,我们在10.10.101.105/24的机器上用host模式启动一个含有web应用的docker容器,监听tcp 80端口。当我们在容器中执行任何类似ifconfig 命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用 10.10.101.105:80 即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

****2、****container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

****3、****none模式

这个模式和前两个不同。在这种模式下,docker容器拥有自己的Network Namespace,但是,并不为docker容器进行任何网络配置。也就是说,这个docker容器没有网卡、IP、路由等信息。需要我们自己为docker容器添加网卡、配置IP等。

****4、****bridge模式

docker-bridge,bridge模式是docker 默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的docker容器连接到一个虚拟网桥上。当docker server 启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般docker会使用172.17.0.0/16 这个网段,并将172.17.42.1/16分配给docker0网桥(在主机上使用 ifconfig 命令是可以看到 docker0 的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)

二、Docker网络配置–设置固定IP

docker容器在启动时默认使用的是bridge模式,docker容器启动后,会连接到一个名为 docker0 的虚拟网桥,故每次启动docker容器的IP都不是固定的,不方便管理,有时候需要进行固定IP映射,比如docker集群管理时。docker容器设置固定IP时需要用到需要用到 pipework,用于给容器设置IP:

1、host宿主机下载pipework如下:

[root@virt ~]#git clone https://github.com/jpetazzo/pipework.git

[root@virt ~]#cp pipework/pipework /usr/local/bin/

2、安装网桥工具包bridge-utils

[root@virt ~]#yum -y install bridge-utils

3、创建网桥并设置IP网段

[root@virt ~]#brctl addbr br1

[root@virt ~]#ip link set dev br1 up

[root@virt ~]#ip addr add 192.168.10.1/24 dev br1

4、启动一个容器

#基于 centos 这个镜像启动一个容器,名为 centos-ip

[root@virt ~]#docker run -d --name=centos-ip centos

5、设置IP

[root@virt ~]#pipework br1 centos-ip 192.168.10.20/24#为centos-ip容器指定了IP 192.168.10.20

注:分别使用 ping与ssh命令进行验证,看是否可以ping通和成功登录

[root@virt ~]#ping 192.168.10.20

[root@virt ~]#ssh 192.168.10.20

注意:SSH时需要输入容器centos的root密码,如果在创建centos容器时未指定root密码,可先进入容器设置root密码:

$ docker exec -it 容器ID/NAME

$ sudo passwd root

6、网桥管理

[root@virt ~]#brctl show #查看网桥状态

[root@virt ~]#brctl delif <网桥名> <端口名> #卸载网桥上的端口

[root@virt ~]#ifconfig #查看是否有网桥网卡名

[root@virt ~]#ifconfig <网桥名> down #关闭此网卡

[root@virt ~]#brctl delbr <网桥名> #删除网桥

7、docker版本1.9以后可使用下面这种方式:

7.1********创建自定义网络

[root@virt ~]#docker network create --subnet=192.168.10.1/24 network_my

[root@virt ~]#docker network ls

NETWORK ID NAME DRIVER SCOPE

1fb22da7d8a3 bridge bridge local

fe259334b842 host host local

8c5971ff48d8 network_my bridge local

3aaf0356c19c none null local

7.2********启动Docker容器

[root@virt ~]#docker run -itd --name hadoop0 --hostname hadoop0 --net network_my --ip 192.168.10.30 -d -P -p 50070:5

原文链接:Docker系列(四)Docker 网络模式及配置-CSDN博客

7.3确认自建网络的容器

[root@virt ~]#docker network inspect anylinknet

7.4删除自建网络

[root@virt ~]#docker network rm anylinknet

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

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

相关文章

docker中配置redis

1、常规操作 docker pull redis&#xff08;默认你的docker中没有redis&#xff09; 2、查看redis是否拉取成功 docker images redis 3、创建目录&#xff0c;在你的宿主机&#xff0c;&#xff08;我是在虚机中建的centos7&#xff09;为了给redis配置文件使用 4、下载redis…

error @achrinzanode-ipc@9.2.5 The engine “node“ is incompatible with this module. 解决node.js版本不兼容问题

目录 很多人运行项目的时候会出现报错信息&#xff1a; 解决方案 然后再次运行就好了&#xff1a; 此时&#xff0c;我点击链接就可以看到了&#xff1a; 很多人运行项目的时候会出现报错信息&#xff1a; 这个错误是因为你的项目中使用了一个模块 achrinza/node-ipc&#…

ERROR 1524 (HY000) Plugin ‘mysql_native_password‘ is not loaded

你遇到的错误是由于 MySQL 版本不再默认支持 mysql_native_password 认证插件导致的。从 MySQL 8.0 开始&#xff0c;默认的认证插件是 caching_sha2_password&#xff0c;而不是 mysql_native_password。 解释&#xff1a; 错误 ERROR 1524 (HY000): Plugin mysql_native_pass…

docker下搭建redis集群

1. 环境准备 准备好Linux系统机器&#xff0c;并安装好docker&#xff0c;阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文 安装好并启动docker后就可以开始搭建redis了 2. docker容器下安装redis 本篇文章…

深度解析:为什么传统操作系统的最小权限原则在智能体世界失灵?

前言 如果我们把“AgentOS”理解为一种为智能体长期运行、持续决策、主动调用资源而设计的操作系统,那么它会暴露出一个根本性矛盾:我们正在用为“被动程序”设计的安全模型,去约束“主动行为体”。 传统操作系统的安全模型,无论是 Unix 时代的“用户-组-其他”,还是后来…

交通仿真软件:Aimsun_(1).Aimsun概述v1

Aimsun概述 1. Aimsun的基本功能 Aimsun是一款功能强大的交通仿真软件&#xff0c;广泛应用于交通规划、交通管理和交通研究等领域。它能够模拟从微观到宏观的交通流&#xff0c;提供详细的交通分析和优化建议。Aimsun的基本功能包括&#xff1a; 1.1 交通网络建模 Aimsun允许用…

ChatGLM2-6B模型推理流程和模型架构详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1 ChatGLM是什么&#xff1f;2 一代GLM 2.1 大模型架构2.2 GLM特点 2 二代GLM&#xff1a;ChatGLM2-6B为例拆解 2.1 ChatGLM2-6B模型推理架构和流程2.2 细节详…

go桌面框架Fyne最全api文档

Fyne 是一个 Go 语言的跨平台 GUI 库 相关命令 //全局安装fyne打包工具 go install fyne.io/fyne/v2/cmd/fynelatest// 引入fyne库 go get fyne.io/fyne/v2latest go mod tidy//以窗口形式启动 go run main.go //以手机模拟器形式启动 go run -tags mobile main.go//打包 //桌面…

基于微信小程序的新能源汽车租赁换电管理系统(毕设源码+文档)

课题说明本课题聚焦基于微信小程序的新能源汽车租赁换电管理系统的设计与实现&#xff0c;核心目标是解决传统新能源汽车租赁及换电服务中流程繁琐、车辆与换电站信息不透明、租赁订单管理混乱、换电预约低效、电池状态监控缺失及服务进度追踪困难等痛点问题。系统深度依托微信…

交通仿真软件:Aimsun_(3).Aimsun基本操作

Aimsun基本操作 创建和配置仿真网络 在Aimsun中&#xff0c;创建和配置仿真网络是仿真过程的第一步。仿真网络是交通仿真的基础&#xff0c;它包括道路网络、交叉口、交通信号、交通流等基本元素。本节将详细介绍如何在Aimsun中创建和配置仿真网络&#xff0c;以及如何导入和导…

代码随想录刷题——二叉树篇(十二)

112. 路径总和 递归法&#xff1a; class Solution{ public:bool sumPath(TreeNode* node,int count){# 如果该节点是叶子节点且count被减到0了&#xff0c;那么就返回trueif(!node->left&&!node->right&&count0) return true;# 如果该节点是叶子节点且c…

代码随想录刷题——二叉树篇(十二)

112. 路径总和 递归法&#xff1a; class Solution{ public:bool sumPath(TreeNode* node,int count){# 如果该节点是叶子节点且count被减到0了&#xff0c;那么就返回trueif(!node->left&&!node->right&&count0) return true;# 如果该节点是叶子节点且c…

eclipse配置Spring

1、从eclipse下载Spring工具 进入 help – install new software… &#xff0c;如下图&#xff1a; 点击 add &#xff0c;按以下方式输入&#xff1a; Name : Spring Location : http://dist.springsource.com/release/TOOLS/update/e4.10/ 之后点击 add &#xff0c;等待…

Go基础之环境搭建

文章目录 1 Go 1.1 简介 1.1.1 定义1.1.2 特点用途 1.2 环境配置 1.2.1 下载安装1.2.2 环境配置 1.2.2.1 添加环境变量1.2.2.2 各个环境变量理解 1.2.3 验证环境变量 1.3 包管理工具 Go Modules 1.3.1 开启使用1.3.2 添加依赖包1.3.3 配置国内包源 1.3.3.1 通过 go env 配置1.…

C#数据库操作系列---SqlSugar完结篇

1. 不同寻常的查询 之前介绍了针对单个表的查询&#xff0c;同样也是相对简单的查询模式。虽然开发完全够用&#xff0c;但是难免会遇到一些特殊的情况。而下面这些方法就是为了解决这些意料之外。 1.1 多表查询 SqlSugar提供了一种特殊的多表查询方案&#xff0c;使用IQueryab…

docker启动redis简单方法

1、拉取redis镜像 docker pull redis2、在本地某个位置创建以下内容 建议将以下内容放在一起&#xff0c;方便以后管理和查看 # 以/docker/redis为例 mkdir -p /docker/redis mkdir -p /docker/redis/data touch /docker/redis/redis.conf touch /docker/redis/redis.bash3、…

DVWA靶场通关——SQL Injection篇

一&#xff0c;Low难度下unionget字符串select****注入 1&#xff0c;首先手工注入判断是否存在SQL注入漏洞&#xff0c;输入1这是正常回显的结果&#xff0c;再键入1’ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio…

基于Django的网络设备租赁系统设计与实现-计算机毕业设计源码+LW文档

摘 要 近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;网络设备租赁系统利用计算机网络实现信息化管理&#xff0c;使整个网络设备租赁的发展和服务水平有显著提升。在系统开发过程中…

二分猜答案

二分前后缀分解lc786二分查找分数值范围&#xff0c;统计小于等于中间值的分数个数&#xff0c;定位第k小的素数分数并返回#include <vector> using namespace std;class Solution { private:vector<int> arr;int n, a, b; public:vector<int> kthSmallestPr…

二分猜答案

二分前后缀分解lc786二分查找分数值范围&#xff0c;统计小于等于中间值的分数个数&#xff0c;定位第k小的素数分数并返回#include <vector> using namespace std;class Solution { private:vector<int> arr;int n, a, b; public:vector<int> kthSmallestPr…