首页
关于
Search
1
VMware ESXi 8.0.2安装NVIDIA P4/P40显卡驱动
843 阅读
2
Emby主题秀:教你如何打造炫目首页,视觉冲击力MAX!
401 阅读
3
VMware Horizon 8 安装部署(一)基础架构讲解
319 阅读
4
暧昧初期绝对不要问女生的5个问题
210 阅读
5
暧昧初期,绝不能问女生的5个问题(附详细分析和替代方案)
170 阅读
默认分类
VMware虚拟化
CentOS部署教程
Docker容器部署
宝塔面板
群晖NAS
家庭影院
情商进阶
博客搭建
登录
Search
标签搜索
主动掌控情感
高价值恋爱法则
轻松搭建
高段位恋爱
情绪价值提升
情感自由心法
Frp内网穿透
宝塔面板
MySQL数据库
性能调优
群晖
J3455处理器
阿里云仓库
镜像备份
镜像迁移
Emby主题秀
Emby家庭影院
断舍离恋爱法则
情感主导权
女生主动攻略
何海龙
累计撰写
49
篇文章
累计收到
0
条评论
首页
栏目
默认分类
VMware虚拟化
CentOS部署教程
Docker容器部署
宝塔面板
群晖NAS
家庭影院
情商进阶
博客搭建
页面
关于
搜索到
3
篇与
的结果
2025-06-23
突破 Docker 网络边界:一步步赋予容器物理 IP 地址,打破容器与外部网络的隔阂
引言在容器化应用日益普及的今天,Docker 为我们提供了极为灵活的网络管理功能。然而,在某些特定的场景中,可能需要让 Docker 容器拥有与物理机相同的 IP 地址,或者与宿主机网络直接交互。本文将为您详细讲解如何为 Docker 容器配置物理 IP 地址,实现容器与外部网络无缝对接。1. 查看当前网络接口信息首先,我们需要检查当前的网络接口配置。可以通过执行ip link命令来查看网络接口的详细信息。以下是一个示例:在这个输出中,我们关注的网络接口是 eth0、eth2 和 eth3。我们可以看到 eth2 和 eth3 处于 "UP" 状态,而 eth0 则处于 "DOWN" 状态。2. 创建 Docker 网络为了让 Docker 容器直接连接到物理网络,我们需要创建一个新的 Docker 网络。该网络将使用物理网络接口作为容器的通信桥梁。执行以下命令即可创建一个新的 Docker 网络:docker network create -d macvlan \ --subnet=192.168.0.0/24 \ --gateway=192.168.0.1 \ -o parent=ovs_eth1 \ -o macvlan_mode=bridge \ macvlan参数解释:-d macvlan:指定网络驱动为 macvlan,这是一种能够让容器与物理网络直接连接的网络模式。--subnet=192.168.0.0/24:设置网络的子网范围。--gateway=192.168.0.1:定义网络的网关地址。-o parent=eth1:指定用于连接容器的物理网络接口(在此示例中为 eth1)。--macvlan_mode=bridge:设置 macvlan 模式为桥接模式,允许容器通过宿主机的网络接口与外部通信。创建完 Docker 网络后,容器将能够通过这个网络接口与外部网络进行通信。如果您的 IP 地址和网卡名称与示例相同,您可以直接执行以下命令:docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=eth1 -o macvlan_mode=bridge macvlan3. 启动 Docker 容器并分配物理 IP在创建完自定义的 Docker 网络后,我们可以启动容器并为其分配一个静态 IP 地址。以下命令展示了如何在启动容器时配置静态 IP:--net=macvlan --ip=192.168.0.240使用您创建的 macvlan 网络;为容器分配固定 IP 地址(例如:192.168.0.240)。4. 以 CentOS 7.6 为例:启动 Docker 容器并分配静态 IP 地址在容器化部署过程中,为容器分配一个静态 IP 地址可以使其更加稳定地与其他设备进行通信,特别是在需要容器与外部系统、其他容器直接交互的情况下。以下是以 CentOS 7.6 为例的操作步骤,展示如何为 Docker 容器分配固定的 IP 地址。docker run -it \ --net=macvlan --ip=192.168.0.240 \ -v /volume1/docker/CentOS7.6/www:/www \ -v /volume1/docker/CentOS7.6/mysql:/var/lib/mysql \ -v /volume1/docker/CentOS7.6/log:/var/log \ --restart=always \ --name WebContainer \ --user=root \ centos:centos7.6.1810 /bin/bash启动后,容器将直接进入 bash 环境。参数解释:-d:让容器在后台运行。--net=macvlan --ip=192.168.0.240:为容器分配静态 IP,并使用 macvlan 网络模式。-v /volume1/docker/CentOS7.6/www:/www:将宿主机的网页数据目录映射到容器内。-v /volume1/docker/CentOS7.6/mysql:/var/lib/mysql:映射 MySQL 数据目录。-v /volume1/docker/CentOS7.6/log:/var/log:映射日志文件目录。--restart=always:配置容器自动重启。--name WebContainer:命名容器为 WebContainer。--user=root:以 root 用户身份运行容器。centos:centos7.6.1810:使用 CentOS 7 镜像。/bin/bash:容器启动时进入 bash shell。这个命令将创建一个 CentOS 7 的 Docker 容器,适用于 Web 应用,并配置了网络、数据持久化和自动重启等功能。5. 补充知识5.1 修改 DNS 和更新源进入容器后,您可以执行以下命令进行 DNS 配置:docker exec -it WebContainer /bin/bash接下来,建议手动修改 DNS 设置,避免因 DNS 配置不当导致无法连接镜像站,如下图所示:设置 DNS(如使用 Google DNS):echo "nameserver 8.8.8.8" > /etc/resolv.conf更换为阿里云源:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all && yum makecache通过阿里云源,您可以加速国内的包下载,并确保稳定性。先备份原有的 yum 源配置文件,下载并替换为阿里云提供的 CentOS 7 源配置文件。阿里云源速度快、稳定,适合国内使用。清除旧的缓存数据,并重新生成 yum 的软件包缓存索引,使系统开始使用新的阿里云源。5.2 安装常用工具初始化容器时,可以安装一些常用工具,以便调试、下载和网络查看:yum install -y which wget vim net-tools curl这些工具将帮助您更高效地管理容器。5.3 一键启用 root SSH 登录如果需要远程进入容器进行维护,您可以启用 SSH 服务。以下是完整操作流程,适用于 CentOS 7 容器,支持 SSH 远程登录和 root 用户密码认证:# 1. 安装 SSH 服务 yum install -y openssh-server # 2. 修改 SSH 配置文件,启用 root 登录和密码登录 echo "PermitRootLogin yes" >> /etc/ssh/sshd_config echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config # 3. 设置 root 密码(可自定义) echo "root:hehailong" | chpasswd # 4. 生成主机密钥(必须,否则 sshd 无法启动) ssh-keygen -A # 5. 启动 SSH 服务(容器中使用前台命令) /usr/sbin/sshd或者您可以直接执行以下一键命令,主要是快:echo "PermitRootLogin yes" >> /etc/ssh/sshd_config && echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config && echo "root:yourpassword" | chpasswd && ssh-keygen -A && /usr/sbin/sshd此时,您可以通过以下命令远程登录:ssh root@192.168.0.240输入密码,即可进入容器。总结本文介绍了如何为 Docker 容器配置物理 IP 地址,并通过 macvlan 网络驱动实现容器与物理网络的直接通信。通过这些步骤,您可以更高效地管理容器,尤其是在需要与外部系统直接交互的场景中。
2025年06月23日
5 阅读
0 评论
0 点赞
2024-02-16
Docker将容器打包成镜像、镜像备份、镜像迁移(恢复)、发布到阿里云仓库
前言工作中遇到三方闭源的中间件运行起来某项特性不符合需求,但是镜像提供方偏偏又没有将配置文件挂载出来以供修改,这就导致要使软件符合需求地运行只能进入到容器内部修改配置文件后重启,可谓非常之蛋疼。笔者平时对 Docker 接触不多,好在有同事提到 Docker 支持将运行中的容器重新打包为镜像,于是网上搜索资料,大致整理出以下步骤解决上面的问题,故有本文聊作记录,本文就以CentOS7作为演示。一、容器保存为镜像1.Docker 提供了 commit 命令支持将容器重新打成镜像文件,其命令格式如下所示:命令:docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]命令行说明:-a :提交的镜像作者 -c :使用Dockerfile指令来创建镜像 -m :提交时的说明文字 -p :在commit时,将容器暂停 容器名称|容器ID :当前要被打包的容器名称或容器ID 生成的镜像名[:标签名] :指定镜像名称或标签名称2. 创建测试容器创建并启动容器:#拉取镜像 docker pull centos:7 #启动CentOS镜像 docker run --name centos7 --privileged -d --ulimit memlock=-1 -td centos:7 /usr/sbin/init命令行说明:--name "centos7" :容器名字 -i :以交互模式运行容器,通常与 -t 同时使用 -t :启动容器后,为容器分配一个命令行,通常与 -i 同时使用 -v :目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录> -d :守护进程,后台运行该容器 -p :指定端口映射,格式:主机(宿主)端口:容器端口 -P :随机端口映射,容器内部端口随机映射到主机的端口进入容器:#进入Docker容器命令: docker exec -it centos7 /bin/bash在容器中随便增加一些文件作为测试:3.将该容器打包成镜像退出容器执行打包命令(镜像名必须要全部小写,否则将不能打包)docker commit -m thisthetextcentos -a hehailong centos7 textcentos7:1.0命令行说明:docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名] -m= : 为镜像添加描述信息 -a= : 为镜像添加创建者信息 容器名称|容器ID : 当前要被打包的容器名称或容器ID 生成的镜像名[:标签名] : 指定镜像名称或标签名称查看镜像列表:#docker查看镜像命令 docker images4.运行容器将打包的镜像在本机Docker验证打包成镜像是否成功:运行容器:docker run -it textcentos7:1.0 /bin/bash{dotted startColor="#ff6c6c" endColor="#1989fa"/}二、将镜像备份成.tar文件1.备份命令:docker save -o 保存的PathName 镜像名:标签将镜像打包,并保存在当前目录下:#打包备份textcentos7镜像,备份镜像名为mydockercentos.tar docker save -o ./mydockercentos.tar textcentos72.从.tar文件恢复成Docker镜像先删除原有的textcentos:1.0镜像:恢复镜像:#恢复mydockercentos.tar镜像备份文件 docker load -i mydockercentos.tar命令行解释:docker load -i :指定导出的文件。 docker load -q :精简输出信息。{dotted startColor="#ff6c6c" endColor="#1989fa"/}三、上传到阿里云仓库1.阿里云控制台进入阿里云控制台,找到容器镜像服务,并点击进去。初次进入需要设置远程仓库密码:2.将镜像提交到阿里云查看上图阿里云基本信息中的操作指南:Docker tag的目的是:标记此镜像为阿里云仓库的镜像:3.从云仓库拉取镜像先删除原有镜像:拉取镜像:运行镜像(另一台docker主机测试,完美部署):参考文献Docker 使用-将容器打成镜像_docker将容器打包成镜像-CSDN博客Docker容器打包成镜像-【如何使用Docker将容器打包成镜像】_CSDN博客Docker将容器打包成镜像并传输至其他服务器部署(可用于容器重新run) - 007少侠 - 博客园 (cnblogs.com)
2024年02月16日
166 阅读
0 评论
0 点赞
2024-02-15
一招教会你用阿里云ECS基于Docker的FRP内网穿透部署
前言内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。 说人话就是我们想在不连接家里的wifi的情况下访问我们家里面的电脑和其他设备时,由于家庭宽带没有固定的公网ip使得我们无法向访问云服务器一样 直接访问,这时候我们就需要使用到内网穿透技术,让我们在其他网络下也能访问到处于内网环境的设备。总的来说,内网穿透技术对于实现内网设备与外部网络的通信非常重要。而FRP作为其中的一种技术,具有许多优点,可以满足各种不同的需求。如果你对内网穿透技术感兴趣,不妨了解更多关于FRP的信息,以便更好地实现内网设备与外部网络的通信。一、服务端部署1.准备首先你需要一个服务器,我的是阿里云主机。部署好Docker,假设你已经准备好,那我们继续。2.开始安装# 创建存放目录 sudo mkdir /etc/frp3.写入配置文件#进入文件目录 cd /etc/frp #写入配置文件 cat>frps.toml <<-EOF # 监听端口 bindPort = 7000 # 服务端将只接受 TLS链接 transport.tls.force = true # 后台管理地址 webServer.addr = "0.0.0.0" # 后台管理地址 webServer.port = 7500 # 后台登录用户名 webServer.user = "admin" # 后台登录密码 webServer.password = "admin" # 身份验证令牌,frpc要与frps一致 auth.token = "yGlHDLwnlZMOYu2S" EOF4.拉取镜像并启动Frpsdocker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps镜像拉取成功,并成功启动。输入服务器IP:7000端口号访问frp后台,密码都为admin,均可在配置文件中修改;记得别忘记在防火墙允许必要运行端口(重要!!!){dotted startColor="#ff6c6c" endColor="#1989fa"/}二、客户端部署1.准备具有docker环境的客户端均可部署,可以在Ikuai软路由、OpenWRT软路由、群晖NAS、甚至本地CentOS上部署。本次搭建以CentOS演示。群晖命令行部署比页面配置快多了,两行命令即可部署完成,感兴趣的可以看我另外一篇文章。2.开始安装# 创建存放目录 sudo mkdir /etc/frp3.写入配置文件#进入文件目录 cd /etc/frp #写入配置文件 cat>frpc.toml <<-EOF #从v0.50.0版本开始,transport.tls.enable的默认值为 true transport.tls.enable = true #公网服务端IP地址或域名 serverAddr = "8.130.113.101" #公网服务端通信端口 serverPort = 7000 #令牌,与公网服务端保持一致 auth.token = "yGlHDLwnlZMOYu2S" #示例 #[ssh] 为服务名称 #type = "tcp" 为连接的类型,此处为tcp #localIP = "127.0.0.1" 为中转客户端实际访问的IP #localPort 为目标端口 #remotePort 为远程端口 [[proxies]] name = "Synology" type = "tcp" localIP = "192.168.0.62" localPort = 5000 remotePort = 5000 EOF4.拉取镜像并启动Frpcdocker run --restart=always --network host -d -v /etc/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc镜像拉取成功,并成功启动。我的群晖地址是192.168.0.62,端口号是5000,输入阿里云服务器IP地址:5000端口号即可访问呢群晖,记得放行必要运行端口(重要!!!)5.配图参考文献https://github.com/snowdreamtech/frp使用docker搭建frp服务器 - 博客园 (cnblogs.com)自建内网穿透服务器: 通过FRP,Zerotier等几种通过自己服务器实现内网穿透的教程 (gitee.com)
2024年02月15日
107 阅读
0 评论
1 点赞