docker安裝openwrt immortalwrt全過程
openwrt因為提供的是路由器的功能,可以接管無法安裝軟件的switch的流量。
而且手機連接wifi把網(wǎng)關(guān)改為openwrt后,科學(xué)上網(wǎng)時遠比啟動手機的軟件方便
一:安裝docker
1.使用阿里鏡像加速(從官網(wǎng)下載可能很慢)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
命令詳細解釋:
?從"https://get.docker.com"下載一個腳本,通過bash命令執(zhí)行該腳本,同時將docker作為參數(shù)傳遞給腳本,使用Aliyun作為鏡像加速器?。
-fsSL:
-f
:如果服務(wù)器返回錯誤碼,curl會立即終止操作。Fail silently。-s
:靜默模式,不顯示進度條或錯誤信息。Silent mode.-S
:顯示錯誤信息。Show errors-L
:自動重定向。Location.
使用-fsSL
選項可以以靜默模式運行curl命令,在發(fā)生錯誤時終止操作,并支持自動跟隨重定向。
這是一種常見的配置,用于在下載和執(zhí)行腳本、獲取遠程文件等操作中提供更可靠和干凈的執(zhí)行環(huán)境
- | bash:是用于執(zhí)行腳本的命令,將curl下載的腳本通過管道傳遞給bash命令執(zhí)行。
- -s docker --mirror Aliyun:是bash命令的參數(shù),這會將docker作為參數(shù)傳遞給腳本,同時使用Aliyun作為鏡像加速器。
2.不使用阿里云加速,直接從官網(wǎng)下載
curl -sSL https://get.daocloud.io/docker | sh
命令解釋:
- 從"https://get.daocloud.io/docker"下載一個腳本,將curl下載的腳本通過管道傳遞給sh命令執(zhí)行。
- bash和sh差別不大,大部分Linux系統(tǒng)中默認(rèn)安裝了bash,用sh可以保持兼容性
二:配置網(wǎng)絡(luò)
1.開啟網(wǎng)卡混雜模式
(在該模式下,網(wǎng)卡會接收到經(jīng)過它所連接的網(wǎng)絡(luò)上所有的數(shù)據(jù)包,而不僅僅是目標(biāo)MAC地址是自己的數(shù)據(jù)包,因此方便進行網(wǎng)絡(luò)流量捕獲和分析。)
輸入ifconfig查看有局域網(wǎng)IP的是哪個網(wǎng)卡(如果只啟用了一個網(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 on
2.創(chuàng)建虛擬網(wǎng)絡(luò)MACVLAN
(macvlan是一種Linux內(nèi)核網(wǎng)絡(luò)虛擬化技術(shù),它可以用于創(chuàng)建和管理虛擬網(wǎng)絡(luò)接口。
它可以為每個虛擬機或容器創(chuàng)建一個與主機物理網(wǎng)卡綁定的虛擬網(wǎng)卡,并且每個虛擬機或容器都有自己的IP地址。
這使得虛擬機或容器能夠直接和物理網(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)建一個名為macnet
的macvlan網(wǎng)絡(luò)。
-d macvlan
: 指定要創(chuàng)建的網(wǎng)絡(luò)驅(qū)動為macvln。--subnet=192.168.50.0/24
: 設(shè)置網(wǎng)絡(luò)的子網(wǎng),這里設(shè)置為192.168.50.0/24表示網(wǎng)絡(luò)中的主機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。因為我在瀏覽器里寫192.168.50.1可以進入路由器(注意不是光貓!)的后臺管理地址,所以192.168.50.1就是路由器的ip地址,設(shè)置網(wǎng)關(guān)為它就是說這個openwrt的網(wǎng)絡(luò)和其他手機電腦什么的一樣都是通過路由器訪問互聯(lián)網(wǎng)-o parent=enp3s0
: 指定macvlan網(wǎng)絡(luò)的父接口,也就是上級網(wǎng)絡(luò)接口。在這里,enp3s0
是物理網(wǎng)卡的名稱,它將成為macvlan網(wǎng)絡(luò)的父接口。-o
是指定選項的標(biāo)志,它表示將要傳遞額外的選項給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 #就是這個 b0265f7d9516 none null local
3.給openwrt配置網(wǎng)絡(luò)(上一步是對宿主機進行的網(wǎng)絡(luò)配置)
注:如果沒有安裝vim,請輸入 sudo yum install vim 進行安裝
# 創(chuàng)建配置文件存放的目錄 mkdir -p /home/docker/openwrt # 創(chuàng)建網(wǎng)絡(luò)配置文件并編輯 vim /home/docker/openwrt/network
進入編輯界面后,ctrl+shfit+v粘貼如下配置文件,然后按要求修改
其中只有config interface 'lan'中的ipaddr,gateway和dns需要修改。
gateway自然和前面一樣是路由器,dns也填路由器,ipaddr則是你希望openwrt使用的ip,如我這樣設(shè)置后就在瀏覽器輸入192.168.50.254進入openwrt后臺
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)格式不對,按以下步驟操作:
- 1.確保按下鍵盤,輸出的是小寫字母
- 2. 打出英文的引號":"(也就是鍵盤上先按住shift再按一下分號,也就是字母L的右邊那個鍵)
- 3.輸入set paste(結(jié)合上一步,連起來左下角顯示的是“:set paste”),然后回車
- 4.按一下“i”(成功的標(biāo)志是左下角有insert或插入的提示符,后面跟著括號,括號里是“粘貼“)
- 5.ctrl+shfit+v
三:拉取openwrt鏡像并啟動
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
命令解釋:
此命令會使用指定的OpenWrt鏡像在后臺運行一個容器,容器將連接到名為macnet
的macvlan網(wǎng)絡(luò)。
容器將具有特權(quán)權(quán)限(意味著容器內(nèi)的進程將具有與宿主機上的進程相同的特權(quán)級別,可以執(zhí)行一些普通容器不允許的操作),并使用IP地址192.168.50.254。
容器內(nèi)的/etc/config/network
目錄將與宿主機的/home/docker/openwrt/network
目錄進行掛載(可以理解為這兩個network文件其實都是宿主機上的network文件)。
容器啟動時將執(zhí)行OpenWrt的初始化進程
--restart always
: 指定容器在退出時總是重新啟動。即使Docker守護進程重啟,也會重新啟動容器-d
: 以后臺(daemon)模式運行容器,使容器在后臺執(zhí)行。--privileged
: 賦予容器特權(quán),允許容器內(nèi)的進程使用宿主機的特權(quán)操作registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64
: 指定要使用的OpenWrt鏡像名稱和標(biāo)簽/sbin/init
: /sbin/init是啟動OpenWrt的初始化進程。它是整個系統(tǒng)的根進程,負責(zé)初始化系統(tǒng)并啟動其他需要運行的服務(wù)和進程。通過指定/sbin/init
作為容器啟動時要執(zhí)行的命令,可以讓容器啟動OpenWrt并正常運行
四:一些常用指令
如果前面的步驟正常執(zhí)行,openwrt應(yīng)該過一會就啟動成功了,可以輸入設(shè)置的ip地址進入openwrt后臺管理界面
1.查看正在運行的docker容器,可以查看openwrt是不是在運行:
docker ps
2.進入openwrt容器內(nèi)部:
docker exec -it openwrt bash
docker exec
是Docker命令,用于在運行中的容器中執(zhí)行命令。-it
是兩個選項的結(jié)合,-i
表示交互式模式,-t
表示分配一個偽終端。openwrt
是要執(zhí)行命令的目標(biāo)容器的名稱。bash
是要在容器內(nèi)執(zhí)行的命令,即打開一個交互式bash shell。這允許您與容器進行交互,就像在一個獨立的終端中登錄到該容器一樣。
注:因為openwrt有自己的ip,也可以通過ssh連接。如果沒在openwrt后臺管理界面設(shè)置密碼,只需要用戶名為root,不需要輸入密碼就可ssh連上
3.停止openwrt
docker stop openwrt
4.刪除已創(chuàng)建的docker容器(如果被玩壞了,可以刪了再從鏡像創(chuàng)一個)
docker rm openwrt
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker+Nginx打包部署前后端分離步驟實現(xiàn)
這篇文章主要介紹了Docker+Nginx打包部署前后端分離步驟實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2023-01-01一次centos Docker網(wǎng)橋模式無法訪問宿主機Redis服務(wù)的故障排除經(jīng)歷
這篇文章主要給大家介紹了關(guān)于一次centos Docker網(wǎng)橋模式無法訪問宿主機Redis服務(wù)的故障排除經(jīng)歷,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10手把手教你docker部署(使用docker-compose)教程
使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關(guān)于手把手教你docker部署(使用docker-compose)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-01-01CentOS7環(huán)境下使用Docker搭建PHP運行環(huán)境的過程詳解
這篇文章主要介紹了CentOS7環(huán)境下使用Docker搭建PHP運行環(huán)境,文中給大家提到創(chuàng)建私有網(wǎng)絡(luò)及安裝nginx的方法,本文給大家介紹的非常詳細,需要的朋友可以參考下2021-08-08dockerfile指令構(gòu)建docker鏡像的示例代碼
本文主要介紹了dockerfile指令構(gòu)建docker鏡像的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04