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

?? ??? ??
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
??

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

帶有[]的選項(xiàng)可以指定多次。

描述

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

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

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

實(shí)例

守護(hù)進(jìn)程套接字選項(xiàng)

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

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

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

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

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

可以將Docker守護(hù)進(jìn)程配置為同時(shí)使用多個(gè)套接字偵聽(tīng)多個(gè)套接字。-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)境變量來(lái)設(shè)置-H客戶端的標(biāo)志。使用一個(gè)下面的命令:

$ 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_PROXYHTTPS_PROXY以及NO_PROXY環(huán)境變量(或小寫(xiě)的版本上)。HTTPS_PROXY優(yōu)先于HTTP_PROXY。

將Docker綁定到另一個(gè)主機(jī)/端口或Unix套接字

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

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

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

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

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

例如:

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

  • tcp://host:2375->主機(jī)上的TCP連接:2375

  • tcp://host:2375/path->主機(jī)上的tcp連接:2375和所有請(qǐng)求的前置路徑

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

-H為空時(shí),將默認(rèn)為與未-H傳入時(shí)相同的值。

-H還接受TCP綁定的簡(jiǎn)短形式:host:host:port:port

在守護(hù)進(jìn)程模式下運(yùn)行Docker:

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

下載ubuntu圖片:

$ docker -H :5555 pull ubuntu

您可以使用多個(gè)-H,例如,如果您希望同時(shí)偵聽(tīng)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

守護(hù)進(jìn)程存儲(chǔ)驅(qū)動(dòng)程序

Docker daemon 進(jìn)程有幾種不同的圖像層存儲(chǔ)驅(qū)動(dòng)程序支持:aufsdevicemapper,btrfs,zfs,overlayoverlay2。

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

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

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

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

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

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

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

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

每個(gè)存儲(chǔ)驅(qū)動(dòng)程序的選項(xiàng)

特定的存儲(chǔ)驅(qū)動(dòng)程序可以使用--storage-opt標(biāo)志指定的選項(xiàng)進(jìn)行配置。選項(xiàng)為devicemapper前綴dm,zfs開(kāi)始zfs選項(xiàng)和btrfs開(kāi)始選項(xiàng)btrfs。

Devicemapper選項(xiàng)

這是Linux上devicemapper配置文件的一個(gè)示例:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在守護(hù)進(jìn)程重新啟動(dòng)時(shí)可以增加基本設(shè)備的大小,這將允許所有將來(lái)的映像和容器(基于這些新映像)成為新的基本設(shè)備大小。

實(shí)例
$ sudo dockerd --storage-opt dm.basesize=50G

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

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

$ sudo service docker stop

$ sudo rm -rf /var/lib/docker

$ sudo service docker start
dm.loopdatasize

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

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

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

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

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

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

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

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

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

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

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

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

(已棄用,使用dm.thinpooldev

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

如果使用塊設(shè)備來(lái)存儲(chǔ)設(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ù)池,則要求其有效。這可以通過(guò)對(duì)前4k進(jìn)行零化以指示空元數(shù)據(jù)來(lái)實(shí)現(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

指定要用于瘦池的自定義塊大小。默認(rèn)的塊大小是64K。

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

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

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

實(shí)例
$ sudo dockerd --storage-opt dm.blkdiscard=false
dm.override_udev_sync_check

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

要查看udev使用該devicemapper驅(qū)動(dòng)程序的Docker守護(hù)進(jìn)程的同步支持,請(qǐng)運(yùn)行:

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

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

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

要允許docker守護(hù)進(jìn)程啟動(dòng),而不管udev同步不受支持,請(qǐng)?jiān)O(shè)置dm.override_udev_sync_check為true:

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

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

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

dm.use_deferred_removal

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

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

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

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

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

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

若要避免此失敗,請(qǐng)?jiān)谑刈o(hù)進(jìn)程上啟用延遲設(shè)備刪除和延遲設(shè)備刪除。

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

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

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

dm.min_free_space

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

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

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

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

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

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

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

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

ZFS選項(xiàng)

zfs.fsname

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

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

Btrfs選項(xiàng)

btrfs.min_space

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

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

Overlay 2選項(xiàng)

overlay2.override_kernel_check

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

Docker運(yùn)行時(shí)執(zhí)行選項(xiàng)

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

默認(rèn)情況下,Docker守護(hù)進(jìn)程會(huì)自動(dòng)啟動(dòng)containerd。如果要控制containerd啟動(dòng),請(qǐng)手動(dòng)啟動(dòng)containerdcontainerd使用--containerd標(biāo)志將路徑傳遞到套接字。例如:

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

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

下面是一個(gè)通過(guò)配置添加2個(gè)運(yùn)行時(shí)的示例:

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

這是通過(guò)命令行的相同示例:

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

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

運(yùn)行時(shí)的選項(xiàng)

您可以使用--exec-opt標(biāo)志指定的選項(xiàng)來(lái)配置運(yùn)行時(shí)。所有標(biāo)志的選項(xiàng)都有native前綴。有一個(gè)native.cgroupdriver選項(xiàng)可用。

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

此示例設(shè)置cgroupdriversystemd*

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

設(shè)置此選項(xiàng)適用于守護(hù)進(jìn)程啟動(dòng)的所有容器。

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

> dockerd --exec-opt isolation=hyperv

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

Daemon DNS選項(xiàng)

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

$ sudo dockerd --dns 8.8.8.8

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

$ sudo dockerd --dns-search example.com

允許不可分布工件的推送

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

要覆蓋特定注冊(cè)表的此行為,請(qǐng)使用--allow-nondistributable-artifacts以下形式之一的選項(xiàng):

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

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

此選項(xiàng)可多次使用。

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

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

不安全注冊(cè)

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

安全注冊(cè)表使用TLS,并將其CA證書(shū)的副本放在Docker主機(jī)上/etc/docker/certs.d/myregistry:5000/ca.crt。一個(gè)不安全的注冊(cè)表要么不使用TLS(即,使用純文本HTTP進(jìn)行監(jiān)聽(tīng)),要么使用帶有Docker守護(hù)程序未知的CA證書(shū)的TLS。后者可能發(fā)生在未找到證書(shū)的情況下/etc/docker/certs.d/myregistry:5000/,或證書(shū)驗(yàn)證失?。村e(cuò)誤的CA)。

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

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

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

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

如果不安全的注冊(cè)表沒(méi)有被標(biāo)記為不安全的,docker pulldocker push,和docker search將導(dǎo)致一個(gè)錯(cuò)誤消息,提示用戶或者安全或通過(guò)--insecure-registry如上述那樣標(biāo)志提供給多克爾守護(hù)進(jìn)程。

本地注冊(cè)中心的IP地址在127.0.0.0/8范圍內(nèi),從Docker 1.3.2開(kāi)始自動(dòng)標(biāo)記為不安全。不建議依賴這一點(diǎn),因?yàn)樗赡茉谖磥?lái)發(fā)生變化。

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

遺留注冊(cè)中心

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

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

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

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

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

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

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

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

這只會(huì)將代理和身份驗(yàn)證添加到Docker守護(hù)進(jìn)程的請(qǐng)求-docker build和正在運(yùn)行的容器需要額外的配置才能使用代理。

違約ulimit設(shè)置

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

請(qǐng)小心使用ulimit標(biāo)志設(shè)置nproc,因?yàn)閚proc是由Linux設(shè)計(jì)的,用于設(shè)置用戶可用的最大進(jìn)程數(shù),而不是容器。 詳情請(qǐng)查看運(yùn)行參考。

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

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

守護(hù)進(jìn)程使用libkv在集群內(nèi)通告節(jié)點(diǎn)。一些鍵值后端支持相互TLS。配置守護(hù)程序使用的客戶端TLS設(shè)置可以使用--cluster-store-opt標(biāo)志進(jìn)行配置,指定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)前支持的群集存儲(chǔ)選項(xiàng)是:

選項(xiàng)

描述

discovery.heartbeat

以秒為單位指定守護(hù)進(jìn)程使用的心跳定時(shí)器作為?;顧C(jī)制,以確保發(fā)現(xiàn)模塊將節(jié)點(diǎn)視為在群集中處于活動(dòng)狀態(tài)。如果未配置,則默認(rèn)值為20秒。

discovery.ttl

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

kv.cacertfile

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

kv.certfile

指定帶有PEM編碼證書(shū)的本地文件的路徑。該證書(shū)用作與密鑰/值存儲(chǔ)進(jìn)行通信的客戶證書(shū)。

kv.keyfile

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

kv.path

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

訪問(wèn)授權(quán)

Docker的訪問(wèn)授權(quán)可以通過(guò)您的組織可以購(gòu)買(mǎi)或構(gòu)建自己的授權(quán)插件進(jìn)行擴(kuò)展。daemon使用該--authorization-plugin=PLUGIN_ID選項(xiàng)啟動(dòng)Docker時(shí),您可以安裝一個(gè)或多個(gè)授權(quán)插件。

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

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

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

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

Daemon用戶命名空間選項(xiàng)

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

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

雜項(xiàng)選擇

IP偽裝使用地址轉(zhuǎn)換來(lái)允許沒(méi)有公共IP的容器與Internet上的其他計(jì)算機(jī)通話。這可能會(huì)干擾某些網(wǎng)絡(luò)拓?fù)洌?code>--ip-masq=false可能會(huì)被禁用。

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

默認(rèn)cgroup父級(jí)

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

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

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

systemd cgroup驅(qū)動(dòng)程序具有不同的規(guī)則--cgroup-parent。Systemd表示逐層分層,并且切片的名稱對(duì)樹(shù)中的位置進(jìn)行編碼。所以--cgroup-parent對(duì)于systemd cgroups應(yīng)該是一個(gè)片名。一個(gè)名稱可以由一個(gè)破折號(hào)分隔的一系列名稱組成,它描述了從根片段開(kāi)始切片的路徑。例如,--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

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

Daemon metrics

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

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

如果您運(yùn)行的是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']

請(qǐng)注意,此特性仍被標(biāo)記為實(shí)驗(yàn)性功能,因?yàn)槎攘亢投攘棵Q可能會(huì)更改,而此功能仍處于試驗(yàn)階段。請(qǐng)?zhí)峁┓答佉庖?jiàn),您希望看到收集的API。

守護(hù)進(jìn)程配置文件

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

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

在Linux上

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

這是Linux上允許的配置選項(xiàng)的完整示例:

{"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已在守護(hù)進(jìn)程啟動(dòng)時(shí)設(shè)置的選項(xiàng)設(shè)置為標(biāo)志。在systemd用于啟動(dòng)Docker守護(hù)進(jìn)程的系統(tǒng)上,-H已經(jīng)設(shè)置好了,因此您不能使用該hostsdaemon.json來(lái)添加監(jiān)聽(tīng)地址。有關(guān)如何使用systemd插件文件完成此任務(wù),請(qǐng)參閱https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options。

在Windows上

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

這是Windows上允許的配置選項(xiàng)的完整示例:

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

配置再加載行為

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

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

  • debug

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

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

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

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

  • live-restore*使在守護(hù)進(jìn)程停機(jī)期間保持容器活動(dòng)...

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

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

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

  • runtimes*它更新可用于運(yùn)行容器的可供OCI運(yùn)行時(shí)的列表。

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

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

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

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

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

運(yùn)行多個(gè)守護(hù)進(jìn)程

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

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

必須為每個(gè)守護(hù)進(jìn)程配置以下守護(hù)進(jìn)程選項(xiàng):

-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)守護(hù)進(jìn)程為這些標(biāo)志使用不同的值時(shí),您可以在同一主機(jī)上運(yùn)行它們而不會(huì)有任何問(wèn)題。正確理解這些選項(xiàng)的含義并正確使用它們是非常重要的。

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

  • --exec-root存儲(chǔ)容器狀態(tài)的路徑。默認(rèn)值是/var/run/docker。在這里指定運(yùn)行守護(hù)進(jìn)程的路徑。

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

  • -p, --pidfile=/var/run/docker.pid是守護(hù)進(jìn)程的進(jìn)程ID存儲(chǔ)的路徑。在此指定您的pid文件的路徑。

  • --host=[]指定Docker守護(hù)進(jìn)程將偵聽(tīng)客戶端連接的位置。如果未指定,則默認(rèn)為/var/run/docker.sock。

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

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

  • --tls*Docker守護(hù)進(jìn)程支持--tlsverify強(qiáng)制加密和認(rèn)證遠(yuǎn)程連接的模式。這些--tls*選項(xiàng)可以為特定的守護(hù)程序使用特定的證書(shū)。

沒(méi)有網(wǎng)絡(luò)的Docker守護(hù)程序的單獨(dú)“引導(dǎo)”實(shí)例的示例腳本:

$ 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
?? ??: ?? ??: