亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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

描述

從Dockerfile生成圖像

使用

docker build [OPTIONS] PATH | URL | -

備選方案

名字,簡寫

默認

描述

--add-host


添加自定義的主機到IP映射(主機:IP)

--build-arg


設置構(gòu)建時間變量

--cache-from


要考慮作為緩存源的圖像

--cgroup- parent


容器的可選父cgroup

--compress

false

使用gzip壓縮構(gòu)建上下文

--cpu-period

0

限制CPU CFS(完全公平調(diào)度程序)期限

- --cpu-quota

0

限制CPU CFS(完全公平調(diào)度程序)配額

--cpu-shares,-c

0

CPU份額(相對重量)

--cpuset-CPU


允許執(zhí)行的CPU(0-3,0,1)

--cpuset-MEMS


允許執(zhí)行的MEM(0-3,0,1)

--disable-content-trust

true

跳過圖像驗證

--file,-f


Dockerfile的名稱(默認為'PATH / Dockerfile')

--force-RM

false

始終刪除中間容器

--iidfile


將圖像ID寫入文件

--isolation


容器隔離技術

--label


設置圖像的元數(shù)據(jù)

--memory, -m

0

內(nèi)存限制

--memory-swap

0

交換限制等于內(nèi)存加交換:'-1'以啟用無限交換

--network

默認

在構(gòu)建期間為RUN指令設置聯(lián)網(wǎng)模式

--no-cache

false

構(gòu)建圖像時不要使用緩存

--pull

false

始終嘗試拉取圖像的較新版本

--quiet,-q

false

取消構(gòu)建輸出并在成功時打印圖像ID

- R M

真正

成功構(gòu)建后移除中間容器

--security-OPT


安全選項

--shm-size

0

/ dev / shm的大小

--squash

false

將新建的圖層壓縮到單個新圖層中

--tag, -t


以'名稱:標記'格式命名和可選的標記

--target


設置要構(gòu)建的目標構(gòu)建階段。

--ulimit


Ulimit選項

描述

將本地標準輸入,輸出和錯誤流附加到正在運行的容器

使用

docker attach [OPTIONS] CONTAINER

備選方案

名稱,縮寫

默認

描述

--detach-keys


重寫用于分離容器的密鑰序列

--no-stdin

false

不附加 STDIN

--sig-proxy

true

代理所有接收到的信號到過程中

父命令

命令

描述

docker

泊塢窗 CLI 的基本命令。

擴展描述

用于docker attach使用容器的ID或名稱將終端的標準輸入,輸出和錯誤(或三者的任意組合)附加到正在運行的容器。這允許您查看其正在進行的輸出或以交互方式控制它,就好像命令直接在您的終端中運行一樣。

注:attach命令將顯示ENTRYPOINT/CMD過程。這可能看起來像是掛起附加命令,而實際上,進程可能根本沒有與終端進行交互。

您可以同時從Docker主機上的不同會話多次附加到同一包含的進程。

要停止容器,請使用CTRL-c。該密鑰序列發(fā)送SIGKILL到容器。如果--sig-proxy為真(默認),則CTRL-c發(fā)送一個SIGINT到容器。您可以從容器中分離并使用CTRL-p CTRL-q鍵序列保持運行。

注:在容器中作為PID 1運行的進程被Linux專門處理:它忽略任何具有默認操作的信號。因此,進程不會在SIGINTSIGTERM除非它被編碼來這么做。

禁止在附加到啟用tty的容器(即:啟動時-t)時重定向docker attach命令的標準輸入。

當客戶端連接到容器的Stdio時,請使用docker attach,Docker使用~1MB內(nèi)存緩沖區(qū)來最大化應用程序的吞吐量。如果填充了此緩沖區(qū),API連接的速度將開始影響進程輸出寫入速度。這與其他應用程序類似,如SSH。因此,不建議運行性能關鍵的應用程序,這些應用程序在前臺通過緩慢的客戶端連接生成大量輸出。相反,用戶應該使用docker logs命令來訪問日志。

重寫分離序列

如果需要,可以為DECHACH配置一個覆蓋Docker密鑰序列。如果Docker默認序列與用于其他應用程序的密鑰序列發(fā)生沖突,則此操作非常有用。有兩種方法可以定義您自己的分離密鑰序列,作為每個容器覆蓋或作為整個配置的配置屬性。

若要重寫單個容器的序列,請使用--detach-keys="<sequence>"docker attach命令。的格式<sequence>不是一封信阿-Z,或ctrl-與下列任何一項相結(jié)合:

  • a-z (一個小寫字母字符)

  • @ (在標志處)

  • [ (左括號)

  • \\ (兩個反向斜線)

  • _ (下劃線)

  • ^ (脫字號;補注號)

這些a,ctrl-a,X,或ctrl-\\的值是有效的密鑰序列的所有實施例。要為所有容器配置不同的配置默認密鑰序列,請參閱配置文件部分。

示例

附加到正在運行的容器并從中分離

$ docker run -d --name topdemo ubuntu /usr/bin/top -b

$ docker attach topdemo

top - 02:05:52 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombieCpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    373572k total,   355560k used,    18012k free,    27872k buffers
Swap:   786428k total,        0k used,   786428k free,   221740k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 1 root      20   0 17200 1116  912 R    0  0.3   0:00.03 top

 top - 02:05:55 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05
 Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
 Mem:    373572k total,   355244k used,    18328k free,    27872k buffers
 Swap:   786428k total,        0k used,   786428k free,   221776k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND       1 root      20   0 17208 1144  932 R    0  0.3   0:00.03 top


 top - 02:05:58 up  3:06,  0 users,  load average: 0.01, 0.02, 0.05
 Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie Cpu(s):  0.2%us,  0.3%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
 Mem:    373572k total,   355780k used,    17792k free,    27880k buffers
 Swap:   786428k total,        0k used,   786428k free,   221776k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND      1 root      20   0 17208 1144  932 R    0  0.3   0:00.03 top^C$

$ echo $?0$ docker ps -a | grep topdemo

7998ac8581f9        ubuntu:14.04        "/usr/bin/top -b"   38 seconds ago      Exited (0) 21 seconds ago                          topdemo

獲取容器命令的退出代碼

在第二個示例中,您可以看到bash進程返回的退出代碼也被docker attach命令返回給其調(diào)用者:

    $ docker run --name test -d -it debian

    275c44472aebd77c926d4527885bb09f2f6db21d878c75f0a1c212c03d3bcfab

    $ docker attach test

    root@f38c87f2a42d:/# exit 13

    exit

    $ echo $?    13

    $ docker ps -a | grep test

    275c44472aeb        debian:7            "/bin/bash"         26 seconds ago      Exited (13) 17 seconds ago                         test

用URL構(gòu)建

$ docker build github.com/creack/docker-firefox

這將克隆GitHub存儲庫,并將克隆的存儲庫用作上下文。存儲庫根部的Dockerfile用作Dockerfile。可以使用git://git@計劃。

$ docker build -f ctx/Dockerfile http://server/ctx.tar.gz

Downloading context: http://server/ctx.tar.gz [===================>]    240 B/240 B
Step 1/3 : FROM busybox ---> 8c2e06607696
Step 2/3 : ADD ctx/container.cfg / ---> e7829950cee3
Removing intermediate container b35224abf821
Step 3/3 : CMD /bin/ls ---> Running in fbc63d321d73 ---> 3286931702ad
Removing intermediate container fbc63d321d73
Successfully built 377c409b35e4

這會將URL http://server/ctx.tar.gz發(fā)送到Docker守護進程,Docker守護進程會下載并提取引用的tarball。 -f ctx / Dockerfile參數(shù)在ctx.tar.gz中指定用于構(gòu)建映像的Dockerfile中的路徑。 該Dockerfile中引用本地路徑的任何ADD命令都必須與ctx.tar.gz內(nèi)的根目錄相關。 在上面的示例中,tarball包含一個目錄ctx /,因此ADD ctx / container.cfg /操作按預期工作。

用 - 進行建立

$ docker build - < Dockerfile

這將從STDIN沒有上下文的地方讀取Dockerfile 。由于缺少上下文,任何本地目錄的內(nèi)容都不會發(fā)送到Docker守護進程。由于沒有上下文,因此Dockerfile ADD僅在引用遠程URL時才有效。

$ docker build - < context.tar.gz

這將為從STDIN支持的格式有:bzip 2、gzip和xz。

使用.dockerignore文件

$ docker build .Uploading context 18.829 MB
Uploading context
Step 1/2 : FROM busybox ---> 769b9341d937
Step 2/2 : CMD echo Hello world ---> Using cache ---> 99cc1ad10469
Successfully built 99cc1ad10469
$ echo ".git" > .dockerignore
$ docker build .Uploading context  6.76 MB
Uploading context
Step 1/2 : FROM busybox ---> 769b9341d937
Step 2/2 : CMD echo Hello world ---> Using cache ---> 99cc1ad10469
Successfully built 99cc1ad10469

此示例顯示使用該.dockerignore文件.git從上下文中排除目錄。其效果可以在上傳的上下文的改變大小中看到。構(gòu)建器參考包含有關創(chuàng)建.dockerignore文件的詳細信息

標記圖像(-t)

$ docker build -t vieux/apache:2.0 .

這將像前面的示例一樣構(gòu)建,但它會標記生成的圖像。存儲庫名稱將是vieux/apache,標簽將會是2.0。詳細了解有效標簽。

可以將多個標記應用于圖像。例如,可以應用latest標記到新構(gòu)建的映像中,并添加引用特定版本的另一個標記。例如,將圖像標記為whenry/fedora-jboss:latestwhenry/fedora-jboss:v2.1,使用以下方法:

$ docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 .

指定一個Dockerfile(-f)

$ docker build -f Dockerfile.debug .

這將使用一個叫做Dockerfile.debug構(gòu)建指令的文件來代替Dockerfile。

$ curl example.com/remote/Dockerfile | docker build -f - .

上面的命令將使用當前目錄作為構(gòu)建上下文,并從stdin讀取一個Dockerfile。

$ docker build -f dockerfiles/Dockerfile.debug -t myapp_debug .$ docker build -f dockerfiles/Dockerfile.prod  -t myapp_prod .

以上命令將.使用調(diào)試版本的a Dockerfile和使用生產(chǎn)版本一次兩次構(gòu)建當前構(gòu)建上下文(由the指定)。

$ cd /home/me/myapp/some/dir/really/deep
$ docker build -f /home/me/myapp/dockerfiles/debug /home/me/myapp
$ docker build -f ../../../../dockerfiles/debug /home/me/myapp

這兩個docker build命令也會這樣做。它們都使用debug文件,而不是查找Dockerfile并將使用/home/me/myapp作為構(gòu)建上下文的根。請注意debug在構(gòu)建上下文的目錄結(jié)構(gòu)中,而不管如何在命令行中引用它。

注意: 如果文件或目錄不存在于上傳的上下文中,docker build將返回no such file or directory錯誤。如果沒有上下文,或者您指定的文件位于主機系統(tǒng)的其他位置,則可能會發(fā)生這種情況。由于安全原因,上下文僅限于當前目錄(及其子目錄),并確保遠程Docker主機上的可重復構(gòu)建。這也是ADD ../file不能工作的原因。

使用自定義父級cgroup(-cgroup-parent)

docker build使用該--cgroup-parent選項運行時,構(gòu)建中使用的容器將與相應的docker run標志一起運行。

在容器中設置ulimits(-ulimit)

使用該--ulimit選項docker build將使每個構(gòu)建步驟的容器都使用這些--ulimit標志值啟動。

設置構(gòu)建時間變量(-build-arg)

您可以使用ENVDockerfile中的指令來定義變量值。這些值堅持在建成的形象。但是,往往堅持的內(nèi)容不是你想要的。用戶想要根據(jù)他們在哪個主機上構(gòu)建圖像來指定不同的變量。

一個很好的例子是http_proxy或提取中間文件的源版本。ARG指令允許Dockerfile作者定義用戶可以在構(gòu)建時使用--build-arg標志

$ docker build --build-arg HTTP_PROXY=http://10.20.30.2:1234 .

此標志允許您傳遞像常規(guī)環(huán)境變量一樣訪問的構(gòu)建時變量。RUNDockerfile的指令。而且,這些值不會在中間圖像或最終映像中持久化,例如ENV價值是可以的。

使用此標志不會改變當ARG在構(gòu)建過程中,來自Dockerfile的行將被回顯。

有關使用ARGENV指令的詳細信息,請參閱Dockerfile參考。

可選的安全選項(-security-opt)

該標志僅在Windows上運行的守護程序上受支持,并且只支持credentialspec選項。在credentialspec必須在格式file://spec.txtregistry://keyname。

指定容器的隔離技術(隔離)

在Windows上運行Docker容器的情況下,此選項很有用。--isolation=<value>選項設置容器的隔離技術。在Linux上,唯一支持的是default使用Linux命名空間的選項。在Microsoft Windows上,您可以指定這些值:

描述

默認

使用Docker守護進程的--exec-opt指定的值。如果守護進程未指定隔離技術,則Microsoft Windows將使用進程作為其默認值。

處理

僅命名空間隔離。

hyperv

基于Hyper-V管理程序分區(qū)的隔離。

指定--isolation沒有值的標志與設置--isolation="default"相同。

將條目添加到容器主機文件(-add-host)

您可以/etc/hosts使用一個或多個--add-host標志將其他主機添加到容器的文件中。此示例為名為以下的主機添加一個靜態(tài)地址docker

$ docker build --add-host=docker:10.180.0.1 .

指定目標構(gòu)建階段(-target)

當構(gòu)建具有多個構(gòu)建階段的Dockerfile時,--target可以根據(jù)名稱指定中間構(gòu)建階段,作為結(jié)果映像的最后階段。將跳過目標階段之后的命令。

FROM debian AS build-env...FROM alpine AS production-env...
$ docker build -t mybuildimage --target build-env .

壓縮圖像的圖層(-squash)用于實驗

概述

一旦圖像被構(gòu)建,將新的圖層壓縮成一個新的圖層。壓縮不會破壞任何現(xiàn)有的圖像,而是創(chuàng)建一個新的圖像與內(nèi)容的擠壓層。這實際上使它看起來像所有的Dockerfile命令是用一個單層創(chuàng)建的。此方法將保留生成緩存。

使用此選項意味著新圖像將無法利用與其他圖像的層共享,并可能使用更多的空間。

使用此選項,您可能會看到由于存儲兩個映像副本,一個用于具有所有緩存層的構(gòu)建緩存,另一個用于壓縮版本。

先決條件

此頁面上的示例是在Docker 1.13中使用試驗模式。

可以通過使用--experimental在啟動Docker守護進程或設置experimental: truedaemon.json配置文件

默認情況下,實驗模式被禁用。要查看當前配置,請使用docker version命令。

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:35:24 2017
 OS/Arch:      linux/amd64
 Experimental: false [...]

要啟用實驗模式,用戶需要重啟啟用實驗標志的docker守護進程。

啟用碼頭試驗

從版本1.13.0開始,標準Docker二進制文件現(xiàn)在包含實驗性功能。為了啟用實驗性功能,您需要啟動帶有--experimental標志的Docker守護進程。您也可以通過/etc/docker/daemon.json啟用守護進程標志。例如

{    "experimental": true}

然后確保啟用了實驗標志:

$ docker version -f '{{.Server.Experimental}}'true

--squash參數(shù)構(gòu)建圖像

以下是使用--squash參數(shù)構(gòu)建docker的示例

FROM busybox
RUN echo hello > /hello
RUN echo world >> /hello
RUN touch remove_me /remove_me
ENV HELLO world
RUN rm /remove_me

一個名為的圖像test是用--squash參數(shù)構(gòu)建的。

$ docker build --squash -t test .[...]

如果一切都是正確的,那么歷史將會是這樣的:

$ docker history test 

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
4e10cb5b4cac        3 seconds ago                                                       12 B                merge sha256:88a7b0112a41826885df0e7072698006ee8f621c6ab99fca7fe9151d7b599702 to sha256:47bcc53f74dc94b1920f0b34f6036096526296767650f223433fe65c35f149eb<missing>           5 minutes ago       /bin/sh -c rm /remove_me                        0 B<missing>           5 minutes ago       /bin/sh -c #(nop) ENV HELLO=world               0 B<missing>           5 minutes ago       /bin/sh -c touch remove_me /remove_me           0 B<missing>           5 minutes ago       /bin/sh -c echo world >> /hello                 0 B<missing>           6 minutes ago       /bin/sh -c echo hello > /hello                  0 B<missing>           7 weeks ago         /bin/sh -c #(nop) CMD ["sh"]                    0 B<missing>           7 weeks ago         /bin/sh -c #(nop) ADD file:47ca6e777c36a4cfff   1.113 MB

我們可以發(fā)現(xiàn)所有圖層的名稱都是<missing>,并且COMMENT有一個新圖層merge

測試圖像,檢查是否/remove_me已經(jīng)消失,確保hello\nworld已進入/hello,確保HELLOenvvar的值為world。

Previous article: Next article: