docker的存放位置 var/lib/docker
docker命令行
1、自动挂载外接盘
blkid
或者uuid,替换这个备用
UUID=你外接存储设备的uuid号 /media ntfs defaults,nofail 0 2
我挂载到/media下边的,以下所有镜像都挂在这个目录下边,修改需谨慎。
vim /etc/fstab
把上边替换后的复制进入
2、实现minidlna
作用:实现流媒体播放
docker run -d \
--name minidlna \
--net=host \
-v /docker/minidlna:/etc/minidlna \
-v /docker/minidlna/media:/media \
lstcml/minidlna
标签说明:
latest:不支持rmvb,镜像大小较小
rmvb:支持rmvb,镜像大小较大
目录说明:
/etc/minidlna:配置文件目录
/media:扫描的媒体文件目录
浏览器打开:http://localhost:8200可查看扫描或设备连接情况
Mobile App推荐:海贝音乐、nplay
3、Samba
作用:局域网共享
host模式:
docker run -d \
--name samba \
--restart=always \
--net=host \
-v /docker/samb/conf:/etc/samba \
-v /docker/samb/share:/mnt/share \
-v /docker/samb/data:/mnt/data \
lstcml/samba
非host模式:
docker run -d \
--name samba \
--restart=always \
-p 137:137/udp \
-p 138:138/udp \
-p 139:139/tcp \
-p 445:445/tcp \
-v /docker/samb/conf:/etc/samba \
-v /docker/samb/share:/mnt/share \
-v /docker/samb/data:/mnt/data \
lstcml/samba
注意:
1、如果是小钢炮或其他安装了samba服务的系统需要关闭自带samba服务,否则端口占用导致创建容器失败
2、如果访问没权限,说明映射到宿主机的目录没有权限,如/docker/samba/data,需基于对应读写权限(完整权限:chmod 777 /docker/samba/data)默认生成两个目录,默认用户账户密码:admin/admin
/etc/samba:配置文件目录
/mnt/share:匿名访问目录,拥有读写删权限
/mnt/data:用户访问目录,拥有读写删权限
4、安装并配置aria2
docker pull p3terx/aria2-pro
docker run -d --restart unless-stopped --name aria2-pro --log-opt max-size=1m --network host -e PUID=$UID -e PGID=$GID -e RPC_SECRET=123 -e DISK_CACHE=128M -e RPC_PORT=6800 -e LISTEN_PORT=6888 -v /media/aria2/config:/config -v /media/aria2:/downloads p3terx/aria2-pro
5、docker版可道云
docker pull azking/kodexplorer:4.4.0-arm64
docker run -d --restart=always --name kodexplorer -p 8001:80 -v /media/kodexplorer:/var/www/html azking/kodexplorer:4.4.0-arm64
或者用这个源
docker run -d \
--name kdcloud \
-p 8068:80 \
--restart=always \
-v /docker/kdcloud:/var/www/html \
lstcml/n1_kodcloud
浏览器中输入N1的ip地址+端口,如http://192.168.8.8:8068即可见证奇迹
新版可道云kodbox
作用:类似windows的web资源文件管理器目前最新版可道云kodbox
docker run -d \
--name kodbox \
-p 8091:80 \
--restart=always \
-v /docker/kdcloud:/var/www/html \
lstcml/kodbox
说明:
浏览器中输入http://192.168.8.8:8091即可见证奇迹
6、微力同步
作用:局域网通过同步工具,几乎覆盖全平*(windows、linux、群晖、安装、ios、openwrt等等)
docker run -d \
--name verysync \
--restart=always \
-p 8076:8886 \
-v /docker/versync/sync:/media \
lstcml/n1_verysync
浏览器中输入N1的ip地址+8076端口,如http://192.168.8.8:8076即可见证奇迹,使用教程->灰机直达
主要是通过宿主机需同步目录映射到容器目录中,在容器中进行实时同步
7、轻量版Nginx+PHP
作用:用于建站,可以自行安装数据库
docker run \
--name alpine-nginx-php \
--restart=always \
-d -p 8069:80 \
-v /docker/alpine-nginx-php:/var/www/html \
-e PHP_ERRORS=1 \
-e PHP_UPLOAD_MAX_FILESIZE=250 \
lstcml/alpine-nginx-php
N1中/var/www/html即为站点根目录,浏览器中输入N1的ip地址+8069端口,如http://192.168.8.8:8069即可见证奇迹
8、静态化博客hexo
作用:可用于搭建博客
docker run -d \
--name blog \
--restart=always \
-p 8070:4000 \
-v /docker/hexo:/hexo \
lstcml/hexo
浏览器中输入N1的ip地址+4000端口,如http://192.168.8.8:8070即可见证奇迹,hexo具体使用教程请自行百度
9、蚂蚁笔记leanote
作用:自建笔记服务端
docker run -d \
--name leanote \
--restart=always \
-p 8072:9000 \
-v /docker/leanote/leanote/data:/data \
lstcml/n1_leanote
浏览器中输入N1的ip地址+8072端口,如http://192.168.8.8:8072即可见证奇迹,windows、mac、ios、Android的客户端可以前往官网下载->飞机直达
注:客户端登录自建服务时,注意服务器地址最后不带/,如http://192.168.8.8:8072或http://xxx.xxx.com即可
admin/abc123 (管理员用户)
[email protected]/[email protected] (体验用户)
10、Webdav
作用:自建webdav服务器,支持中文文件或目录
脚本必须以管理员身份运行
docker run -d \
--name webdav \
--restart=always \
-e USERNAME=webdav \
-e PASSWORD=123456 \
-v /media/webdav:/webdav \
-p 8073:80 \
lstcml/n1_webdav
ps:
1、如未自定义账号密码,默认为admin/passwd
2、已开启目录浏览,浏览地址为IP+端口号,如:如192.168.8.8:8073
3、挂载webdav地址为IP+端口号/webdav,如192.168.8.8:8073/webdav
4、部分Windows无法映射webdav的情况是因为win7以上默认不支持http,开启同时支持http和https:下载附件解压双击脚本即可
webdav.zip
11、Dosgame
作用:强大的回忆杀,重返小时候的小霸王、世嘉、Gameboy时代
docker run -d \
--name dosgame \
--restart=always \
-p 8074:6000 \
-v /docker/dosgame:/app/static/games/ \
lstcml/dosgame
注:打包的镜像中只有42种游戏,下载更多游戏方法(目前共1898种游戏,共31.9G,所以悠着点,需要更多游戏的时候记得创建容器的时候把/app/static/games/挂载到移动硬盘后再去下载,否则后果不堪设想):
docker exec -it dosgame sh
进入容器后操作
mv /app/static/games/games.json /app/static/games/42games.json
mv /app/static/games/1898all_games.json /app/static/games/games.json
python /app/static/games/download_data.py
等待下载完后重启容器即可
docker restart dosgame
浏览器中输入N1的ip地址+8074端口,如http://192.168.8.8:8074即可见证奇迹
12、在线MD编辑器
作用:在线编辑MD文本,支持导出本地
docker run -d \
--name markdown \
--restart=always \
-p 8075:2000 \
lstcml/n1_markdown
浏览器中输入N1的ip地址+8075端口,如http://192.168.8.8:8075即可见证奇迹
13、喜马拉雅转泛播客
作用:一款喜马拉雅转泛播客的工具
docker run -d \
--restart=always \
--name xmlypf \
-p 8077:5000 \
lstcml/ximalaya-podcast-factory
浏览器中输入N1的ip地址+5000端口,如http://192.168.8.8:8077即可见证奇迹,使用很简单,打开就知道
13、安装并配置nextcloud
数据库,可选装,不装忽略。
docker run -d --restart=always --name mysqldb -v /meiad/nextcloud/mysqldb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码1 -e MYSQL_DATABASE=数据库名称 -e MYSQL_USER=用户名 -e MYSQL_PASSWORD=密码2 mariadb
nextcloud范例-安装及配置。
docker pull nextcloud
docker run -d --restart=unless-stopped --name nextcloud -p 8080:80 -v /media/nextcloud:/var/www/html --link mysqldb:mysql nextcloud #没装数据库的话,这句删掉。
14、旁路由openwrt
网络设置
apt install ipset
ip link set eth0 promisc on
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
安装镜像
docker pull p3terx/openwrt-mini:latest
docker run -d --restart always --name ladder --network macnet --privileged p3terx/openwrt-mini:latest /sbin/init
配置ip和网关
docker ps
获得容器ID
docker exec -it 容器ID sh
从armbian 进入openwrt镜像
vi /etc/config/network
编译openwrt镜像的网络设置option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.0.2' #设置openwrt的固定IP
option netmask '255.255.255.0'
option gateway '192.168.0.1' #网关/主路由IP
vi /etc/config/network
编译openwrt镜像的网络设置
先按:i 编辑lan ip
打开文件修改完成后,需要如下命令:
先按:
【Esc】 键盘左上角
然后:
:wq!
解析:
: 必须要带
w:保存。
q:退出
!:强制保存退出。
root
admin
password
15、漂亮的相册
docker run -d \
--name=lychee-laravel \
--restart always \
-v /media/50001/lychee/srv/http/lychee-laravel/conf:/conf \
-v /media/50001/lychee/srv/http/lychee-laravel/uploads:/uploads \
-e PHP_TZ=Asia/Shanghai \
-e PHP_MAX_EXECUTION_TIME=600 \
-e DB_CONNECTION=sqlite \
-e DB_DATABASE=/conf/lychee.db \
-p 90:80 \
80x86/lychee:latest
16、漂亮的文件索引
docker run -d \
-p 8085:80 \
-p 8084:443 \
-e HTTP_AUTH="on" \
-e HTTP_USERNAME="my-username" \
-e HTTP_PASSWD="secret-password" \
-v /media/50001/home/my-files:/app/public \
--restart unless-stopped \
--mount type=tmpfs,destination=/tmp \
80x86/nginx-fancyindex
17、博客系统
docker run -d \
--name=typecho-blog \
--restart always \
--mount type=tmpfs,destination=/tmp \
-v /media/50001/blog/srv/http/typecho:/data \
-e PHP_TZ=Asia/Shanghai \
-e PHP_MAX_EXECUTION_TIME=600 \
-p 901:80 \
80x86/typecho:latest
18、花生壳内网版
作用:用于内网穿透,远程访问N1的http或tcp
docker run -d \
--restart=always \
--name oray \
--mac-address 11:22:33:44:55:66 \
lstcml/oray
其中--mac-address主要用于固定MAC地址,为了防止SN码每次在重启主机时候变化,后面的的12位MAC地址自行随机输入,官方内网穿透教程请参考-->飞机直达
获取SN码:ssh登录N1后,输入docker logs oray回车(oray是容器名称,如有更变自行替换)
14、花生壳蒲公英
作用:免费3个成员,同时加入一个虚拟局域网,可相互访问
目前发现与zerotier、n2n有冲突,导致容器重启后无法加入局域网,建议三选一
docker run -d \
--restart=always \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
--name pgy \
lstcml/n1_pgy
进入容器:
docker exec -it pgy bash
按照提示输入花生壳注册的账号登录,然后手机安卓或水果机或PC电脑安装蒲公英,启动用输入虚拟局域网ip即可访问N1(默认全端口映射),官网资料
19、sshd
作用:基于alpine的ssh客户端与服务端,可用于作为跳板访问其他设备
docker run -d \
--name sshd \
--restart=always \
lstcml/sshd
注意,默认不设置密码下,每次重启容器root密码会更变,SSH账户为root,默认密码请查看容器日志
docker logs sshd
启动容器时设置ROOT密码
docker run -d --restart=always --name ssh -e PASSWORD=test123 lstcml/n1_sshd
20、百度云同步工具bypy
作用:可映射(挂载)主机的目录,通过bypy同步到百度云盘
docker run -dit \
--name bypy \
--restart=always \
-v /docker/bypy/sync:/sync \
lstcml/bypy
具体使用方法找了个百度的,自己看看-->飞机直达
21、mmPlayer
作用:也是个人音乐厅,接口来自网易云,支持登录网易云账号,可听个人歌单
注意:这个搭建可能相对麻烦一点,请仔细看清楚
docker run -d \
--name mmplayer \
-p 8079:8080 \
-p 服务端端口:3000 \
-e HOST=宿主机IP \
-e SPORT=服务端端口 \
lstcml/n1_mmplayer
实例:
docker run -d \
--name mmplayer \
-p 8079:8080 \
-p 3210:3000 \
-e HOST=192.168.8.188 \
-e SPORT=3210 \
lstcml/n1_mmplayer
HOST:输入宿主机,也就是N1的IP地址或域名也行
SPORT:必须与映射3000端口的宿主机端口一致
22、chfs
作用:一款漂亮的web管理器支持上传下载,支持webdav
docker run -d \
--name chfs \
--restart=always \
-e TIMEOUT=3600 \
-p 8080:8080 \
-v /docker/chfs:/data \
lstcml/chfs
TIMEOUT:session过期时间,默认1440(24小时),单位为分钟
权限:
"":不可访问
创建用户:
docker exec chfs addusr 用户名 密码 权限
实例:
docker exec chfs addusr lstcml 123456 RWD
删除用户:
docker exec chfs delusr 用户名
实例:
docker exec chfs delusr lstcml
注:不管创建还是删除用户记得重启容器
23、zerotier
作用:内网穿透,把不同局域网机器加入同一虚拟局域网实现相互访问,类似蒲公英、n2n
docker run -d \
--name zerotier \
--restart=always \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
lstcml/n1_zerotier
查看状态:
docker exec zerotier zerotier-cli info
加入网络:
docker exec zerotier zerotier-cli join NETWORK_ID
如果提示tun不存在:
docker: Error response from daemon: linux runtime spec devices: error gathering device information while adding custom device "/dev/net/tun": no such file or directory
可尝试启动:
modprobe tun
24、oneindex
作用:利用OneDrive打造专属分享型网盘
docker run -d \
--name oneindex \
-p 8086:80 \
--restart=always \
-v ~/oneindex/config:/var/www/html/config \
-v ~/oneindex/cache:/var/www/html/cache \
-e REFRESH_TOKEN='0 * * * *' \
-e REFRESH_CACHE='*/10 * * * *' \
lstcml/oneindex
说明:
浏览器中输入http://192.168.8.8:8086即可见证奇迹
REFRESH_TOKEN:使用crontab进行token更新,默认0 ,即每小时更新一次
REFRESH_CACHE:使用crontab进行缓存更新,默认/10 *,即每10分钟更新一次
25、Webdav
docker pull ugeek/webdav:arm
docker run --name webdav \
--restart=unless-stopped \
-p 80:80 \
-v $HOME/docker/webdav(磁盘目录):/media \
-e USERNAME=用户名自设 \
-e PASSWORD=密码自设 \
-e TZ=Asia/Shanghai \
-e UDI=1000 \
-e GID=1000 \
-d ugeek/webdav:arm \
绿底 按需修改 ,管理地址http://xxxxxx:80
25、青龙安装
docker run -dit \
-v $PWD/ql/config:/ql/config \
-v $PWD/ql/log:/ql/log \
-v $PWD/ql/db:/ql/db \
-v $PWD/ql/repo:/ql/repo \
-v $PWD/ql/raw:/ql/raw \
-v $PWD/ql/scripts:/ql/scripts \
-v $PWD/ql/jbot:/ql/jbot \
-p 5700:5700 \
--name qinglong \
--hostname qinglong \
--restart unless-stopped \
whyour/qinglong:2.11.3
26、Docker中容器的备份、恢复和迁移
- 备份容器
首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表。要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命令。
# docker ps
Docker Containers List
在此之后,我们要选择我们想要备份的容器,然后去创建该容器的快照。我们可以使用 docker commit 命令来创建快照。
# docker commit -p 30b8f18f20b4 container-backup
Docker Commit
该命令会生成一个作为Docker镜像的容器快照,我们可以通过运行 docker images 命令来查看Docker镜像,如下。
# docker images
Docker Images
正如我们所看见的,上面做的快照已经作为Docker镜像保存了。现在,为了备份该快照,我们有两个选择,一个是我们可以登录进Docker注册中心,并推送该镜像;另一个是我们可以将Docker镜像打包成tar包备份,以供今后使用。
如果我们想要在Docker注册中心上传或备份镜像,我们只需要运行 docker login 命令来登录进Docker注册中心,然后推送所需的镜像即可。
# docker login 172.16.101.192
Docker Login
# docker tag a25ddfec4d2a arunpyasi/container-backup:test
# docker push arunpyasi/container-backup
Docker Push
如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。
# docker save -o ~/container-backup.tar container-backup
taking tarball backup
要验证tar包是否已经生成,我们只需要在保存tar包的目录中运行 ls 命令即可。
- 恢复容器
接下来,在我们成功备份了我们的Docker容器后,我们现在来恢复这些制作了Docker镜像快照的容器。如果我们已经在注册中心推送了这些Docker镜像,那么我们仅仅需要把那个Docker镜像拖回并直接运行即可。
# docker pull arunpyasi/container-backup:test
Docker Pull
但是,如果我们将这些Docker镜像作为tar包文件备份到了本地,那么我们只要使用 docker load 命令,后面加上tar包的备份路径,就可以加载该Docker镜像了。
# docker load -i ~/container-backup.tar
现在,为了确保这些Docker镜像已经加载成功,我们来运行 docker images 命令。
# docker images
在镜像被加载后,我们将用加载的镜像去运行Docker容器。
# docker run -d -p 80:80 container-backup
Restoring Docker Tarball
- 迁移Docker容器
迁移容器同时涉及到了上面两个操作,备份和恢复。我们可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中,首先我们将把容器备份为Docker镜像快照。然后,该Docker镜像或者是被推送到了Docker注册中心,或者被作为tar包文件保存到了本地。如果我们将镜像推送到了Docker注册中心,我们简单地从任何我们想要的机器上使用 docker run 命令来恢复并运行该容器。但是,如果我们将镜像打包成tar包备份到了本地,我们只需要拷贝或移动该镜像到我们想要的机器上,加载该镜像并运行需要的容器即可。