RetroPie的一些內建快捷鍵操作方式:
快捷鍵(Hotkeys) 功能(Action)
選擇(Select)+開始(Start) 離開(Exit)
選擇(Select)+右上方按鈕(Right Shoulder) 存檔(Save)
選擇(Select)+左上方按鈕(Left Shoulder) 讀檔(Load)
選擇(Select)+向右按鈕(Right) 增加存檔編號(Input State Slot Increase)
選擇(Select)+向左按鈕(Left) 減少存檔編號(Input State Slot Decrease)
選擇(Select)+X按鈕 RGUI 選單(Menu)
選擇(Select)+B按鈕 重置(Reset)
设置4人:Select+X to access RGUI.Quick Menu -> Controls Change “User 2 Device Type” to Multitap.Select “Save Game Remap File”
特别需要注意的是,有些游戏(如名将)则需要对rom框体进行调整才能实现4人同时游戏,比如在WinKawaks中调整“Dip开关”,在Mame中调整“机台设置”选项 CPS是进入BIOS设置等等…
2020年5月28日星期四
2020年5月22日星期五
restropie 支持中文显示
sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback
sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid
sudo apt-get install libsdl2-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev libboost-locale-dev libfreeimage-dev libfreetype6-dev libeigen3-dev libcurl4-openssl-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid
sudo apt-get install fonts-droid-fallback
sudo apt-get install fonts-droid-fallback
2020年5月21日星期四
蓝天 cli 代码
http://www.xxx.com/caiji/index.php?s=/admin/Task/collect&id=3
可以改下文件SkycaijiApp》admin》common.php第126行
复制代码
可以改下文件SkycaijiApp》admin》common.php第126行
- $commandStr=$phpPath;
2020年5月17日星期日
一次性搞掂烦人的gpg key 要根据不同的deb 服务器修改相应的key去安装
## sudo apt-key update
### rsync -az --progress keyring.debian.org::keyrings/keyrings/ .
#### AA8E81B4331F7F50 112695A0E562B32A 04EE7237B7D453EC 648ACFD622F3D138 DCC9EFBF77E11517 1AF1A20A4CC00851
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1A20A4CC00851
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6CA82022500670E92D66AE3F1AF1A20A4CC00851
###############deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
##############deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
#deb [arch=armhf] http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
### /usr/bin/curl -fsSL http://raspbian.raspberrypi.org/raspbian.public.key | apt-key add -
### curl -fsSL https://download.docker.com/linux/raspbian/gpg | apt-key add -
### curl -fsSL http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add -
deb [arch=armhf] https://download.docker.com/linux/raspbian buster stable
#deb [arch=armhf] http://archive.raspberrypi.org/debian buster main stable
### gpg --keyserver subkeys.pgp.net --recv-keys 4CC00851
### gpg --export --armor 4CC00851 | sudo apt-key add -
### deb http://sshmenu.sourceforge.net/debian stable contrib
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/ buster/updates main contrib
deb-src http://security.debian.org/ buster/updates main contrib
#http://ftp.debian.org/debian/
deb http://httpredir.debian.org/debian buster main non-free contrib
deb-src http://httpredir.debian.org/debian buster main non-free contrib
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free
### gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk
### deb [arch=amd64] https://download.docker.com/linux/debian buster stable
### sudo apt-get install software-properties-common
### curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
### sudo apt-key fingerprint 0EBFCD88
### sudo add-apt-repository "deb [arch=amd64 https://download.docker.com/linux/debian $(lsb_release -cs) stable"
### deb tor+http://vwakviie2ienjx6t.onion/debian buster main
### deb-src tor+http://vwakviie2ienjx6t.onion/debian buster main
### deb tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main
### deb-src tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main
### deb tor+http://vwakviie2ienjx6t.onion/debian buster-updates main
### deb-src tor+http://vwakviie2ienjx6t.onion/debian buster-updates main
### rsync -az --progress keyring.debian.org::keyrings/keyrings/ .
#### AA8E81B4331F7F50 112695A0E562B32A 04EE7237B7D453EC 648ACFD622F3D138 DCC9EFBF77E11517 1AF1A20A4CC00851
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1A20A4CC00851
### sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6CA82022500670E92D66AE3F1AF1A20A4CC00851
###############deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
##############deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
#deb [arch=armhf] http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
### /usr/bin/curl -fsSL http://raspbian.raspberrypi.org/raspbian.public.key | apt-key add -
### curl -fsSL https://download.docker.com/linux/raspbian/gpg | apt-key add -
### curl -fsSL http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add -
deb [arch=armhf] https://download.docker.com/linux/raspbian buster stable
#deb [arch=armhf] http://archive.raspberrypi.org/debian buster main stable
### gpg --keyserver subkeys.pgp.net --recv-keys 4CC00851
### gpg --export --armor 4CC00851 | sudo apt-key add -
### deb http://sshmenu.sourceforge.net/debian stable contrib
deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/ buster/updates main contrib
deb-src http://security.debian.org/ buster/updates main contrib
#http://ftp.debian.org/debian/
deb http://httpredir.debian.org/debian buster main non-free contrib
deb-src http://httpredir.debian.org/debian buster main non-free contrib
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free
### gksu --desktop /usr/share/applications/software-properties.desktop /usr/bin/software-properties-gtk
### deb [arch=amd64] https://download.docker.com/linux/debian buster stable
### sudo apt-get install software-properties-common
### curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
### sudo apt-key fingerprint 0EBFCD88
### sudo add-apt-repository "deb [arch=amd64 https://download.docker.com/linux/debian $(lsb_release -cs) stable"
### deb tor+http://vwakviie2ienjx6t.onion/debian buster main
### deb-src tor+http://vwakviie2ienjx6t.onion/debian buster main
### deb tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main
### deb-src tor+http://sgvtcaew4bxjd7ln.onion/debian-security buster/updates main
### deb tor+http://vwakviie2ienjx6t.onion/debian buster-updates main
### deb-src tor+http://vwakviie2ienjx6t.onion/debian buster-updates main
2020年5月16日星期六
dockerfile用到的关键字
dockerfile用到的关键字
关键字 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"] |
CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"] |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image中 |
ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value |
ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 |
USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell |
2020年5月10日星期日
系统文件修改
open the file in a text editor:
1
| sudo nano /etc/security/limits.conf |
And add at the end:
1
2
| * - nofile 16384 root - nofile 16384 samba hard nofile 32768 |
nano /etc/sysctl.conf
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
fs.inotify.max_user_watches=1048576
2020年5月9日星期六
2020年5月8日星期五
Win10家庭版启用组策略gpedit.msc
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
【操作步骤】
1、首先你需要在桌面上新建一个txt文本文档。然后将以下代码复制到这个新建的txt文本文档中。
@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause
2、保存,关闭,重命名这个新建文本文档,修改其后缀.txt变成.cmd。
运行完毕,你的电脑就可以使用组策略gpedit.msc了。
2020年5月7日星期四
Docker容器、镜像和文件的转化关系
容器转成镜像:
sudo docker commit imagename
容器转成文件:
sudo docker export > /home/exportname.tar
镜像转成文件:
sudo docker save imagename01 > /home/savename.tar
注:一般情况下,savename.tar比exportname.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata
文件转成镜像:
cat /home/exportname.tar | sudo docker import - imagename:latest
save.tar文件转成镜像:
docker load < /home/savename.tar
查看转成的镜像:
sudo docker images
注意:这里一个镜像经过n次转化之后,可以用sudo docker images --tree查看历史,用docker tag 你可以回到某个层(只针对save命令可以回到某个层!)
————————————————
原文链接:https://blog.csdn.net/superbfly/article/details/65435080
06、container、image、文件的互相转化
1、情况说明
image(又称为镜像):是通过 Dockerfile file创建的,通过 docker image ls 查看;
container(容器):是 image 通过 docker container run [image] 来生成;
文件(就是文件):方便管理,适用于将一个服务器上的image转移/拷贝其他服务器上(虽然也可以通过传到 Docker 官方仓库来实现);
他们各有适用范围,但在某些情况下,需要互相转化。
2、image转container和文件
2.1 转container
之前提过,略;
2.2 转文件
命令:
docker save [image名] > [文件路径(需要是tar文件)]
1
说明:
[image名]:通过 docker image ls 来查询;
[文件路径(需要是tar文件)]:将 image 打包为一个 tar 文件;
然后就可以拷贝走这个 tar 文件了,至于如何转回 image,参考下面;
3、container转image和文件
3.1、转image
命令:
docker commit [containerID] [imagename]:[version]
1
说明:
docker commit:表示container转image,固定的,很好理解;
[containerID]:一个容器的ID,可以是运行状态;
[imagename]:转换后的 image 的名字,可以自定义,很好理解;
:[version]:可选,tag,也可以认为是版本号,不加默认是 latest,加了就是指定的tag;
示例:
docker commit f46b174f0c69 c2image:0.0.2
1
结果:
[root@qq20004604 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
c2image 0.0.2 2b86002ebd4b 4 seconds ago 907MB
docker-demo-01-express 0.0.1 416f1050c9bf 21 hours ago 907MB
1
2
3
4
3.2、转文件
命令:
docker export [containerID] > [文件路径(需要是tar文件)]
1
说明:
docker export [containerID] >:都好理解,略略略;
[文件路径(需要是tar文件)]:将容器打包为一个 tar 文件;
容器打包成文件,比 image 打包成文件要小一些,因为它丢失了历史和数据元metadata;
4、文件转image和container
4.1、转image
基本说明:
【tar文件】可以是从 image 转来的,也可以是从 container 转来的;
这些【tar文件】都可以转为 image;
转换并不会带来之前的日志(指转换前的),所以如果需要日志,记得提前备份;
方法一:
命令:
docker load < [tar文件路径]
1
说明:
将 tar文件 转为 image;
转换完后,可以通过 docker images 查看;
这种方法似乎并不能指定转换结束后的 image 的名字;
方法二:
命令:
docker import [tar文件名] [imagename]:[version]
1
说明:
docker import:导入,固定的意思,略;
[tar文件名]:就是来自于容器或者image压缩成的【tar文件】咯;
[imagename]:导入后的 imagename,如果不写,那么最后名字和tag都将是;
:[version]:可选,tag名,如果不填,则默认为 latest;
4.2、转容器
没必要,先转 image,再从 image 生成容器;
更多内容参见我的github项目:https://github.com/qq20004604/docker-learning
————————————————
版权声明:本文为CSDN博主「qq20004604」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq20004604/article/details/89322179
sudo docker commit
容器转成文件:
sudo docker export
镜像转成文件:
sudo docker save imagename01 > /home/savename.tar
注:一般情况下,savename.tar比exportname.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata
文件转成镜像:
cat /home/exportname.tar | sudo docker import - imagename:latest
save.tar文件转成镜像:
docker load < /home/savename.tar
查看转成的镜像:
sudo docker images
注意:这里一个镜像经过n次转化之后,可以用sudo docker images --tree查看历史,用docker tag
————————————————
原文链接:https://blog.csdn.net/superbfly/article/details/65435080
06、container、image、文件的互相转化
1、情况说明
image(又称为镜像):是通过 Dockerfile file创建的,通过 docker image ls 查看;
container(容器):是 image 通过 docker container run [image] 来生成;
文件(就是文件):方便管理,适用于将一个服务器上的image转移/拷贝其他服务器上(虽然也可以通过传到 Docker 官方仓库来实现);
他们各有适用范围,但在某些情况下,需要互相转化。
2、image转container和文件
2.1 转container
之前提过,略;
2.2 转文件
命令:
docker save [image名] > [文件路径(需要是tar文件)]
1
说明:
[image名]:通过 docker image ls 来查询;
[文件路径(需要是tar文件)]:将 image 打包为一个 tar 文件;
然后就可以拷贝走这个 tar 文件了,至于如何转回 image,参考下面;
3、container转image和文件
3.1、转image
命令:
docker commit [containerID] [imagename]:[version]
1
说明:
docker commit:表示container转image,固定的,很好理解;
[containerID]:一个容器的ID,可以是运行状态;
[imagename]:转换后的 image 的名字,可以自定义,很好理解;
:[version]:可选,tag,也可以认为是版本号,不加默认是 latest,加了就是指定的tag;
示例:
docker commit f46b174f0c69 c2image:0.0.2
1
结果:
[root@qq20004604 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
c2image 0.0.2 2b86002ebd4b 4 seconds ago 907MB
docker-demo-01-express 0.0.1 416f1050c9bf 21 hours ago 907MB
1
2
3
4
3.2、转文件
命令:
docker export [containerID] > [文件路径(需要是tar文件)]
1
说明:
docker export [containerID] >:都好理解,略略略;
[文件路径(需要是tar文件)]:将容器打包为一个 tar 文件;
容器打包成文件,比 image 打包成文件要小一些,因为它丢失了历史和数据元metadata;
4、文件转image和container
4.1、转image
基本说明:
【tar文件】可以是从 image 转来的,也可以是从 container 转来的;
这些【tar文件】都可以转为 image;
转换并不会带来之前的日志(指转换前的),所以如果需要日志,记得提前备份;
方法一:
命令:
docker load < [tar文件路径]
1
说明:
将 tar文件 转为 image;
转换完后,可以通过 docker images 查看;
这种方法似乎并不能指定转换结束后的 image 的名字;
方法二:
命令:
docker import [tar文件名] [imagename]:[version]
1
说明:
docker import:导入,固定的意思,略;
[tar文件名]:就是来自于容器或者image压缩成的【tar文件】咯;
[imagename]:导入后的 imagename,如果不写,那么最后名字和tag都将是
:[version]:可选,tag名,如果不填,则默认为 latest;
4.2、转容器
没必要,先转 image,再从 image 生成容器;
更多内容参见我的github项目:https://github.com/qq20004604/docker-learning
————————————————
版权声明:本文为CSDN博主「qq20004604」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq20004604/article/details/89322179
2020年5月6日星期三
raspberry 重要文件路径
/etc/modules-load.d/docker.conf
/etc/modules-load.d/modules.conf
/etc/modules-load.d/rpi.conf
/etc/modules
/etc/modules-load.d/modules.conf
/etc/modules-load.d/rpi.conf
/etc/modules
在Docker 中运行 OpenWrt 旁路网关
https://mlapp.cn/376.html
步骤开始
成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作:
1.打开网卡混杂模式
sudo ip link set eth0 promisc on
|
2.创建网络
(须结合实际网络情况,不能照抄命令)
docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=eth0 macnet
|
这一条命令需要根据树莓派所处的网络环境来做修改,可以使用
sudo ifconfig
命令来查看树莓派 eth0 网卡获得的 IP 地址,如果树莓派获得的 IP 地址为 192.168.2.154
,那么说明树莓派处在 192.168.2.x
网段,相应的,命令中的192.168.123.0
和192.168.123.1
需要被替换成 192.168.2.0
和192.168.2.1
:docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet
|
此时,我们使用
docker network ls
命令可以看到网络macnet
已建立成功:$ docker network ls NETWORK ID NAME DRIVER SCOPE 10e676133746 bridge bridge local f5308b94e8fa host host local 16745ea66852 macnet macvlan local 5e72e41ea02a none null local |
3.拉取镜像
若身处国内,为提高拉取速度,请拉取阿里云仓库中的镜像:
docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
|
同时小苏也提供存放在 Docker 官方仓库 中的镜像:
docker pull sulinggg/openwrt:latest
|
镜像拉取完成后,我们可以执行
docker images
命令查看现存镜像:$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-shanghai.aliyuncs.com/suling/openwrt latest 4f4bc5dca2d9 3 hours ago 112MB |
可见,镜像已成功拉取到本地。
4.创建并启动容器
docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest /sbin/init
|
其中:
--restart always
参数表示容器退出时始终重启,使服务尽量保持始终可用;--name openwrt
参数定义了容器的名称;-d
参数定义使容器运行在 Daemon 模式;--network macnet
参数定义将容器加入 maxnet
网络;--privileged
参数定义容器运行在特权模式下;registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
为 Docker 镜像名,因容器托管在阿里云 Docker 镜像仓库内,所以在镜像名中含有阿里云仓库信息;/sbin/init
定义容器启动后执行的命令。
启动容器后,我们可以使用
docker ps -a
命令查看当前运行的容器:$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a26cee7cade6 openwrt:latest "/sbin/init" 3 hours ago Up 3 hours openwrt |
若容器运行信息
STATUS
列为 UP
状态,则说明容器运行正常。5.进入容器并修改相关参数
(须结合实际网络情况,不能照抄配置)
docker exec -it openwrt bash
|
其中:
openwrt
为容器名称;bash
为进入容器后执行的命令。
执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:
vim /etc/config/network
|
我们需要更改 Lan 口设置:
config interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.123.100' option netmask '255.255.255.0' option ip6assign '60' option gateway '192.168.123.1' option broadcast '192.168.123.255' option dns '192.168.123.1' |
其中:
所有的
192.168.123.x
需要根据树莓派所处网段修改,option gateway
和option dns
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:config interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.2.100' option netmask '255.255.255.0' option ip6assign '60' option gateway '192.168.2.1' option broadcast '192.168.2.255' option dns '192.168.2.1' |
option ipaddr
项目定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)。6.重启网络
/etc/init.d/network restart
|
7.进入控制面板
在浏览器中输入第 5 步
option ipaddr
项目中的 IP 进入 Luci 控制面板,若option ipaddr
的参数为 192.168.123.100
,则可以在浏览器输入 http://192.168.123.100
进入控制面板。
用户名:
root
密码:
password
8.关闭 DHCP 服务
在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。

9.主路由 DHCP 设置
进入路由器后台中,将主路由的 DHCP 的默认网关和 DNS 服务器设置为第 5 步中
option ipaddr
项目中的 IP。
10.重新连接路由器
完成以上操作后,断开设备(如手机,电脑)与路由器的连接,重新连接路由器,连接路由器的设备将获取到我们设置到的 IP。
其他修复
1.关闭 WLAN 硬件加速
设置旁路路由后,若出现访问国内网站网速慢,不稳定的情况(多见于 Pandavan 及其改版固件,如华硕老毛子固件),请在路由器的控制面板中关闭有关 WLAN 的硬件加速,比如选择“Offload TCP/UDP for LAN”(若未出现此现象请忽略):

2.宿主机网络修复
OpenWrt 容器运行后,宿主机内可能无法正常连接外部网络,需要修改宿主机的
/etc/network/interfaces
文件以修复:
(须结合实际网络情况,不能照抄配置)
cp /etc/network/interfaces /etc/network/interfaces.bak # 备份文件 vim /etc/network/interfaces # 使用 vim 编辑文件 |
以“树莓派爱好者基地”64 位 Debian 为例,向文件末尾添加:
auto eth0 iface eth0 inet manual auto macvlan iface macvlan inet static address 192.168.123.200 netmask 255.255.255.0 gateway 192.168.123.1 dns-nameservers 192.168.123.1 pre-up ip link add macvlan link eth0 type macvlan mode bridge post-down ip link del macvlan link eth0 type macvlan mode bridge |
其中,所有的
192.168.123.x
都需要按照树莓派所处网段更改,gateway
和dns-nameservers
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:auto eth0 iface eth0 inet manual auto macvlan iface macvlan inet static address 192.168.2.200 netmask 255.255.255.0 gateway 192.168.2.1 dns-nameservers 192.168.2.1 pre-up ip link add macvlan link eth0 type macvlan mode bridge post-down ip link del macvlan link eth0 type macvlan mode bridge |
修改后重启树莓派,之后树莓派的局域网 IP 地址将会固定为
/etc/network/interfaces
文件中address
参数中的地址。3.手动指定网关
如果路由器固件不支持自定义 DHCP 服务的网关及 DNS 地址(常见于路由器官方固件),或者只希望局域网下的个别设备接入旁路网关时,须在接入设备上做以下配置:
安卓:

需要在安卓的 WIFI 设置内将 IP 获取方式更改为“静态”或“手动”,其中:
“IP 地址”项目需要更改为网段内不冲突的地址;
“网关”或“路由器”项目需要更改为旁路网关 IP 地址;
“前缀长度”项目填写“24”;
“DNS”项目需要更改为旁路网关 IP 地址(两个 DNS 输入框填写一个就可以)。
完成并提交设置后,关闭 WIFI 开关再打开,连接设置的 WIFI 热点,若当前网络参数为设定值,则证明设置成功。
Windows:

在无线热点的“属性”界面下,点击 “IP 设置 - 编辑”按钮,在弹出框中更改 IP 分配模式为“手动”,打开 IPV4 的开关,根据所处网段及上文安卓的相关设置填写相关参数即可。
注意事项
- 文章所述方案适用于光猫或路由器已完成宽带拨号的网络环境,未测试也不推荐使用 Docker 内的 OpenWrt 进行宽带拨号;
- OpenWrt 容器跟随树莓派系统启动,无需手动干预;
- 由于容器内系统内核共享宿主机内核,所以在 Luci 面板的 “内核版本”项与宿主机内核版本一致;
- 在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明;
- 经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常,如有发现不能正常工作的应用请评论反馈~
youtube的dns屏蔽方法
216.239.38.120 是 Google 提供的一个特殊 DNS 服务器,用于强制开启 YouTube 受限模式(Restricted Mode) 。 如果你想在家里强制 YouTube 进入受限模式,可以在 路由器的 DNS 设置 中配置以下 DNS 服务器: D...
-
什么是apt-get apt-get是一条 linux命令 ,适用于deb包管理式的 操作系统 ,主要用于自动从互联网的 软件 仓库中搜索、安装、升级、 卸载 软件或操作系统。 apt-get命令一般需要 root权限 执行,所以一般跟着sudo命令 例 su...
-
cd /sys/bus/usb/devices 先不要插入 usb 设备,然后使用 ls -al 命令,可查看到当前的设备;然后插入设备后再使用ls -al 命令查看,对比即可知道插入为哪个设备。 然后进入对应设备的目录,通过查看 idProduct 和 idVendor 文...
-
The Raspberry Pi 4 can drive up to two displays, with a resolution up to 1080p at a 60Hz refresh rate. At 4K resolution, if you connect two...