docker使用心得
Docker使用心得体会,主要涉及一些有关docker的配置服务🙄
Docker网络部分
查看所有容器的IP地址
1 | docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) |
查看所有docker网络所在的网段
1 | docker network ls --format "{{.ID}} {{.Name}}" | while read id name; do |
设置代理
新建文件夹
1 | sudo mkdir -p /etc/systemd/system/docker.service.d |
新建文件
1 | touch /etc/systemd/system/docker.service.d/http-proxy.conf |
使用nano编辑
1 | sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf |
写入
1 | [Service] |
重启docker
1 | sudo systemctl daemon-reload |
Docker Pull设置Proxy
新建daemon.json
1 | sudo nano /etc/docker/daemon.json |
复制如下内容,保持
1 | { |
执行如下命令
1 | sudo systemctl daemon-reload |
查看是否生效(如果没在docker组则需要加sudo)
1 | docker info | grep -i proxy |
设置用户为docker用户组
查看是否有docker用户组
1 | getent group docker |

如果有,就会显示如图的docker,如果没有,则采用sudo创建docker用户组
1 | sudo groupadd docker |
更新用户组信息
1 | newgrp docker |
将当前用户添加至docker组:
1 | sudo usermod -aG docker username |
1. ikuai搭建webdav
安装webdav
镜像:bytemark/webdav:latest
目录挂载:/seafile/smb/music:/var/lib/dav/data
环境变量:
USERNAME
PASSWORD
LOCATION
AUTH_TYPE:Basic
修改编码为utf8
1 | vi conf/conf-enabled/dav.conf |
修改为utf8
1 | <Directory "/var/lib/dav/data/"> |
2. 配置alpine-linux
换源
更换为UESTC源
1 | sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories |
执行update
1 | apk update |
安装openrc
1 | apk add openrc |
添加 auto-docker 为自启动
1 | rc-update add auto-docker |
在/etc/loacal.d/中添加start结尾的脚本,如docker.start,内容如下
1 | if [ -f /root/script/ping.sh ]; then |
更新一下
1 | rc-update add local |
3.Ubuntu-ssh的相关配置
STEP1:安装openssh-server
1.更新源
1 | apt update |
2.安装openssh-server
1 | apt install openssh-server |
对于Alpine-linux,则用下面命令安装
1 | apk add --update openssh-server |
还需安装openrc
1 | apk add openrc |
STEP2:设置允许root登录
设置/etc/ssh/sshd_config
追加如下指令
-- PermitRootLogin yes
NGINX-Docker无法使用apt问题
:star:先换源
1 | cd /etc/apt |
生成source文件
1 | touch sources.list |
写入源
1 | echo "deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free" >>sources.list |
删除缓存
1 | rm -fR /var/lib/apt/lists/* |
在更新
1 | apt-get update |
自动ping脚本,适用于ikuai的ipv6问题
1 | while true; do |
4.seafile6.3.4安装(爱快)
这是一篇有关使用ikuai搭建6.3.4的博客,并且实现了ipv6的访问
step1: 安装seafile-docker
下载seafileltd/seafile:latest镜像

在容器设置中挂载目录
/shared
如下环境变量设置账号和密码
SEAFILE_ADMIN_EMAILSEAFILE_ADMIN_PASSWORD
step2:安装 iputils-ping
因为docker中的ipv6如果不往外界发出信号,路由是无法知道该容器的ipv6地址,所以需要安装ping工具每隔一段时间不断发包,表示心跳
1.更新apt包
1 | apt update |
2.安装iputils-ping
1 | apt-get install -y iputils-ping |
3.测试ping百度
1 | ping -6 -c 1 www.baidu.com |
3.编写/root/script/ping.sh
1 | while true; do |
4.修改ping.sh为可执行文件
1 | chmod +x /root/script/ping.sh |
5.测试脚本执行情况:如下执行成功
6.修改自启动脚本
在/root/.bashrc中追加
1 | if [ -f /root/script/ping.sh ]; then |
一般而言,由于seafile不自动开bash,因此,建议将上述加入.bashrc加入到seafile-server-latest/seafile.sh中,添加到echo "Seafile server started"的前面.
step3:设置nginx反向代理
1.创建/etc/nginx/conf.d/seafile.conf,内容如下
1 | server { |
2.测试文件格式正常
1 | nginx -t |
重启docker容器
step4:设置seafile
修改SERVICE_URL和FILE_SERVER_ROOT
SERVICE_URL:http://seafile.ninglang.fun
FILE_SERVER_ROOT:http://seafile.ninglang.fun/seafhttp
step5:设置seafdav
设置/conf/seafdav.conf中为
1 | enabled = true |
在手机端设置
网络地址:seafile.ninglang.fun/seafdav
账号密码如实填写
5.实现利用clashproxy和tailscale实现代理
下载clash部分
下载地址为
1 | http://192.168.10.14/ikuai_ddns_route_docker/clash_docker.tar |
启动docker命令
1 | docker run -itd --name=clash --restart always -v /home/ninglang/clash/clash.yaml:/root/.config/clash/config.yaml -p 7895:7890 -p 8082:8080 laoyutang/clash-and-dashboard:latest |
进入8082端口修改连接模式为直接连接
下载tailscale部分
镜像下载地址为
1 | http://192.168.10.14/Docker-Linux/tailscale.tar.gz |
启动容器,进行下载
1 | docker run -itd --name=tailscale --restart always --network=host --env TS_AUTHKEY=tskey-auth-kgN8f7wMiF11CNTRL-udpA8Q8T25WoFgtSaQDj4W83NPHoeuR1 tailscale/tailscale:latest |
设置squid代理
1 | docker run --name squid -d --restart=always --publish 3128:3128 --volume /home/yzmin/software/squid:/etc/squid/ ubuntu/squid:latest |
设置Lucky实现域名解析和Nginx代理
1 | docker run -d --name lucky --restart=always --net=host -v /home/yzmin/software/luckyconf:/goodluck gdy666/lucky |
(2025-05-27更新)
mihomo-yacd.tar.gz
这是最新的clash—meta模块,项目地址如liheji/mihomo-yacd,dockerhub链接为yilee01/mihomo-yacd - Docker Image | Docker Hub。dockercompose文件
1 | version: '3.3' |
配置文件为config.yaml,位于./config/config.yaml
对clash进行配置
一般来说,可以将sock5和http端口混合,然后放在7890端口传输,在proxies 之上写入如下内容即可
1 | port: 0 |
如果说需要修改为direct之类的,请参考
1 | port: 0 |
6.Docker-Linux实现文件迁移
第一步挂载硬盘
首先,先挂载新的硬盘,详细教程主要查阅5分钟的Linux-挂载新磁盘扩容_哔哩哔哩_bilibili
1 | sudo lsblk |

上图中可以看出sdb没能实现挂载,sda有三个分区,因此,首先需要对sdb分区,再挂载
分区
使用如下命令
1 | fdisk /dev/sdb |
查看help,选择新建分区
1 | n |
分区类型选择主分区
1 | p |
分区数量:1
分区开始点:回车默认
分区结束点:回车默认
输入w保存配置
查看是否分区
1 | sudo lsblk |

显然sdb1分区成功
格式化分区
输入如下进行格式化分区sdb
1 | sudo mkfs.ext4 /dev/sdb1 |
挂载分区
新建一个文件夹/data
1 | mkdir /data |
挂载分区
1 | sudo mount /dev/sdb1 /data |
查看挂载情况
1 | sudo lsblk |

可以看出sdb1挂载成功
解决开机磁盘丢失
获取sdb1的UUID
1 | sudo blkid /dev/sdb1 |
将UUID写入/etc/fstab
1 | UUID=XXX /data ext4 defaults 0 0 |
保存即可
停止docker
参阅docker服务如何正确关停_关闭docker-CSDN博客,docker由于有docker.socket服务。无法直接关停,直接关停docker会自动重启,故需要先关闭docker.socket
1 | systemctl stop docker.socket |
再关闭docker.service
1 | systemctl stop docker.service |
迁移docker
参阅两种方法迁移 Docker 的默认安装(存储)目录【转载】_镜像lib 移动 软链-CSDN博客
首先对查看docker的根目录
1 | sudo docker info | grep "Docker Root Dir" |
若为/var/lib/docker,则将该目录中为文件复制到/data/dokcer中
1 | cp -a /var/lib/docker /data/docker/ |
修改/etc/docker/daemon.json
1 | { |
重启docker
1 | systemctl restart docker |
7.个人自建分享站webfileshare
使用apache自建的简单分享站,支持x86_64,映射/usr/local/apache2/htdocs/即可,80端口
1 | docker run -itd -p 80:80 -v ./:/usr/local/apache2/htdocs/ --name webfileshare webfileshare:1.1 |
镜像地址为webfileshare.
8.个人博客
使用hexo实现,直接映射/root/blog即可,地址Release Hexo Blog · yzmninglang/docker-images
9.剪切板同步
Docker-Compose使用
Docker-Compose使用方法概述
YAML语法
参考文献:
对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格。
以-开头的行表示构成一个数组,没有-开头的表示字典:
1 | - A |
其中,YAML与其对应的数据结构如图:
1 | companies: |
其对应的数据结构如下图:
1 | companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}] |
再例如,YAML和JSON数据的转化
1 | languages: |
使用yaml转JSON的网站进行转化:在线YAML转JSON,对应的JSON为:
1 | { |
Dokcer-Compose结构
参考文献:
文件命名:docker-compose.yml
命令:docker-compose up
例子:
1 | # yaml 配置实例 |
该 Compose 文件定义了两个服务:web 和 redis
- web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。
- redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像。
以Ubuntu20.04:1.2镜像创建为例
创建一个BS1的镜像,需要注意的是,这里的ubuntu2004:1.2由于是自己创建的,没有执行任何任务,所以将会导致创建运行之后会自动退出,并且显示exit 0,因此,我们可以加一条command:tail -f /dev/null来阻止compose运行完成之后自动退出
1 | version: '3.8' |
创建适用于Ikuai的dockerImage
务必记住Ikuai的docker对python的环境有要求
使用ubuntu20.04安装
- 先安装miniconda
- 在pip装包
- 最后运行,一定不出错
使用dockerfile构建
- 请务必认证
alpine,这一点非常重要
1 | # 使用官方Python镜像作为基础镜像 |
其中的require如下
1 | fastapi==0.104.1 |
设计seafile同步镜像
执行如下命令
1 | echo "deb [arch=amd64 signed-by=/usr/share/keyrings/seafile-keyring.asc] https://linux-clients.seafile.com/seafile-deb/focal/ stable main" | tee /etc/apt/sources.list.d/seafile.list > /dev/null |
Docker Build设置代理
通过如下方式设置
1 | docker build -t umi-ocr-paddle . \ |