创建自定义 bridge 网络
docker network create -d bridge naihe-bridge
关于Curl
指定下载速率
curl --limit-rate 100k -o bb.iso xxxx
恢复下载文件
curl -C - -o bb.iso xxxx
跟随重定向
curl xxxx -L
显示详细信息
curl -v -L xxxx
通过代理访问
curl --proxy 协议://用户名:密码@代理地址:端口 url
下载文件
curl -u 用户名:密码 -O ftp://server/xxx //大写O或小写o 来下载文件
上传文件
curl -u 用户名:密码 -T 文件 ftp://server
ping的时候产生 audio音响
ping -a xxxx
关于网络安全
iptables->表->链->规则
查看 filter 表的信息
iptables --table filter --list --line-numbers
添加一条规则拒绝指定IP访问(有多个链时按照从上往下开始执行)
iptables \
--table filter \
--append INPUT \
--source 192.168.3.20 \
--jump REJECT
- REJECT [拒绝]
- DROP [丢弃]
删除一条规则
iptables --table filter --delete INPUT 1 //删除filter表的INPUT链的第一条规则
ipset
可以把众多的ip地址段单独汇集成一个集合,集合可以生成唯一的hash值
//创建集合
ipset create name hash:net
//展示集合
ipset list name
ipset 与 iptables 结合的脚本
# 1、创建 block-india.sh 的文件
touch block-india.sh
# 2、编写sh的内容
#!/bin/bash
ipset create asan hash:net -exist #创建ipset集合
ipset flush asan #清除元集合存在的ip地址段
# 下载最新文件,文件存在则删除重新下载
[ -f "in-aggregated.zone" ] && rm in-aggregated.zone
wget https://www.ipdeny.com/ipblocks/data/aggregated/in-aggregated.zone
# 判断下载是否成功
if [ $? -eq 0 ]
then
echo "******** Download *****"
# 将ip里的数据添加到ipset集合
for address in `cat in-aggregated.zone`
do
ipset add asan $address
done
else
echo "******** Fail *****"
fi
# 添加iptables规则
iptables \
--table filter \
--append INPUT \
--match set --match-set asan src \
--jump DROP
.!where 可以快速加入 #!/bin/bash
保存ipset与iptables
- ipset save > /etc/rules.ipset # 保存ipset集合到文件中
- iptables-save > /etc/rules.iptables # 保存iptables规则到文件中
- ipset restore < /etc/rules.ipset # 恢复ipset集合, -exist 避免覆盖源文件
- iptables-restore < /etc/rules.iptables # 恢复iptables规则, --noflush 避免覆盖源文件
获取国家的ip地址段
www.ipdeny.com
查看主机的ip地址
hostname -I
创建 dockerfile
touch Dockerfile
FROM node:18-alphine3.15 //选择基础镜像
WORKDIR /egg //切换工作目录
COPY package.json . //拷贝文件
RYN npm install //运行指定命令,构建运行时的命令
COPY . . //拷贝剩余文件
EXPOSE 3000 //暴露端口号
CMD ["node","app.js"] //运行镜像里的app.js,启动容器时的命令
.dockerignore 把不想复制到镜像的文件和文件夹写在此文件里
docker build . //运行dockerfile文件
docker tag imageId name //为镜像起名字,例: docker tag e6f dansoncut/nodejs:v1.0
docker 运行容器解析
docker run -d /宿主机目录:/容器目录 -v /容器目录 -p:宿主机端口:容器端口 --name 容器名 镜像名
-v 容器目录 //禁止同步容器目录
-v 宿主机目录:/容器目录:ro //标识宿主机目录仅读,容器内产生的文件不会导致宿主机内容变化
使用了volum映射后,在删除容器时记得删除vloum,否则会越来越多 docker rm -fv 容器名
docker-compose
- 新建 docker-compose.yml 文件
- 编写 docker-compose.yml 文件
version: "3.8" #版本号
services:
eggpain-container: #容器名
build: .
ports:
- "3000:3000"
volumes:
- ./:/egg:ro
- /egg/node_modules
- docker-compose up -d --build
后台执行 docker-compose.yml,--build 若compose文件有修改就会重建,若不加下次就会使用上次的缓存
- docker-compose down -v
清除容器,-v标识清楚对应volume