Docker和Docker-compose使用总结-1

一、删除无用docker network

# docker stop $(docker ps -a -q)
# docker rm $(dockerj ps -a -q)
// 删除无用docker create网卡
# docker network prune 

二、网卡默认IP段冲突问题

1. 【永久生效】修改daemon.json

# cat /etc/docker/daemon.json
{
  "default-address-pools": [
    {
      "base": "10.55.0.1/16",
      "size": 24
    }
  ],
}
# systemctl restart docker

2. 【仅docker0网卡】修改daemon.json

# cat /etc/docker/daemon.json
{
  "bip": "10.55.0.1/24"
}
# systemctl restart docker

在配置文件中添加以下内容,其中default-address-pools的base表示CIDR地址,size表示docker创建的网络的掩码长度,CIDR的掩码长度应该小于size,否则docker将会出现网络失败。这里使用192.168网段地址,其中CIDR为16为掩码,划分的网络子网掩码24位,理论可以划分出2(32-16)-(32-24)=28=256个子网。

3. 【shell脚本】通过函数触发或指定虚拟IP段

# check docker environment 
# Avoid conflicts between the LAN IP and docker0/docker-compose LAN IP
check_docker_environment(){
        echo "\n\033[33m[+] check docker environment configure status\033[0m"

        # clean useless network
        bash -c 'echo -e "y\n"| docker network prune'
        # default network pools 10.55.0.1/24
        read -p "[+] please input docker network pools, default [10.55.0.1/24]:" DOCKER_POOLS_IPS
        if [ -z $DOCKER_POOLS_IPS ];then
                DOCKER_POOLS_IPS="10.55.0.1/16"
                echo -e "{\n  \"default-address-pools\": [\n    {\n      \"base\": \"$DOCKER_POOLS_IPS\",\n      \"size\": 24\n    }\n  ]\n}" > /etc/docker/daemon.json
                # restart docker service
                systemctl restart docker
        else
                echo -e "{\n  \"default-address-pools\": [\n    {\n      \"base\": \"$DOCKER_POOLS_IPS\",\n      \"size\": 24\n    }\n  ]\n}" > /etc/docker/daemon.json
                # restart docker service
                systemctl restart docker
        fi
}

二、daemon.json文件参数

{
  “authorization-plugins”: [],//访问授权插件
  “data-root”: “”,//docker数据持久化存储的根目录
  “dns”: [],//DNS服务器
  “dns-opts”: [],//DNS配置选项,如端口等
  “dns-search”: [],//DNS搜索域名
  “exec-opts”: [],//执行选项
  “exec-root”: “”,//执行状态的文件的根目录
  “experimental”: false,//是否开启试验性特性
  “storage-driver”: “”,//存储驱动器
  “storage-opts”: [],//存储选项
  “labels”: [],//键值对式标记docker元数据
  “live-restore”: true,//dockerd挂掉是否保活容器(避免了docker服务异常而造成容器退出)
  “log-driver”: “”,//容器日志的驱动器
  “log-opts”: {},//容器日志的选项
  “mtu”: 0,//设置容器网络MTU(最大传输单元)
  “pidfile”: “”,//daemon PID文件的位置
  “cluster-store”: “”,//集群存储系统的URL
  “cluster-store-opts”: {},//配置集群存储
  “cluster-advertise”: “”,//对外的地址名称
  “max-concurrent-downloads”: 3,//设置每个pull进程的最大并发
  “max-concurrent-uploads”: 5,//设置每个push进程的最大并发
  “default-shm-size”: “64M”,//设置默认共享内存的大小
  “shutdown-timeout”: 15,//设置关闭的超时时限(who?)
  “debug”: true,//开启调试模式
  “hosts”: [],//监听地址(?)
  “log-level”: “”,//日志级别
  “tls”: true,//开启传输层安全协议TLS
  “tlsverify”: true,//开启输层安全协议并验证远程地址
  “tlscacert”: “”,//CA签名文件路径
  “tlscert”: “”,//TLS证书文件路径
  “tlskey”: “”,//TLS密钥文件路径
  “swarm-default-advertise-addr”: “”,//swarm对外地址
  “api-cors-header”: “”,//设置CORS(跨域资源共享-Cross-origin resource sharing)头
  “selinux-enabled”: false,//开启selinux(用户、进程、应用、文件的强制访问控制)
  “userns-remap”: “”,//给用户命名空间设置 用户/组
  “group”: “”,//docker所在组
  “cgroup-parent”: “”,//设置所有容器的cgroup的父类(?)
  “default-ulimits”: {},//设置所有容器的ulimit
  “init”: false,//容器执行初始化,来转发信号或控制(reap)进程
  “init-path”: “/usr/libexec/docker-init”,//docker-init文件的路径
  “ipv6”: false,//开启IPV6网络
  “iptables”: false,//开启防火墙规则
  “ip-forward”: false,//开启net.ipv4.ip_forward
  “ip-masq”: false,//开启ip掩蔽(IP封包通过路由器或防火墙时重写源IP地址或目的IP地址的技术)
  “userland-proxy”: false,//用户空间代理
  “userland-proxy-path”: “/usr/libexec/docker-proxy”,//用户空间代理路径
  “ip”: “0.0.0.0”,//默认IP
  “bridge”: “”,//将容器依附(attach)到桥接网络上的桥标识
  “bip”: “”,//指定桥接ip
  “fixed-cidr”: “”,//(ipv4)子网划分,即限制ip地址分配范围,用以控制容器所属网段实现容器间(同一主机或不同主机间)的网络访问
  “fixed-cidr-v6”: “”,//(ipv6)子网划分
  “default-gateway”: “”,//默认网关
  “default-gateway-v6”: “”,//默认ipv6网关
  “icc”: false,//容器间通信
  “raw-logs”: false,//原始日志(无颜色、全时间戳)
  “allow-nondistributable-artifacts”: [],//不对外分发的产品提交的registry仓库
  “registry-mirrors”: [],//registry仓库镜像
  “seccomp-profile”: “”,//seccomp配置文件
  “insecure-registries”: [],//非https的registry地址
  “no-new-privileges”: false,//禁止新优先级(??)
  “default-runtime”: “runc”,//OCI联盟(The Open Container Initiative)默认运行时环境
  “oom-score-adjust”: -500,//内存溢出被杀死的优先级(-1000~1000)
  “node-generic-resources”: [“NVIDIA-GPU=UUID1”, “NVIDIA-GPU=UUID2”],//对外公布的资源节点
  “runtimes”: {//运行时
  “cc-runtime”: {
  	“path”: “/usr/bin/cc-runtime”
  },
  “custom”: {
  	“path”: “/usr/local/bin/my-runc-replacement”,
  	“runtimeArgs”: [
  		“–debug”
  	]
  	}
  }
}
posted @ 2022-03-03 10:39  爱吃蚊子爱子钰  阅读(285)  评论(0编辑  收藏  举报