亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Compose About versions and upgrading (Compose) ASP.NET Core + SQL Server on Linux (Compose) CLI environment variables (Compose) Command-line completion (Compose) Compose(組成) Compose command-line reference(組合命令行參考) Control startup order (Compose) Django and PostgreSQL (Compose) Docker stacks and distributed application bundles (Compose) docker-compose build(docker-compose構(gòu)建) docker-compose bundle docker-compose config docker-compose create docker-compose down docker-compose events docker-compose exec docker-compose help docker-compose images docker-compose kill docker-compose logs docker-compose pause docker-compose port docker-compose ps docker-compose pull docker-compose push docker-compose restart docker-compose rm docker-compose run docker-compose scale docker-compose start docker-compose stop docker-compose top docker-compose unpause docker-compose up Environment file (Compose) Environment variables in Compose Extend services in Compose Frequently asked questions (Compose) Getting started (Compose) Install Compose Link environment variables (deprecated) (Compose) Networking in Compose Overview of Docker Compose Overview of docker-compose CLI Quickstart: Compose and WordPress Rails and PostgreSQL (Compose) Sample apps with Compose Using Compose in production Using Compose with Swarm Engine .NET Core application (Engine) About images, containers, and storage drivers (Engine) Add nodes to the swarm (Engine) Apply custom metadata (Engine) Apply rolling updates (Engine) apt-cacher-ng Best practices for writing Dockerfiles (Engine) Binaries (Engine) Bind container ports to the host (Engine) Breaking changes (Engine) Build your own bridge (Engine) Configure container DNS (Engine) Configure container DNS in user-defined networks (Engine) CouchDB (Engine) Create a base image (Engine) Create a swarm (Engine) Customize the docker0 bridge (Engine) Debian (Engine) Default bridge network Delete the service (Engine) Deploy a service (Engine) Deploy services to a swarm (Engine) Deprecated Engine features Docker container networking (Engine) Docker overview (Engine) Docker run reference (Engine) Dockerfile reference (Engine) Dockerize an application Drain a node (Engine) Engine FAQ (Engine) Fedora (Engine) Get started (Engine) Get started with macvlan network driver (Engine) Get started with multi-host networking (Engine) How nodes work (Engine) How services work (Engine) Image management (Engine) Inspect the service (Engine) Install Docker (Engine) IPv6 with Docker (Engine) Join nodes to a swarm (Engine) Legacy container links (Engine) Lock your swarm (Engine) Manage nodes in a swarm (Engine) Manage sensitive data with Docker secrets (Engine) Manage swarm security with PKI (Engine) Manage swarm service networks (Engine) Migrate to Engine 1.10 Optional Linux post-installation steps (Engine) Overview (Engine) PostgreSQL (Engine) Raft consensus in swarm mode (Engine) Riak (Engine) Run Docker Engine in swarm mode Scale the service (Engine) SDKs (Engine) Select a storage driver (Engine) Set up for the tutorial (Engine) SSHd (Engine) Storage driver overview (Engine) Store service configuration data (Engine) Swarm administration guide (Engine) Swarm mode key concepts (Engine) Swarm mode overlay network security model (Engine) Swarm mode overview (Engine) Understand container communication (Engine) Use multi-stage builds (Engine) Use swarm mode routing mesh (Engine) Use the AUFS storage driver (Engine) Use the Btrfs storage driver (Engine) Use the Device mapper storage driver (Engine) Use the OverlayFS storage driver (Engine) Use the VFS storage driver (Engine) Use the ZFS storage driver (Engine) Engine: Admin Guide Amazon CloudWatch logs logging driver (Engine) Bind mounts (Engine) Collect Docker metrics with Prometheus (Engine) Configuring and running Docker (Engine) Configuring logging drivers (Engine) Control and configure Docker with systemd (Engine) ETW logging driver (Engine) Fluentd logging driver (Engine) Format command and log output (Engine) Google Cloud logging driver (Engine) Graylog Extended Format (GELF) logging driver (Engine) Journald logging driver (Engine) JSON File logging driver (Engine) Keep containers alive during daemon downtime (Engine) Limit a container's resources (Engine) Link via an ambassador container (Engine) Log tags for logging driver (Engine) Logentries logging driver (Engine) PowerShell DSC usage (Engine) Prune unused Docker objects (Engine) Run multiple services in a container (Engine) Runtime metrics (Engine) Splunk logging driver (Engine) Start containers automatically (Engine) Storage overview (Engine) Syslog logging driver (Engine) tmpfs mounts Troubleshoot volume problems (Engine) Use a logging driver plugin (Engine) Using Ansible (Engine) Using Chef (Engine) Using Puppet (Engine) View a container's logs (Engine) Volumes (Engine) Engine: CLI Daemon CLI reference (dockerd) (Engine) docker docker attach docker build docker checkpoint docker checkpoint create docker checkpoint ls docker checkpoint rm docker commit docker config docker config create docker config inspect docker config ls docker config rm docker container docker container attach docker container commit docker container cp docker container create docker container diff docker container exec docker container export docker container inspect docker container kill docker container logs docker container ls docker container pause docker container port docker container prune docker container rename docker container restart docker container rm docker container run docker container start docker container stats docker container stop docker container top docker container unpause docker container update docker container wait docker cp docker create docker deploy docker diff docker events docker exec docker export docker history docker image docker image build docker image history docker image import docker image inspect docker image load docker image ls docker image prune docker image pull docker image push docker image rm docker image save docker image tag docker images docker import docker info docker inspect docker kill docker load docker login docker logout docker logs docker network docker network connect docker network create docker network disconnect docker network inspect docker network ls docker network prune docker network rm docker node docker node demote docker node inspect docker node ls docker node promote docker node ps docker node rm docker node update docker pause docker plugin docker plugin create docker plugin disable docker plugin enable docker plugin inspect docker plugin install docker plugin ls docker plugin push docker plugin rm docker plugin set docker plugin upgrade docker port docker ps docker pull docker push docker rename docker restart docker rm docker rmi docker run docker save docker search docker secret docker secret create docker secret inspect docker secret ls docker secret rm docker service docker service create docker service inspect docker service logs docker service ls docker service ps docker service rm docker service scale docker service update docker stack docker stack deploy docker stack ls docker stack ps docker stack rm docker stack services docker start docker stats docker stop docker swarm docker swarm ca docker swarm init docker swarm join docker swarm join-token docker swarm leave docker swarm unlock docker swarm unlock-key docker swarm update docker system docker system df docker system events docker system info docker system prune docker tag docker top docker unpause docker update docker version docker volume docker volume create docker volume inspect docker volume ls docker volume prune docker volume rm docker wait Use the Docker command line (Engine) Engine: Extend Access authorization plugin (Engine) Docker log driver plugins Docker network driver plugins (Engine) Extending Engine with plugins Managed plugin system (Engine) Plugin configuration (Engine) Plugins API (Engine) Volume plugins (Engine) Engine: Security AppArmor security profiles for Docker (Engine) Automation with content trust (Engine) Content trust in Docker (Engine) Delegations for content trust (Engine) Deploying Notary (Engine) Docker security (Engine) Docker security non-events (Engine) Isolate containers with a user namespace (Engine) Manage keys for content trust (Engine) Play in a content trust sandbox (Engine) Protect the Docker daemon socket (Engine) Seccomp security profiles for Docker (Engine) Secure Engine Use trusted images Using certificates for repository client verification (Engine) Engine: Tutorials Engine tutorials Network containers (Engine) Get Started Part 1: Orientation Part 2: Containers Part 3: Services Part 4: Swarms Part 5: Stacks Part 6: Deploy your app Machine Amazon Web Services (Machine) Digital Ocean (Machine) docker-machine active docker-machine config docker-machine create docker-machine env docker-machine help docker-machine inspect docker-machine ip docker-machine kill docker-machine ls docker-machine provision docker-machine regenerate-certs docker-machine restart docker-machine rm docker-machine scp docker-machine ssh docker-machine start docker-machine status docker-machine stop docker-machine upgrade docker-machine url Driver options and operating system defaults (Machine) Drivers overview (Machine) Exoscale (Machine) Generic (Machine) Get started with a local VM (Machine) Google Compute Engine (Machine) IBM Softlayer (Machine) Install Machine Machine Machine CLI overview Machine command-line completion Machine concepts and help Machine overview Microsoft Azure (Machine) Microsoft Hyper-V (Machine) Migrate from Boot2Docker to Machine OpenStack (Machine) Oracle VirtualBox (Machine) Provision AWS EC2 instances (Machine) Provision Digital Ocean Droplets (Machine) Provision hosts in the cloud (Machine) Rackspace (Machine) VMware Fusion (Machine) VMware vCloud Air (Machine) VMware vSphere (Machine) Notary Client configuration (Notary) Common Server and signer configurations (Notary) Getting started with Notary Notary changelog Notary configuration files Running a Notary service Server configuration (Notary) Signer configuration (Notary) Understand the service architecture (Notary) Use the Notary client
characters

daemon
Usage:	dockerd COMMAND

A self-sufficient runtime for containers.
Options:      
    --add-runtime runtime                   Register an additional OCI compatible runtime (default [])      
    --allow-nondistributable-artifacts list         Push nondistributable artifacts to specified registries (default [])      
    --api-cors-header string                Set CORS headers in the Engine API      
    --authorization-plugin list             Authorization plugins to load (default [])      
    --bip string                            Specify network bridge IP  
    -b, --bridge string                         Attach containers to a network bridge      
    --cgroup-parent string                  Set parent cgroup for all containers      
    --cluster-advertise string              Address or interface name to advertise      
    --cluster-store string                  URL of the distributed storage backend      
    --cluster-store-opt map                 Set cluster store options (default map[])      
    --config-file string                    Daemon configuration file (default "/etc/docker/daemon.json")      
    --containerd string                     Path to containerd socket      
    --cpu-rt-period int                     Limit the CPU real-time period in microseconds      
    --cpu-rt-runtime int                    Limit the CPU real-time runtime in microseconds      
    --data-root string                      Root directory of persistent Docker state (default "/var/lib/docker")  
    -D, --debug                                 Enable debug mode      
    --default-gateway ip                    Container default gateway IPv4 address      
    --default-gateway-v6 ip                 Container default gateway IPv6 address      
    --default-runtime string                Default OCI runtime for containers (default "runc")      
    --default-ulimit ulimit                 Default ulimits for containers (default [])      
    --disable-legacy-registry               Disable contacting legacy registries (default true)      
    --dns list                              DNS server to use (default [])      
    --dns-opt list                          DNS options to use (default [])      
    --dns-search list                       DNS search domains to use (default [])      
    --exec-opt list                         Runtime execution options (default [])      
    --exec-root string                      Root directory for execution state files (default "/var/run/docker")      
    --experimental                          Enable experimental features      
    --fixed-cidr string                     IPv4 subnet for fixed IPs      
    --fixed-cidr-v6 string                  IPv6 subnet for fixed IPs  
    -G, --group string                          Group for the unix socket (default "docker")      
    --help                                  Print usage  
    -H, --host list                             Daemon socket(s) to connect to (default [])      
    --icc                                   Enable inter-container communication (default true)      
    --init                                  Run an init in the container to forward signals and reap processes      
    --init-path string                      Path to the docker-init binary      
    --insecure-registry list                Enable insecure registry communication (default [])      
    --ip ip                                 Default IP when binding container ports (default 0.0.0.0)      
    --ip-forward                            Enable net.ipv4.ip_forward (default true)      
    --ip-masq                               Enable IP masquerading (default true)      
    --iptables                              Enable addition of iptables rules (default true)      
    --ipv6                                  Enable IPv6 networking      
    --label list                            Set key=value labels to the daemon (default [])      
    --live-restore                          Enable live restore of docker when containers are still running      
    --log-driver string                     Default driver for container logs (default "json-file")  
    -l, --log-level string                      Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")      
    --log-opt map                           Default log driver options for containers (default map[])      
    --max-concurrent-downloads int          Set the max concurrent downloads for each pull (default 3)      
    --max-concurrent-uploads int            Set the max concurrent uploads for each push (default 5)      
    --metrics-addr string                   Set default address and port to serve the metrics api on      
    --mtu int                               Set the containers network MTU      
    --no-new-privileges                     Set no-new-privileges by default for new containers      
    --oom-score-adjust int                  Set the oom_score_adj for the daemon (default -500)  
    -p, --pidfile string                        Path to use for daemon PID file (default "/var/run/docker.pid")      
    --raw-logs                              Full timestamps without ANSI coloring      
    --registry-mirror list                  Preferred Docker registry mirror (default [])      
    --seccomp-profile string                Path to seccomp profile      
    --selinux-enabled                       Enable selinux support      
    --shutdown-timeout int                  Set the default shutdown timeout (default 15)  
    -s, --storage-driver string                 Storage driver to use      
    --storage-opt list                      Storage driver options (default [])      
    --swarm-default-advertise-addr string   Set default address or interface for swarm advertised address      
    --tls                                   Use TLS; implied by --tlsverify      
    --tlscacert string                      Trust certs signed only by this CA (default "~/.docker/ca.pem")      
    --tlscert string                        Path to TLS certificate file (default "~/.docker/cert.pem")      
    --tlskey string                         Path to TLS key file (default ~/.docker/key.pem")      
    --tlsverify                             Use TLS and verify the remote      
    --userland-proxy                        Use userland proxy for loopback traffic (default true)      
    --userland-proxy-path string            Path to the userland proxy binary      
    --userns-remap string                   User/Group setting for user namespaces  
    -v, --version                       Print version information and quit

帶有[]的選項可以指定多次。

描述

dockerd是管理容器的持續(xù)過程。Docker為守護進程和客戶端使用不同的二進制文件。運行你輸入的守護進程dockerd

要使用調(diào)試輸出運行守護程序,請使用dockerd -D或添加debug: true到該daemon.json文件。

:在Docker1.13或更高版本,通過啟動使實驗性的功能dockerd--experimental標(biāo)志或添加experimental: truedaemon.json文件。在較早的Docker版本中,需要不同的版本來啟用實驗功能。

實例

守護進程套接字選項

Docker daemon可以監(jiān)聽通過三種不同類型的Socket引擎API請求:unix,tcp,和fd

默認情況下,創(chuàng)建unix域套接字(或IPC套接字)/var/run/docker.sock,需要root權(quán)限或docker組成員資格。

如果您需要遠程訪問Docker守護程序,則需要啟用tcp套接字。請注意,默認設(shè)置提供對Docker守護進程的未加密和未經(jīng)身份驗證的直接訪問 - 應(yīng)使用內(nèi)置的HTTPS加密套接字或?qū)踩玏eb代理放在其前面進行保護。您可以使用IP地址在具有特定網(wǎng)絡(luò)接口的2375所有網(wǎng)絡(luò)接口上偵聽端口-H tcp://0.0.0.0:2375-H tcp://192.168.59.103:2375。通常使用端口2375進行未加密,并使用端口2376與守護進程進行加密通信。

:如果使用HTTPS加密套接字,請記住只支持TLS1.0及更高版本。出于安全考慮,不再支持SSLv 3及以下協(xié)議。

基于Systemd系統(tǒng)中,可以通過后臺程序溝通Systemd插座激活,使用dockerd -H fd://。使用fd://對于大多數(shù)設(shè)置來說都是完美的,但你也可以指定單獨的套接字:dockerd -H fd://3。如果找不到指定的套接字激活文件,則Docker將退出。您可以在Docker源代碼樹中找到在Docker和Systemd中使用Systemd套接字激活的示例。

可以將Docker守護進程配置為同時使用多個套接字偵聽多個套接字。-H備選方案:

# listen using the default unix socket, and on 2 specific IP addresses on this host.$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2

Docker客戶端將遵守DOCKER_HOST環(huán)境變量來設(shè)置-H客戶端的標(biāo)志。使用一個下面的命令:

$ docker -H tcp://0.0.0.0:2375 ps
$ export DOCKER_HOST="tcp://0.0.0.0:2375"$ docker ps

DOCKER_TLS_VERIFY環(huán)境變量設(shè)置為除空字符串以外的任何值都等同于設(shè)置--tlsverify標(biāo)志。以下是等同的:

$ docker --tlsverify ps
# or
$ export DOCKER_TLS_VERIFY=1$ docker ps

泊塢窗客戶端將信守HTTP_PROXY,HTTPS_PROXY以及NO_PROXY環(huán)境變量(或小寫的版本上)。HTTPS_PROXY優(yōu)先于HTTP_PROXY。

將Docker綁定到另一個主機/端口或Unix套接字

警告*更改默認值docker守護進程綁定到TCP端口或Unix碼頭工人用戶組將通過允許非根用戶獲取信息來增加您的安全風(fēng)險。根部進入主機。確保您控制對docker如果您正在綁定到TCP端口,任何訪問該端口的人都可以完全訪問該端口;因此,在開放的網(wǎng)絡(luò)中不宜使用該端口。

帶著-H可以讓Docker守護進程偵聽特定的IP和端口。默認情況下,它將監(jiān)聽unix:///var/run/docker.sock類只允許本地連接。根部用戶。你把它設(shè)置為0.0.0.0:2375或者一個特定的主機ip讓每個人都可以訪問,但這是不建議因為對某個人來說,獲得對運行守護進程的主機的根訪問非常簡單。

同樣,Docker客戶端可以使用-H連接到自定義端口。Docker客戶端將默認連接到unix:///var/run/docker.sockLinux和tcp://127.0.0.1:2376Windows。

-H接受以下格式的主機和端口分配:

tcp://[host]:[port][path] or unix://path

例如:

  • tcp://- > TLS加密打開時TCP 127.0.0.1端口連接到任一端口2376,或者2375當(dāng)通信采用純文本時連接到端口。

  • tcp://host:2375->主機上的TCP連接:2375

  • tcp://host:2375/path->主機上的tcp連接:2375和所有請求的前置路徑

  • unix://path/to/socket->Unix套接字位于path/to/socket

-H為空時,將默認為與未-H傳入時相同的值。

-H還接受TCP綁定的簡短形式:host:host:port:port

在守護進程模式下運行Docker:

$ sudo <path to>/dockerd -H 0.0.0.0:5555 &

下載ubuntu圖片:

$ docker -H :5555 pull ubuntu

您可以使用多個-H,例如,如果您希望同時偵聽tcp和unix套接字。

# Run docker in daemon mode
$ sudo <path to>/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &# Download an ubuntu image, use default Unix socket
$ docker pull ubuntu
# OR use the TCP port
$ docker -H tcp://127.0.0.1:2375 pull ubuntu

守護進程存儲驅(qū)動程序

Docker daemon 進程有幾種不同的圖像層存儲驅(qū)動程序支持:aufsdevicemapper,btrfs,zfs,overlayoverlay2

aufs驅(qū)動器是最古老的,而是基于Linux內(nèi)核補丁集是不太可能被合并到主內(nèi)核中。這些也會導(dǎo)致一些嚴(yán)重的內(nèi)核崩潰。但是,aufs允許容器共享可執(zhí)行文件和共享庫內(nèi)存,因此在使用相同的一個或多個程序庫運行數(shù)千個容器時是非常有用的選擇。

devicemapper驅(qū)動程序使用精簡配置和寫入時復(fù)制(CoW)快照。對于每個設(shè)備映射圖位置(通常情況下)/var/lib/docker/devicemapper,將根據(jù)兩個塊設(shè)備創(chuàng)建精簡池,其中一個用于數(shù)據(jù),另一個用于元數(shù)據(jù)。默認情況下,這些塊設(shè)備是通過使用自動創(chuàng)建的稀疏文件的回送裝載自動創(chuàng)建的。有關(guān)如何自定義此設(shè)置的方法,請參閱下面的存儲驅(qū)動程序選項。?jpetazzo /使用Device Mapper插件文章調(diào)整Docker容器解釋了如何在不使用選項的情況下調(diào)整現(xiàn)有設(shè)置。

btrfs驅(qū)動程序的速度非???,就像docker build- 但不像devicemapper設(shè)備之間共享可執(zhí)行內(nèi)存。使用dockerd -s btrfs -g /mnt/btrfs_partition。

zfs驅(qū)動可能不如btrfs但對穩(wěn)定較長的記錄。由于Single Copy ARC克隆之間的共享塊只會被緩存一次。使用dockerd -s zfs。zfs.fsname按照存儲驅(qū)動程序選項中的說明選擇不同的zfs文件系統(tǒng)集選項。

overlay是一個非??焖俚穆?lián)合文件系統(tǒng)。現(xiàn)在它在3.18.0版本的主要Linux內(nèi)核中合并。overlay也支持頁面緩存共享,這意味著訪問同一文件的多個容器可以共享一個頁面緩存條目(或條目),它使overlay內(nèi)存與aufs驅(qū)動程序一樣高效。呼叫dockerd -s overlay使用它。

注意overlay:盡管如此,該功能仍然非常年輕,不應(yīng)在生產(chǎn)中使用。最值得注意的是,使用overlay會導(dǎo)致過多的inode消耗(特別是隨著圖像數(shù)量的增長),以及>與使用RPM不兼容。

overlay2使用相同的快速工會的文件系統(tǒng),但采用的利用附加功能在Linux內(nèi)核4.0添加,以避免過多的inode消耗。調(diào)用dockerd -s overlay2使用它。

:這兩個overlayoverlay2是目前不支持上btrfs或?qū)懳募到y(tǒng)的任何副本,只應(yīng)在使用ext4分區(qū)。

每個存儲驅(qū)動程序的選項

特定的存儲驅(qū)動程序可以使用--storage-opt標(biāo)志指定的選項進行配置。選項為devicemapper前綴dm,zfs開始zfs選項和btrfs開始選項btrfs。

Devicemapper選項

這是Linux上devicemapper配置文件的一個示例:

{  "storage-driver": "devicemapper",  "storage-opts": [    "dm.thinpooldev=/dev/mapper/thin-pool",    "dm.use_deferred_deletion=true",    "dm.use_deferred_removal=true"  ]}
dm.thinpooldev

指定用于精簡池的自定義塊存儲設(shè)備。

如果使用塊設(shè)備進行設(shè)備映射程序存儲,則最好使用它lvm來創(chuàng)建和管理精簡池卷。然后將該卷交給Docker專門創(chuàng)建映像和容器所需的快照卷。

在Engine外部管理精簡池使得Docker利用設(shè)備映射精簡配置作為Docker容器的后備存儲,這是功能最豐富的方法?;趌vm的精簡池管理功能的亮點包括:自動或交互式精簡池調(diào)整大小支持,動態(tài)更改精簡池功能,當(dāng)lvm激活精簡池時自動精簡元數(shù)據(jù)檢查等。

作為未提供精簡池的后備,將創(chuàng)建回送文件。環(huán)回速度非常慢,但可以在沒有任何存儲預(yù)配置的情況下使用。強烈建議您不要在生產(chǎn)環(huán)境中使用環(huán)回。確保您的引擎守護程序提供了一個--storage-opt dm.thinpooldev參數(shù)。

例子:
$ sudo dockerd --storage-opt dm.thinpooldev=/dev/mapper/thin-pool
dm.directlvm_device

作為上述提供瘦池的替代方案,Docker可以為您設(shè)置一個塊設(shè)備。

例子:
$ sudo dockerd --storage-opt dm.directlvm_device=/dev/xvdf
dm.thinp_percent

設(shè)置要用于存儲的塊設(shè)備傳遞的百分比。

例子:
$ sudo dockerd --storage-opt dm.thinp_percent=95
dm.thinp_metapercent

設(shè)置要用于元數(shù)據(jù)存儲的傳入塊設(shè)備的百分比。

例子:
$ sudo dockerd --storage-opt dm.thinp_metapercent=1
dm.thinp_autoextend_threshold

lvm嘗試自動擴展可用空間100 =禁用之前,設(shè)置所用空間百分比的值

例子:
$ sudo dockerd --storage-opt dm.thinp_autoextend_threshold=80
dm.thinp_autoextend_percent

設(shè)置值百分比值,以在lvm嘗試自動擴展可用空間100 =禁用時增加精簡池

例子:
$ sudo dockerd --storage-opt dm.thinp_autoextend_percent=20
dm.basesize

指定創(chuàng)建基礎(chǔ)設(shè)備時使用的大小,這限制了圖像和容器的大小。默認值是10G。請注意,精簡設(shè)備本質(zhì)上是“稀疏”的,因此大多數(shù)情況下為空的10G設(shè)備不會在池中使用10 GB的空間。但是,文件系統(tǒng)將為設(shè)備越大的空箱使用更多空間。

在守護進程重新啟動時可以增加基本設(shè)備的大小,這將允許所有將來的映像和容器(基于這些新映像)成為新的基本設(shè)備大小。

實例
$ sudo dockerd --storage-opt dm.basesize=50G

這會將基本設(shè)備大小增加到50G。如果現(xiàn)有的基礎(chǔ)設(shè)備大小大于50G,則Docker守護程序?qū)⒁l(fā)錯誤。用戶可以使用此選項擴展基本設(shè)備尺寸,但不允許收縮。

此值影響系統(tǒng)范圍內(nèi)的“基本”空文件系統(tǒng),該文件系統(tǒng)可能已經(jīng)被拉出的圖像初始化和繼承。通常,對此值的更改需要其他步驟才能生效:

$ sudo service docker stop

$ sudo rm -rf /var/lib/docker

$ sudo service docker start
dm.loopdatasize

此選項配置devicemapper回送,不應(yīng)在生產(chǎn)中使用。

指定為用于瘦池的“數(shù)據(jù)”設(shè)備創(chuàng)建回送文件時使用的大小。默認大小為100 G。這個文件很稀疏,所以它最初不會占用這么多空間。

$ sudo dockerd --storage-opt dm.loopdatasize=200G
dm.loopmetadatasize

此選項配置devicemapper回送,不應(yīng)在生產(chǎn)中使用。

指定為用于瘦池的“元數(shù)據(jù)”設(shè)備創(chuàng)建回送文件時使用的大小。默認大小是2G。這個文件很稀疏,所以它最初不會占用這么多空間。

$ sudo dockerd --storage-opt dm.loopmetadatasize=4G
dm.fs

指定要用于基礎(chǔ)設(shè)備的文件系統(tǒng)類型。支持的選項是“ext4”和“xfs”。默認是“xfs”

$ sudo dockerd --storage-opt dm.fs=ext4
dm.mkfsarg

指定在創(chuàng)建基本設(shè)備時要使用的額外mkfs參數(shù)。

$ sudo dockerd --storage-opt "dm.mkfsarg=-O ^has_journal"
dm.mountopt

指定安裝瘦設(shè)備時使用的額外安裝選項。

$ sudo dockerd --storage-opt dm.mountopt=nodiscard
dm.datadev

(已棄用,使用dm.thinpooldev

指定用于瘦池數(shù)據(jù)的自定義塊設(shè)備。

如果使用塊設(shè)備來存儲設(shè)備映射器,最好兩者都使用。datadevmetadatadev應(yīng)指定以完全避免使用回送設(shè)備。

$ sudo dockerd \      --storage-opt dm.datadev=/dev/sdb1 \      --storage-opt dm.metadatadev=/dev/sdc1
dm.metadatadev

(已棄用,使用dm.thinpooldev

指定用于瘦池元數(shù)據(jù)的自定義塊設(shè)備。

為了獲得最好的性能,元數(shù)據(jù)應(yīng)該位于與數(shù)據(jù)不同的紡錘體上,或者更好地放在SSD上。

如果設(shè)置了新的元數(shù)據(jù)池,則要求其有效。這可以通過對前4k進行零化以指示空元數(shù)據(jù)來實現(xiàn),如下所示:

$ dd if=/dev/zero of=$metadata_dev bs=4096 count=1
$ sudo dockerd \      --storage-opt dm.datadev=/dev/sdb1 \      --storage-opt dm.metadatadev=/dev/sdc1
dm.blocksize

指定要用于瘦池的自定義塊大小。默認的塊大小是64K。

$ sudo dockerd --storage-opt dm.blocksize=512K
dm.blkdiscard

啟用或禁用blkdiscard移除devicemapper設(shè)備時的使用。如果使用回送設(shè)備,則默認情況下啟用此功能,并且需要在移除圖像/容器時重新分組環(huán)回文件。

在回送時禁用此選項會導(dǎo)致更快的集裝箱移除時間,但將使空間使用/var/lib/docker當(dāng)容器被移除時,目錄不會返回給系統(tǒng)以供其他使用。

實例
$ sudo dockerd --storage-opt dm.blkdiscard=false
dm.override_udev_sync_check

覆蓋devicemapperudevudevudev之間的同步檢查。是Linux內(nèi)核的設(shè)備管理器。

要查看udev使用該devicemapper驅(qū)動程序的Docker守護進程的同步支持,請運行:

$ docker info[...]Udev Sync Supported: true[...]

當(dāng)udev同步支持是true,則devicemapper和的udev可以協(xié)調(diào)用于容器的設(shè)備的激活和去激活。

當(dāng)udev同步支持是false,在之間出現(xiàn)爭用條件devicemapperudev過程中創(chuàng)建和清理。競賽狀況導(dǎo)致錯誤和失敗。(有關(guān)這些故障的信息,請參閱docker#4036)

要允許docker守護進程啟動,而不管udev同步不受支持,請設(shè)置dm.override_udev_sync_check為true:

$ sudo dockerd --storage-opt dm.override_udev_sync_check=true

當(dāng)這個值是truedevicemapper繼續(xù),并簡單地警告你錯誤正在發(fā)生。

注意:理想是追求一個docker支持同步的守護進程和環(huán)境udev。有關(guān)此主題的進一步討論,請參見docker#4036。否則,請設(shè)置此標(biāo)志以將現(xiàn)有的Docker守護程序遷移到具有受支持環(huán)境的守護程序。

dm.use_deferred_removal

啟用延遲設(shè)備刪除的使用,如果libdm內(nèi)核驅(qū)動程序支持該機制。

延遲設(shè)備刪除是指當(dāng)設(shè)備被移除/停用時,如果設(shè)備處于繁忙狀態(tài),則在設(shè)備上調(diào)度延遲刪除。當(dāng)設(shè)備的最后一個用戶退出時,設(shè)備會自動離開。

例如,當(dāng)容器退出時,其相關(guān)的瘦設(shè)備將被移除。如果該設(shè)備已泄漏到其他掛載命名空間中,無法刪除,則容器退出仍然成功,此選項將導(dǎo)致系統(tǒng)調(diào)度設(shè)備以延遲刪除。它不會在試圖刪除繁忙設(shè)備的循環(huán)中等待。

$ sudo dockerd --storage-opt dm.use_deferred_removal=true
dm.use_deferred_deletion

允許對瘦池設(shè)備使用延遲設(shè)備刪除。默認情況下,瘦池設(shè)備刪除是同步的。在刪除容器之前,Docker守護進程將刪除所有相關(guān)設(shè)備。如果存儲驅(qū)動程序無法刪除設(shè)備,則容器刪除失敗,守護進程返回。

Error deleting container: Error response from daemon: Cannot destroy container

若要避免此失敗,請在守護進程上啟用延遲設(shè)備刪除和延遲設(shè)備刪除。

$ sudo dockerd \      --storage-opt dm.use_deferred_deletion=true \      --storage-opt dm.use_deferred_removal=true

啟用這兩個選項后,如果設(shè)備在驅(qū)動程序刪除容器時繁忙,則驅(qū)動程序?qū)⒃O(shè)備標(biāo)記為“已刪除”。稍后,當(dāng)設(shè)備沒有使用時,驅(qū)動程序會刪除它。

通常,默認情況下啟用此選項應(yīng)該是安全的。當(dāng)跨多個掛載命名空間無意中發(fā)生掛載點泄漏時,它將有所幫助。

dm.min_free_space

指定精簡池中的最小可用空間百分比,以便新設(shè)備創(chuàng)建成功。此檢查適用于免費數(shù)據(jù)空間以及免費元數(shù)據(jù)空間。有效值為0% -  99%。值0%禁用自由空間檢查邏輯。如果用戶未為此選項指定值,則引擎使用默認值10%。

無論何時創(chuàng)建新的精簡池設(shè)備(在docker pull容器創(chuàng)建期間或創(chuàng)建期間),引擎都會檢查最小可用空間是否可用。如果有足夠的空間不可用,則設(shè)備創(chuàng)建失敗,任何相關(guān)的docker操作都將失敗。

若要從此錯誤中恢復(fù),必須在瘦池中創(chuàng)建更多空閑空間以從錯誤中恢復(fù)。您可以通過從瘦池中刪除一些圖像和容器來創(chuàng)建空閑空間。您還可以向瘦池添加更多的存儲空間。

要向LVM(邏輯卷管理)精簡池添加更多空間,只需將更多存儲添加到卷組容器精簡池; 這應(yīng)該會自動解決任何錯誤。如果您的配置使用循環(huán)設(shè)備,則停止引擎守護進程,增大循環(huán)文件的大小并重新啟動守護進程以解決問題。

$ sudo dockerd --storage-opt dm.min_free_space=10%
dm.xfs_nospace_max_retries

指定當(dāng)?shù)讓哟鎯υO(shè)備返回ENOSPC(無空間)錯誤時,XFS應(yīng)嘗試完成IO的最大重試次數(shù)。

默認情況下,XFS會無限次地重試以完成IO,這可能會導(dǎo)致無法運行的進程。為了改變這種行為,可以將xfs_nospace_max_retries設(shè)置為0,并且XFS在獲得ENOSPC后不會重試IO,并關(guān)閉文件系統(tǒng)。

$ sudo dockerd --storage-opt dm.xfs_nospace_max_retries=0

ZFS選項

zfs.fsname

設(shè)置zfs文件系統(tǒng),docker將在其中創(chuàng)建自己的數(shù)據(jù)集。默認情況下,docker將選取docker graph(/var/lib/docker)所在的zfs文件系統(tǒng)。

$ sudo dockerd -s zfs --storage-opt zfs.fsname=zroot/docker

Btrfs選項

btrfs.min_space

指定創(chuàng)建用于容器的子容量時使用的最小大小。如果用戶在使用-storage-opt size選項創(chuàng)建或運行容器時使用btrfs的磁盤配額,則docker應(yīng)確保大小不能小于btrfs.min_space。

$ sudo dockerd -s btrfs --storage-opt btrfs.min_space=10G

Overlay 2選項

overlay2.override_kernel_check

覆蓋允許overlay2的Linux內(nèi)核版本檢查。在4.0.0中,支持指定overlay2所需的多個低級目錄。但是,可能會修補一些較舊的內(nèi)核版本,以便為OverlayFS添加多個較低目錄支持。只有在驗證內(nèi)核中存在此支持后才能使用此選項。在沒有此支持的情況下在內(nèi)核上應(yīng)用此選項會導(dǎo)致安裝失敗。

Docker運行時執(zhí)行選項

Docker daemon依賴于OCI兼容的運行(通過調(diào)用containerd后臺程序)作為其接口Linux內(nèi)核namespaces,cgroups以及SELinux。

默認情況下,Docker守護進程會自動啟動containerd。如果要控制containerd啟動,請手動啟動containerdcontainerd使用--containerd標(biāo)志將路徑傳遞到套接字。例如:

$ sudo dockerd --containerd /var/run/dev/docker-containerd.sock

運行時可以通過配置文件或使用--add-runtime命令行參數(shù)

下面是一個通過配置添加2個運行時的示例:

{"default-runtime": "runc","runtimes": {"runc": {"path": "runc"},"custom": {"path": "/usr/local/bin/my-runc-replacement","runtimeArgs": ["--debug"]}}}

這是通過命令行的相同示例:

$ sudo dockerd --add-runtime runc=runc --add-runtime custom=/usr/local/bin/my-runc-replacement

注意:不支持通過命令行定義運行時參數(shù)。

運行時的選項

您可以使用--exec-opt標(biāo)志指定的選項來配置運行時。所有標(biāo)志的選項都有native前綴。有一個native.cgroupdriver選項可用。

native.cgroupdriver選項指定容器的cgroup的管理。您只能指定cgroupfssystemd。如果指定systemd并且不可用,則系統(tǒng)出錯。如果您省略該native.cgroupdriver選項,cgroupfs則使用該選項。

此示例設(shè)置cgroupdriversystemd*

$ sudo dockerd --exec-opt native.cgroupdriver=systemd

設(shè)置此選項適用于守護進程啟動的所有容器。

Windows容器也--exec-opt用于特殊用途。Docker用戶可以指定默認的容器隔離技術(shù),例如:

> dockerd --exec-opt isolation=hyperv

hyperv在Windows上制作默認的隔離技術(shù)。如果在守護進程啟動時未指定隔離值,則在Windows客戶端上,默認值為hyperv,并且在Windows服務(wù)器上,默認值為process

Daemon DNS選項

若要為所有Docker容器設(shè)置DNS服務(wù)器,請使用:

$ sudo dockerd --dns 8.8.8.8

若要為所有Docker容器設(shè)置DNS搜索域,請使用:

$ sudo dockerd --dns-search example.com

允許不可分布工件的推送

某些圖像(例如Windows基本圖像)包含分布受許可限制的工件。當(dāng)這些圖像被推送到注冊表時,不包括受限的工件。

要覆蓋特定注冊表的此行為,請使用--allow-nondistributable-artifacts以下形式之一的選項:

  • --allow-nondistributable-artifacts myregistry:5000告訴Docker守護進程將不可分發(fā)的工件推到MyRegistry:5000。

  • --allow-nondistributable-artifacts 10.1.0.0/16告訴Docker守護進程將不可分發(fā)的工件推送到其解析IP地址位于CIDR語法描述的子網(wǎng)中的所有注冊中心。

此選項可多次使用。

此選項在將包含不可分發(fā)工件的圖像推送到空隙網(wǎng)絡(luò)上的注冊表時非常有用,這樣網(wǎng)絡(luò)上的主機就可以在不連接到另一臺服務(wù)器的情況下提取圖像。

警告:不可分發(fā)的工件通常對如何和在何處分發(fā)和共享它們有限制。只使用此特性將工件推到私有注冊中心,并確保您遵守任何涉及重新分發(fā)不可分發(fā)工件的術(shù)語。

不安全注冊

Docker認為私人注冊安全或不安全。在本節(jié)的其余部分中,注冊表用于私人注冊表,并且myregistry:5000私人注冊表的占位符示例。

安全注冊表使用TLS,并將其CA證書的副本放在Docker主機上/etc/docker/certs.d/myregistry:5000/ca.crt。一個不安全的注冊表要么不使用TLS(即,使用純文本HTTP進行監(jiān)聽),要么使用帶有Docker守護程序未知的CA證書的TLS。后者可能發(fā)生在未找到證書的情況下/etc/docker/certs.d/myregistry:5000/,或證書驗證失敗(即錯誤的CA)。

默認情況下,Docker假設(shè)所有,但本地(請參閱下面的本地注冊表),注冊表是安全的。如果Docker假定注冊表是安全的,則不可能與不安全的注冊表通信。為了與不安全的注冊表進行通信,Docker守護進程需要--insecure-registry以下兩種形式之一:

  • --insecure-registry myregistry:5000告訴Docker守護進程,MyRegistry:5000應(yīng)該被認為是不安全的。

  • --insecure-registry 10.1.0.0/16告訴Docker守護進程,其域解析為IP地址的所有注冊中心都屬于CIDR語法描述的子網(wǎng)的一部分,應(yīng)該被認為是不安全的。

此標(biāo)志可多次使用,以允許將多個注冊中心標(biāo)記為不安全。

如果不安全的注冊表沒有被標(biāo)記為不安全的,docker pull,docker push,和docker search將導(dǎo)致一個錯誤消息,提示用戶或者安全或通過--insecure-registry如上述那樣標(biāo)志提供給多克爾守護進程。

本地注冊中心的IP地址在127.0.0.0/8范圍內(nèi),從Docker 1.3.2開始自動標(biāo)記為不安全。不建議依賴這一點,因為它可能在未來發(fā)生變化。

使能--insecure-registry,即允許不加密和/或不可信的通信,在運行本地注冊表時可能很有用。但是,由于它的使用會產(chǎn)生安全漏洞,因此只應(yīng)該為測試目的啟用它。為了提高安全性,用戶應(yīng)該將他們的CA添加到系統(tǒng)的可信CA列表中,而不是啟用--insecure-registry...

遺留注冊中心

針對僅支持傳統(tǒng)v1協(xié)議的注冊管理機構(gòu)的操作默認處于禁用狀態(tài)。具體來說,守護進程不會嘗試push,pulllogin以V1登記。此例外情況search仍然可以在v1注冊表上執(zhí)行。

如果您需要與尚未遷移到v2協(xié)議的注冊表交互,請?zhí)砑?code>"disable-legacy-registry":false到守護程序配置文件或設(shè)置--disable-legacy-registry=false標(biāo)志。

Docker v17.12不再支持交互v1注冊中心,disable-legacy-registry配置選項將被刪除。

運行HTTPS后面的Docker守護進程[醫(yī)]代理

在使用HTTPS代理,碼頭集線器證書將被代理的證書所取代。這些證書需要添加到Docker主機的配置中:

  • 安裝ca-certificates分發(fā)包

  • 向您的網(wǎng)絡(luò)管理員詢問代理的CA證書,并將它們附加到/etc/pki/tls/certs/ca-bundle.crt

  • 然后用HTTPS_PROXY=http://username:password@proxy:port/ dockerd...username:password@是可選的,并且只有當(dāng)您的代理被設(shè)置為需要身份驗證時才需要。

這只會將代理和身份驗證添加到Docker守護進程的請求-docker build和正在運行的容器需要額外的配置才能使用代理。

違約ulimit設(shè)置

--default-ulimit允許您設(shè)置ulimit用于所有容器的默認選項。它采用相同的選項--ulimit進行docker run。如果未設(shè)置這些默認值ulimit,則將docker run從Docker守護程序繼承設(shè)置(如果未設(shè)置)。--ulimit傳遞給任何選項docker run將覆蓋這些默認值。

請小心使用ulimit標(biāo)志設(shè)置nproc,因為nproc是由Linux設(shè)計的,用于設(shè)置用戶可用的最大進程數(shù),而不是容器。 詳情請查看運行參考。

節(jié)點發(fā)現(xiàn)

--cluster-advertise選項指定此特定守護程序?qū)嵗趯⒆陨韽V告到群集時應(yīng)使用的組合host:portinterface:port組合。守護進程通過此值由遠程主機訪問。如果您指定了一個接口,請確保它包含實際Docker主機的IP地址。對于通過創(chuàng)建的引擎安裝docker-machine,界面通常是eth1。

守護進程使用libkv在集群內(nèi)通告節(jié)點。一些鍵值后端支持相互TLS。配置守護程序使用的客戶端TLS設(shè)置可以使用--cluster-store-opt標(biāo)志進行配置,指定PEM編碼文件的路徑。例如:

$ sudo dockerd \    --cluster-advertise 192.168.1.2:2376 \    --cluster-store etcd://192.168.1.2:2379 \    --cluster-store-opt kv.cacertfile=/path/to/ca.pem \    --cluster-store-opt kv.certfile=/path/to/cert.pem \    --cluster-store-opt kv.keyfile=/path/to/key.pem

當(dāng)前支持的群集存儲選項是:

選項

描述

discovery.heartbeat

以秒為單位指定守護進程使用的心跳定時器作為保活機制,以確保發(fā)現(xiàn)模塊將節(jié)點視為在群集中處于活動狀態(tài)。如果未配置,則默認值為20秒。

discovery.ttl

如果在配置的ttl值內(nèi)未收到有效的心跳,則指定發(fā)現(xiàn)模塊用于超時節(jié)點的TTL(生存時間)(以秒為單位)。如果未配置,則默認值為60秒。

kv.cacertfile

指定包含PEM編碼CA證書的本地文件的路徑。

kv.certfile

指定帶有PEM編碼證書的本地文件的路徑。該證書用作與密鑰/值存儲進行通信的客戶證書。

kv.keyfile

指定帶有PEM編碼私鑰的本地文件的路徑。該私鑰用作與密鑰/值存儲進行通信的客戶端密鑰。

kv.path

指定鍵/值存儲區(qū)中的路徑。如果未配置,則默認值為'docker / nodes'。

訪問授權(quán)

Docker的訪問授權(quán)可以通過您的組織可以購買或構(gòu)建自己的授權(quán)插件進行擴展。daemon使用該--authorization-plugin=PLUGIN_ID選項啟動Docker時,您可以安裝一個或多個授權(quán)插件。

$ sudo dockerd --authorization-plugin=plugin1 --authorization-plugin=plugin2,...

PLUGIN_ID值是插件的名稱或其規(guī)范文件的路徑。插件的實現(xiàn)確定您是否可以指定名稱或路徑。請咨詢您的Docker管理員以獲取有關(guān)可用插件的信息。

一旦安裝了插件,daemon通過命令行或Docker的Engine API 發(fā)出的請求將被插件允許或拒絕。如果您安裝了多個插件,則每個插件都必須允許完成請求。

有關(guān)如何創(chuàng)建授權(quán)插件的信息,請參閱本文檔的Docker擴展部分中的授權(quán)插件部分。

Daemon用戶命名空間選項

Linux內(nèi)核用戶名稱空間支持通過啟用進程并因此使容器具有唯一范圍的用戶和組ID來提供額外的安全性,這些用戶和組ID是在主機系統(tǒng)使用的傳統(tǒng)用戶和組范圍之外??赡茏钪匾陌踩倪M是,默認情況下,作為root用戶運行的容器進程在容器內(nèi)部具有預(yù)期的管理特權(quán)(有一些限制),但將有效地映射到uid主機上的非特權(quán)。

有關(guān)如何使用此功能以及限制的詳細信息,請參閱使用用戶命名空間隔離容器。

雜項選擇

IP偽裝使用地址轉(zhuǎn)換來允許沒有公共IP的容器與Internet上的其他計算機通話。這可能會干擾某些網(wǎng)絡(luò)拓撲,--ip-masq=false可能會被禁用。

Docker支持Docker數(shù)據(jù)目錄(/var/lib/docker)和for的軟鏈接/var/lib/docker/tmp。該DOCKER_TMPDIR和數(shù)據(jù)目錄,可以這樣設(shè)置:

DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/dockerd -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1# orexport DOCKER_TMPDIR=/mnt/disk2/tmp/usr/local/bin/dockerd -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1

默認cgroup父級

--cgroup-parent選項允許您設(shè)置用于容器的默認cgroup父項。如果未設(shè)置此選項,則默認/docker為fs cgroup驅(qū)動程序和system.slicesystemd cgroup驅(qū)動程序。

如果cgroup具有前導(dǎo)正斜杠(/),則cgroup將在根cgroup下創(chuàng)建,否則將在守護進程cgroup下創(chuàng)建cgroup。

假設(shè)守護進程在cgroup中運行daemoncgroup,--cgroup-parent=/foobar創(chuàng)建一個cgroup /sys/fs/cgroup/memory/foobar,而使用--cgroup-parent=foobar創(chuàng)建cgroup/sys/fs/cgroup/memory/daemoncgroup/foobar

systemd cgroup驅(qū)動程序具有不同的規(guī)則--cgroup-parent。Systemd表示逐層分層,并且切片的名稱對樹中的位置進行編碼。所以--cgroup-parent對于systemd cgroups應(yīng)該是一個片名。一個名稱可以由一個破折號分隔的一系列名稱組成,它描述了從根片段開始切片的路徑。例如,--cgroup-parent=user-a-b.slice表示容器的內(nèi)存cgroup被創(chuàng)建/sys/fs/cgroup/memory/user.slice/user-a.slice/user-a-b.slice/docker-<id>.scope。

這個設(shè)置也可以每個集裝箱設(shè)置,使用--cgroup-parent的選項docker createdocker run,并優(yōu)先于--cgroup-parent對守護進程選項。

Daemon metrics

--metrics-addr選項采用tcp地址來為度量標(biāo)準(zhǔn)API提供服務(wù)。該功能仍然是實驗性的,因此,守護程序必須以實驗?zāi)J竭\行才能使用此功能。

要在localhost:1337上提供指標(biāo)API,您需要指定--metrics-addr 127.0.0.1:1337允許您在API上發(fā)出請求127.0.0.1:1337/metrics以接收prometheus格式的指標(biāo)。

如果您運行的是Prometheus服務(wù)器,則可以將此地址添加到您的scrape配置文件中,以便prometheus在Docker上收集指標(biāo)。有關(guān)prometheus的更多信息,您可以在這里查看網(wǎng)站。

scrape_configs:  - job_name: 'docker'
    static_configs:      - targets: ['127.0.0.1:1337']

請注意,此特性仍被標(biāo)記為實驗性功能,因為度量和度量名稱可能會更改,而此功能仍處于試驗階段。請?zhí)峁┓答佉庖?,您希望看到收集的API。

守護進程配置文件

--config-file選項允許您為JMS格式的守護程序設(shè)置任何配置選項。此文件使用相同的標(biāo)記名稱作為關(guān)鍵字,除了標(biāo)志,使幾個條目,它使用標(biāo)志名的復(fù)數(shù),例如,labels對于label標(biāo)志。

配置文件中設(shè)置的選項不能與通過標(biāo)志設(shè)置的選項沖突。如果一個選項在文件和標(biāo)志之間重復(fù),docker守護進程無法啟動,無論它們的值如何。我們這樣做是為了避免默默地忽略配置重新加載中引入的更改。例如,如果在配置文件中設(shè)置了守護進程標(biāo)簽,并且還通過--label標(biāo)志設(shè)置了守護進程標(biāo)簽,則守護進程無法啟動。當(dāng)守護程序啟動時,文件中不存在的選項將被忽略。

在Linux上

Linux上配置文件的默認位置是/etc/docker/daemon.json。該--config-file標(biāo)志可用于指定非默認位置。

這是Linux上允許的配置選項的完整示例:

{"authorization-plugins": [],"data-root": "","dns": [],"dns-opts": [],"dns-search": [],"exec-opts": [],"exec-root": "","experimental": false,"storage-driver": "","storage-opts": [],"labels": [],"live-restore": true,"log-driver": "","log-opts": {},"mtu": 0,"pidfile": "","cluster-store": "","cluster-store-opts": {},"cluster-advertise": "","max-concurrent-downloads": 3,"max-concurrent-uploads": 5,"default-shm-size": "64M","shutdown-timeout": 15,"debug": true,"hosts": [],"log-level": "","tls": true,"tlsverify": true,"tlscacert": "","tlscert": "","tlskey": "","swarm-default-advertise-addr": "","api-cors-header": "","selinux-enabled": false,"userns-remap": "","group": "","cgroup-parent": "","default-ulimits": {},"init": false,"init-path": "/usr/libexec/docker-init","ipv6": false,"iptables": false,"ip-forward": false,"ip-masq": false,"userland-proxy": false,"userland-proxy-path": "/usr/libexec/docker-proxy","ip": "0.0.0.0","bridge": "","bip": "","fixed-cidr": "","fixed-cidr-v6": "","default-gateway": "","default-gateway-v6": "","icc": false,"raw-logs": false,"allow-nondistributable-artifacts": [],"registry-mirrors": [],"seccomp-profile": "","insecure-registries": [],"disable-legacy-registry": false,"no-new-privileges": false,"default-runtime": "runc","oom-score-adjust": -500,"runtimes": {"runc": {"path": "runc"},"custom": {"path": "/usr/local/bin/my-runc-replacement","runtimeArgs": ["--debug"]}}}

注意:您不能將daemon.json已在守護進程啟動時設(shè)置的選項設(shè)置為標(biāo)志。在systemd用于啟動Docker守護進程的系統(tǒng)上,-H已經(jīng)設(shè)置好了,因此您不能使用該hostsdaemon.json來添加監(jiān)聽地址。有關(guān)如何使用systemd插件文件完成此任務(wù),請參閱https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options。

在Windows上

Windows上配置文件的默認位置是%programdata%\docker\config\daemon.json。該--config-file標(biāo)志可用于指定非默認位置。

這是Windows上允許的配置選項的完整示例:

{    "authorization-plugins": [],    "data-root": "",    "dns": [],    "dns-opts": [],    "dns-search": [],    "exec-opts": [],    "experimental": false,    "storage-driver": "",    "storage-opts": [],    "labels": [],    "log-driver": "",    "mtu": 0,    "pidfile": "",    "cluster-store": "",    "cluster-advertise": "",    "max-concurrent-downloads": 3,    "max-concurrent-uploads": 5,    "shutdown-timeout": 15,    "debug": true,    "hosts": [],    "log-level": "",    "tlsverify": true,    "tlscacert": "",    "tlscert": "",    "tlskey": "",    "swarm-default-advertise-addr": "",    "group": "",    "default-ulimits": {},    "bridge": "",    "fixed-cidr": "",    "raw-logs": false,    "allow-nondistributable-artifacts": [],    "registry-mirrors": [],    "insecure-registries": [],    "disable-legacy-registry": false}

配置再加載行為

守護進程運行時可以重新配置某些選項,而無需重新啟動進程。我們使用SIGHUPLinux中的信號重新加載,并在Windows中使用密鑰進行全局事件Global\docker-daemon-config-$PID。這些選項可以在配置文件中修改,但仍然會檢查與提供的標(biāo)志的沖突。如果存在沖突,守護進程無法重新配置自身,但它不會停止執(zhí)行。

可以重新配置的當(dāng)前支持的選項列表如下:

  • debug

  • cluster-store它用新地址重新加載發(fā)現(xiàn)商店。

  • cluster-store-opts它使用新的選項重新加載發(fā)現(xiàn)存儲。

  • cluster-advertise*它修改重新加載后公布的地址。

  • labels它用一組新的標(biāo)簽替換守護進程標(biāo)簽。

  • live-restore*使在守護進程停機期間保持容器活動...

  • max-concurrent-downloads:它更新每次拉的最大并發(fā)下載量。

  • max-concurrent-uploads:它更新每次推送的最大并發(fā)上傳量。

  • default-runtime::如果在容器創(chuàng)建時未指定,則更新要使用的運行庫。它默認為“默認”,這是隨正式的??堪綆У倪\行時。

  • runtimes*它更新可用于運行容器的可供OCI運行時的列表。

  • authorization-plugin指定要使用的授權(quán)插件。

  • allow-nondistributable-artifacts::用一組新的注冊表替換守護進程將不可分發(fā)的工件推送到的注冊表集。

  • insecure-registries它用一組新的不安全注冊表替換守護進程不安全的注冊中心。如果守護進程配置中的某些現(xiàn)有不安全注冊中心不在新重新加載的不安全注冊表中,這些現(xiàn)有注冊表將從守護進程的配置中刪除。

  • registry-mirrors它用一組新的注冊表鏡像替換守護進程注冊表鏡像。如果守護進程配置中的某些現(xiàn)有注冊表鏡像不在新重新加載的注冊表鏡像中,這些現(xiàn)有注冊表鏡像將從守護進程的配置中刪除。

更新和重新加載群集配置(例如--cluster-store,--cluster-advertise并且--cluster-store-opts僅在以前未配置這些配置時才會生效。如果--cluster-store已經(jīng)在標(biāo)志中提供而cluster-advertise不是,cluster-advertise可以在配置文件中添加,而不需要伴隨--cluster-store。如果配置重新加載檢測到以前配置的群集配置中的更改,則會記錄警告消息。

運行多個守護進程

注:在單個主機上運行多個守護進程被視為“實驗性”。用戶應(yīng)該意識到尚未解決的問題。在某些情況下,此解決方案可能無法正常工作。目前正在制定解決辦法,并將在不久的將來交付。

本節(jié)介紹如何在單個主機上運行多個Docker守護進程。要運行多個守護進程,您必須配置每個守護進程,以便它不會與同一主機上的其他守護進程發(fā)生沖突。您可以通過將這些選項設(shè)置為標(biāo)志或使用守護程序配置文件來設(shè)置這些選項。

必須為每個守護進程配置以下守護進程選項:

-b, --bridge=                          
Attach containers to a network bridge--exec-root=/var/run/docker            
Root of the Docker execdriver--data-root=/var/lib/docker            
Root of persisted Docker data-p, --pidfile=/var/run/docker.pid      
Path to use for daemon PID file-H, --host=[]                          
Daemon socket(s) to connect to--iptables=true                        
Enable addition of iptables rules--config-file=/etc/docker/daemon.json  Daemon configuration file--tlscacert="~/.docker/ca.pem"         
Trust certs signed only by this CA--tlscert="~/.docker/cert.pem"         
Path to TLS certificate file--tlskey="~/.docker/key.pem"           
Path to TLS key file

當(dāng)守護進程為這些標(biāo)志使用不同的值時,您可以在同一主機上運行它們而不會有任何問題。正確理解這些選項的含義并正確使用它們是非常重要的。

  • --b, --bridge=標(biāo)志被設(shè)置docker0為默認網(wǎng)橋。它在安裝Docker時自動創(chuàng)建。如果您未使用默認設(shè)置,則必須手動創(chuàng)建和配置網(wǎng)橋,或?qū)⑵湓O(shè)置為“無”:--bridge=none

  • --exec-root存儲容器狀態(tài)的路徑。默認值是/var/run/docker。在這里指定運行守護進程的路徑。

  • --data-root是存儲持久數(shù)據(jù)(如圖像,卷和群集狀態(tài))的路徑。默認值是/var/lib/docker。為避免與其他守護進程發(fā)生沖突,請為每個守護進程單獨設(shè)置此參數(shù)。

  • -p, --pidfile=/var/run/docker.pid是守護進程的進程ID存儲的路徑。在此指定您的pid文件的路徑。

  • --host=[]指定Docker守護進程將偵聽客戶端連接的位置。如果未指定,則默認為/var/run/docker.sock

  • --iptables=false阻止Docker守護進程添加iptables規(guī)則。如果多個守護進程管理iptables規(guī)則,他們可能會覆蓋另一個守護進程設(shè)置的規(guī)則。請注意,禁用此選項需要您手動添加iptables規(guī)則以顯示容器端口。如果您阻止Docker添加iptables規(guī)則,則即使您設(shè)置--ip-masq為,Docker也不會添加IP偽裝規(guī)則true。如果沒有IP偽裝規(guī)則,在使用非默認網(wǎng)橋的網(wǎng)絡(luò)時,Docker容器將無法連接到外部主機或互聯(lián)網(wǎng)。

  • --config-file=/etc/docker/daemon.json存儲配置文件的路徑。您可以使用它而不是守護進程標(biāo)志。為每個守護進程指定路徑。

  • --tls*Docker守護進程支持--tlsverify強制加密和認證遠程連接的模式。這些--tls*選項可以為特定的守護程序使用特定的證書。

沒有網(wǎng)絡(luò)的Docker守護程序的單獨“引導(dǎo)”實例的示例腳本:

$ sudo dockerd \        
-H unix:///var/run/docker-bootstrap.sock \        
-p /var/run/docker-bootstrap.pid \        
--iptables=false \        
--ip-masq=false \        
--bridge=none \        
--data-root=/var/lib/docker-bootstrap \        
--exec-root=/var/run/docker-bootstrap
Previous article: Next article: