Docker和Docker-compose使用總結-1
阿新 • • 發佈:2022-03-03
一、刪除無用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”
]
}
}
}