1. 程式人生 > 其它 >Docker和Docker-compose使用總結-1

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”
  	]
  	}
  }
}