docker安裝openwrt immortalwrt全過程
openwrt因?yàn)樘峁┑氖锹酚善鞯墓δ?,可以接管無法安裝軟件的switch的流量。
而且手機(jī)連接wifi把網(wǎng)關(guān)改為openwrt后,科學(xué)上網(wǎng)時(shí)遠(yuǎn)比啟動(dòng)手機(jī)的軟件方便
一:安裝docker
1.使用阿里鏡像加速(從官網(wǎng)下載可能很慢)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
命令詳細(xì)解釋:
?從"https://get.docker.com"下載一個(gè)腳本,通過bash命令執(zhí)行該腳本,同時(shí)將docker作為參數(shù)傳遞給腳本,使用Aliyun作為鏡像加速器?。
-fsSL:
-f:如果服務(wù)器返回錯(cuò)誤碼,curl會(huì)立即終止操作。Fail silently。-s:靜默模式,不顯示進(jìn)度條或錯(cuò)誤信息。Silent mode.-S:顯示錯(cuò)誤信息。Show errors-L:自動(dòng)重定向。Location.
使用-fsSL選項(xiàng)可以以靜默模式運(yùn)行curl命令,在發(fā)生錯(cuò)誤時(shí)終止操作,并支持自動(dòng)跟隨重定向。
這是一種常見的配置,用于在下載和執(zhí)行腳本、獲取遠(yuǎn)程文件等操作中提供更可靠和干凈的執(zhí)行環(huán)境
- | bash:是用于執(zhí)行腳本的命令,將curl下載的腳本通過管道傳遞給bash命令執(zhí)行。
- -s docker --mirror Aliyun:是bash命令的參數(shù),這會(huì)將docker作為參數(shù)傳遞給腳本,同時(shí)使用Aliyun作為鏡像加速器。
2.不使用阿里云加速,直接從官網(wǎng)下載
curl -sSL https://get.daocloud.io/docker | sh
命令解釋:
- 從"https://get.daocloud.io/docker"下載一個(gè)腳本,將curl下載的腳本通過管道傳遞給sh命令執(zhí)行。
- bash和sh差別不大,大部分Linux系統(tǒng)中默認(rèn)安裝了bash,用sh可以保持兼容性
二:配置網(wǎng)絡(luò)
1.開啟網(wǎng)卡混雜模式
(在該模式下,網(wǎng)卡會(huì)接收到經(jīng)過它所連接的網(wǎng)絡(luò)上所有的數(shù)據(jù)包,而不僅僅是目標(biāo)MAC地址是自己的數(shù)據(jù)包,因此方便進(jìn)行網(wǎng)絡(luò)流量捕獲和分析。)
輸入ifconfig查看有局域網(wǎng)IP的是哪個(gè)網(wǎng)卡(如果只啟用了一個(gè)網(wǎng)卡),然后開啟混雜模式
[root@192 ~]# ifconfig
enp3s0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 192.168.50.109 netmask 255.255.255.0 broadcast 192.168.50.255
inet6 fe80::dc42:1f26:c32b:5bdf prefixlen 64 scopeid 0x20<link>
ether 00:e0:4c:68:19:69 txqueuelen 1000 (Ethernet)
RX packets 10019437 bytes 7646766799 (7.1 GiB)
RX errors 0 dropped 10119 overruns 0 frame 0
TX packets 9294960 bytes 10802889814 (10.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 從上面可以看見我的網(wǎng)卡是enp3s0
[root@192 ~]# ip link set enp3s0 promisc on2.創(chuàng)建虛擬網(wǎng)絡(luò)MACVLAN
(macvlan是一種Linux內(nèi)核網(wǎng)絡(luò)虛擬化技術(shù),它可以用于創(chuàng)建和管理虛擬網(wǎng)絡(luò)接口。
它可以為每個(gè)虛擬機(jī)或容器創(chuàng)建一個(gè)與主機(jī)物理網(wǎng)卡綁定的虛擬網(wǎng)卡,并且每個(gè)虛擬機(jī)或容器都有自己的IP地址。
這使得虛擬機(jī)或容器能夠直接和物理網(wǎng)絡(luò)中的其他設(shè)備通信,就像它們是直接連接在物理網(wǎng)絡(luò)上一樣)
docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 -o parent=enp3s0 macnet
命令解釋:
此命令使用Docker創(chuàng)建一個(gè)名為macnet的macvlan網(wǎng)絡(luò)。
-d macvlan: 指定要?jiǎng)?chuàng)建的網(wǎng)絡(luò)驅(qū)動(dòng)為macvln。--subnet=192.168.50.0/24: 設(shè)置網(wǎng)絡(luò)的子網(wǎng),這里設(shè)置為192.168.50.0/24表示網(wǎng)絡(luò)中的主機(jī)IP地址范圍為192.168.50.1到192.168.50.254。192.168.50.0是網(wǎng)段,/24是指子網(wǎng)掩碼為255.255.255.0。 我電腦的IP是192.168.50.193,所以/24前面寫得是192.168.50.0--gateway=192.168.50.1: 設(shè)置網(wǎng)絡(luò)的網(wǎng)關(guān)地址為192.168.50.1。因?yàn)槲以跒g覽器里寫192.168.50.1可以進(jìn)入路由器(注意不是光貓?。┑暮笈_(tái)管理地址,所以192.168.50.1就是路由器的ip地址,設(shè)置網(wǎng)關(guān)為它就是說這個(gè)openwrt的網(wǎng)絡(luò)和其他手機(jī)電腦什么的一樣都是通過路由器訪問互聯(lián)網(wǎng)-o parent=enp3s0: 指定macvlan網(wǎng)絡(luò)的父接口,也就是上級(jí)網(wǎng)絡(luò)接口。在這里,enp3s0是物理網(wǎng)卡的名稱,它將成為macvlan網(wǎng)絡(luò)的父接口。-o是指定選項(xiàng)的標(biāo)志,它表示將要傳遞額外的選項(xiàng)給docker network create命令macnet: 設(shè)置macvlan網(wǎng)絡(luò)的名稱為macnet
2.1創(chuàng)建好網(wǎng)絡(luò)后,可以通過以下指令查看設(shè)置好的網(wǎng)絡(luò)
[root@192 ~] docker network ls NETWORK ID NAME DRIVER SCOPE 6e1a0e16742d bridge bridge local 136b63f0da30 host host local 3b647a96f9dc macnet macvlan local #就是這個(gè) b0265f7d9516 none null local
3.給openwrt配置網(wǎng)絡(luò)(上一步是對(duì)宿主機(jī)進(jìn)行的網(wǎng)絡(luò)配置)
注:如果沒有安裝vim,請(qǐng)輸入 sudo yum install vim 進(jìn)行安裝
# 創(chuàng)建配置文件存放的目錄 mkdir -p /home/docker/openwrt # 創(chuàng)建網(wǎng)絡(luò)配置文件并編輯 vim /home/docker/openwrt/network
進(jìn)入編輯界面后,ctrl+shfit+v粘貼如下配置文件,然后按要求修改
其中只有config interface 'lan'中的ipaddr,gateway和dns需要修改。
gateway自然和前面一樣是路由器,dns也填路由器,ipaddr則是你希望openwrt使用的ip,如我這樣設(shè)置后就在瀏覽器輸入192.168.50.254進(jìn)入openwrt后臺(tái)
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option packet_steering '1'
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.50.254'
option gateway '192.168.50.1'
option dns '192.168.50.1'
config interface 'vpn0'
option ifname 'tun0'
option proto 'none'注:如果粘貼后發(fā)現(xiàn)格式不對(duì),按以下步驟操作:
- 1.確保按下鍵盤,輸出的是小寫字母
- 2. 打出英文的引號(hào)":"(也就是鍵盤上先按住shift再按一下分號(hào),也就是字母L的右邊那個(gè)鍵)
- 3.輸入set paste(結(jié)合上一步,連起來左下角顯示的是“:set paste”),然后回車
- 4.按一下“i”(成功的標(biāo)志是左下角有insert或插入的提示符,后面跟著括號(hào),括號(hào)里是“粘貼“)
- 5.ctrl+shfit+v
三:拉取openwrt鏡像并啟動(dòng)
docker run --restart always --name openwrt -d --network macnet --privileged --ip 192.168.50.254 -v /home/docker/openwrt/network:/etc/config/network registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64 /sbin/init
命令解釋:
此命令會(huì)使用指定的OpenWrt鏡像在后臺(tái)運(yùn)行一個(gè)容器,容器將連接到名為macnet的macvlan網(wǎng)絡(luò)。
容器將具有特權(quán)權(quán)限(意味著容器內(nèi)的進(jìn)程將具有與宿主機(jī)上的進(jìn)程相同的特權(quán)級(jí)別,可以執(zhí)行一些普通容器不允許的操作),并使用IP地址192.168.50.254。
容器內(nèi)的/etc/config/network目錄將與宿主機(jī)的/home/docker/openwrt/network目錄進(jìn)行掛載(可以理解為這兩個(gè)network文件其實(shí)都是宿主機(jī)上的network文件)。
容器啟動(dòng)時(shí)將執(zhí)行OpenWrt的初始化進(jìn)程
--restart always: 指定容器在退出時(shí)總是重新啟動(dòng)。即使Docker守護(hù)進(jìn)程重啟,也會(huì)重新啟動(dòng)容器-d: 以后臺(tái)(daemon)模式運(yùn)行容器,使容器在后臺(tái)執(zhí)行。--privileged: 賦予容器特權(quán),允許容器內(nèi)的進(jìn)程使用宿主機(jī)的特權(quán)操作registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64: 指定要使用的OpenWrt鏡像名稱和標(biāo)簽/sbin/init: /sbin/init是啟動(dòng)OpenWrt的初始化進(jìn)程。它是整個(gè)系統(tǒng)的根進(jìn)程,負(fù)責(zé)初始化系統(tǒng)并啟動(dòng)其他需要運(yùn)行的服務(wù)和進(jìn)程。通過指定/sbin/init作為容器啟動(dòng)時(shí)要執(zhí)行的命令,可以讓容器啟動(dòng)OpenWrt并正常運(yùn)行
四:一些常用指令
如果前面的步驟正常執(zhí)行,openwrt應(yīng)該過一會(huì)就啟動(dòng)成功了,可以輸入設(shè)置的ip地址進(jìn)入openwrt后臺(tái)管理界面
1.查看正在運(yùn)行的docker容器,可以查看openwrt是不是在運(yùn)行:
docker ps
2.進(jìn)入openwrt容器內(nèi)部:
docker exec -it openwrt bash
docker exec是Docker命令,用于在運(yùn)行中的容器中執(zhí)行命令。-it是兩個(gè)選項(xiàng)的結(jié)合,-i表示交互式模式,-t表示分配一個(gè)偽終端。openwrt是要執(zhí)行命令的目標(biāo)容器的名稱。bash是要在容器內(nèi)執(zhí)行的命令,即打開一個(gè)交互式bash shell。這允許您與容器進(jìn)行交互,就像在一個(gè)獨(dú)立的終端中登錄到該容器一樣。
注:因?yàn)閛penwrt有自己的ip,也可以通過ssh連接。如果沒在openwrt后臺(tái)管理界面設(shè)置密碼,只需要用戶名為root,不需要輸入密碼就可ssh連上
3.停止openwrt
docker stop openwrt
4.刪除已創(chuàng)建的docker容器(如果被玩壞了,可以刪了再?gòu)溺R像創(chuàng)一個(gè))
docker rm openwrt
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker+Nginx打包部署前后端分離步驟實(shí)現(xiàn)
這篇文章主要介紹了Docker+Nginx打包部署前后端分離步驟實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2023-01-01
一次centos Docker網(wǎng)橋模式無法訪問宿主機(jī)Redis服務(wù)的故障排除經(jīng)歷
這篇文章主要給大家介紹了關(guān)于一次centos Docker網(wǎng)橋模式無法訪問宿主機(jī)Redis服務(wù)的故障排除經(jīng)歷,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Docker四種網(wǎng)絡(luò)類型原理實(shí)例解析
這篇文章主要介紹了Docker四種網(wǎng)絡(luò)類型原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
手把手教你docker部署(使用docker-compose)教程
使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關(guān)于手把手教你docker部署(使用docker-compose)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
CentOS7環(huán)境下使用Docker搭建PHP運(yùn)行環(huán)境的過程詳解
這篇文章主要介紹了CentOS7環(huán)境下使用Docker搭建PHP運(yùn)行環(huán)境,文中給大家提到創(chuàng)建私有網(wǎng)絡(luò)及安裝nginx的方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
快速修改docker容器的啟動(dòng)參數(shù)等信息
這篇文章主要介紹了快速修改docker容器的啟動(dòng)參數(shù)等信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
dockerfile指令構(gòu)建docker鏡像的示例代碼
本文主要介紹了dockerfile指令構(gòu)建docker鏡像的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04

