1. 程式人生 > >docker 各種引數配置

docker 各種引數配置

引數 介紹
--api-enable-cors=false 遠端API呼叫。
-b, --bridge="" 橋接一個系統上的網橋裝置到 Docker 容器裡,當使用 none 可以停用容器裡的網路
--bip="" 使用 CIDR 地址來設定網路橋的 IP。此引數和 -b 不能一起使用。
-D, --debug=false 開啟Debug模式。例如:docker -d -D
-d, --daemon=false 開啟Daemon模式。
--dns=[] 設定容器使用DNS伺服器。例如: docker -d --dns 8.8.8.8
-dns-search=[] 設定容器使用指定的DNS搜尋域名。如: docker -d --dns-search example.com
--exec-driver="native" 設定容器使用指定的執行時驅動。如:docker -d -e lxc
-G, --group="docker" 在後臺執行模式下,賦予指定的Group到相應的unix socket上。注意,當此引數 --group 賦予空字串時,將去除組資訊
-g, --graph="/var/lib/docker" 設定Docker執行時根目錄
-H, --host=[] 設定後臺模式下指定socket繫結,可以繫結一個或多個 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。如:$ docker -H tcp://0.0.0.0:2375 ps 或者$ export DOCKER_HOST="tcp://0.0.0.0:2375"$ docker ps
-icc=true 設定啟用內聯容器的通訊。
--ip="0.0.0.0" 設定容器繫結IP時使用的預設IP地址
--ip-forward=true 設定啟動容器的 net.ipv4.ip_forward
--iptables=true 設定啟動Docker容器自定義的iptable規則
--mtu=0 設定容器網路的MTU值,如果沒有這個引數,選用預設 route MTU,如果沒有預設route,就設定成常量值 1500。
-p, --pidfile="/var/run/docker.pid" 設定後臺程序PID檔案路徑。
-r, --restart=true 設定重啟之前執行中的容器
-s, --storage-driver="" 設定容器執行時使用指定的儲存驅動,如,指定使用devicemapper,可以這樣:docker -d -s devicemapper
--selinux-enabled=false 設定啟用selinux支援
--storage-opt=[] 設定儲存驅動的引數

Docker 配置檔案位置

Docker 的配置檔案可以設定大部分的後臺程序引數,在各個作業系統中的存放位置不一致

在 ubuntu 中的位置是:/etc/default/docker

在 centos6 中的位置是:/etc/sysconfig/docker

在 centos7 中的位置是:/etc/docker/

Centos6更改Docker執行根目錄的方法

 許多Linux使用者在安裝系統的時候,並沒有分配/var 分割槽,而在安裝Docker後才發現,它的預設存放位置是在 /var/lib/docker。因此導致了Docker在執行的很慢,那麼要怎麼解決這個問題呢?下面一起來看看解決的方法吧。

  解決方法:

  一是重灌系統,這也太不人性化了,忽略。。。下次部署 Docker 宿主機的時候得好好分割槽下。

  二是改變 Docker 預設存放路徑。

  查了下手冊發現: -g, --graph=“/var/lib/docker” 設定Docker執行時根目錄

  使用 --graph 引數:docker --graph=/opt/docker -d,會自動生成/opt/docker目錄(0700),並在該目錄下建立 docker 相關檔案

  原來的映象和容器都找不到了,因為路徑改了(原來的映象是在/var/lib/docker/devicemapper/devicemapper/{data,metadata})

  Docker 的配置檔案可以設定大部分的後臺程序引數,在各個作業系統中的存放位置不一致

  在 ubuntu 中的位置是:/etc/default/docker

  在 centos 中的位置是:/etc/sysconfig/docker

  我使用 CentOS 7,所以只需要更改 vim /etc/sysconfig/docker 成

  OPTIONS=--graph=“/home/lib/docker” --selinux-enabled -H fd://

  然後 service docker start 重新啟動 Docker 的路徑就改成 /home/lib/docker 了

  上面的就是就是解決Docker存放位置的空間太小,導致Docker執行緩慢的方法了,有遇到這個問題的使用者,就用這種方法進行解決吧。

Centos7更改Docker執行根目錄配置:

/etc/docker/daemon.json

1

2

3

{

"graph""/app/docker"

}

{
    "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"
            ]
        }
    }
}