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

本節(jié)中的信息解釋bridge了在安裝 Docker 時自動創(chuàng)建的 Docker 默認(rèn)網(wǎng)絡(luò)中的舊容器鏈接。

在 Docker 網(wǎng)絡(luò)功能之前,您可以使用 Docker 鏈接功能來允許容器相互發(fā)現(xiàn)并安全地將有關(guān)一個容器的信息傳輸?shù)搅硪粋€容器。通過引入 Docker 網(wǎng)絡(luò)功能,您仍然可以創(chuàng)建鏈接,但它們在默認(rèn)bridge網(wǎng)絡(luò)和用戶定義網(wǎng)絡(luò)之間的行為不同。

本節(jié)簡要討論通過網(wǎng)絡(luò)端口進行連接,然后詳細(xì)介紹默認(rèn)bridge網(wǎng)絡(luò)中的容器鏈接。

警告:該--link標(biāo)志是 Docker 的棄用遺留功能。它最終可能會被刪除。除非您絕對需要繼續(xù)使用它,否則我們建議您使用用戶定義的網(wǎng)絡(luò)來促進兩個容器之間的通信而不是使用--link。用戶定義的網(wǎng)絡(luò)不支持的一個功能--link是在容器之間共享環(huán)境變量。但是,您可以使用其他機制(如卷)以更受控制的方式在容器之間共享環(huán)境變量。

使用網(wǎng)絡(luò)端口映射連接

假設(shè)您使用此命令來運行簡單的 Python Flask 應(yīng)用程序:

$ docker run -d -P training/webapp python app.py

注意:容器具有內(nèi)部網(wǎng)絡(luò)和IP地址。Docker 可以有多種網(wǎng)絡(luò)配置。您可以在這里看到有關(guān) Docker 網(wǎng)絡(luò)的更多信息。

創(chuàng)建該容器時,該-P標(biāo)志用于自動將其內(nèi)部的任何網(wǎng)絡(luò)端口映射到 Docker 主機上臨時端口范圍內(nèi)的隨機高端口。接下來,docker ps運行時,您看到容器中的端口5000已綁定到主機上的端口49155。

$ docker ps nostalgic_morse

CONTAINER ID  IMAGE                   COMMAND       CREATED        STATUS        PORTS                    NAMES
bc533791f3f5  training/webapp:latest  python app.py 5 seconds ago  Up 2 seconds  0.0.0.0:49155->5000/tcp  nostalgic_morse

您還看到了如何使用-p旗子。在這里,主機的端口80映射到容器的端口5000:

$ docker run -d -p 80:5000 training/webapp python app.py

你也看到了為什么這不是一個好主意,因為它限制你在那個特定的港口上只有一個集裝箱。

相反,您可以指定一系列主機端口,以便將容器端口綁定到與默認(rèn)端口不同的位置。短時端口范圍*

$ docker run -d -p 8000-9000:5000 training/webapp python app.py

這將將容器中的端口5000綁定到主機上8000到9000之間的隨機可用端口。

還有一些其他方法可以配置-p旗子。默認(rèn)情況下,-p標(biāo)志將指定的端口綁定到主機上的所有接口。但是,您還可以指定綁定到特定接口,例如,僅將綁定指定到localhost...

$ docker run -d -p 127.0.0.1:80:5000 training/webapp python app.py

這將將容器內(nèi)的端口5000綁定到localhost127.0.0.1主機上的接口。

或者,將容器的端口5000綁定到動態(tài)端口,但僅在localhost,你可以:

$ docker run -d -p 127.0.0.1::5000 training/webapp python app.py

還可以通過添加尾隨來綁定UDP端口。/udp例如:

$ docker run -d -p 127.0.0.1:80:5000/udp training/webapp python app.py

你也學(xué)到了有用的東西docker port顯示當(dāng)前端口綁定的快捷方式。這對于顯示特定的端口配置也很有用。例如,如果您已經(jīng)將容器端口綁定到localhost在主機上,然后docker port產(chǎn)出將反映這一點。

$ docker port nostalgic_morse 5000127.0.0.1:49155

*-p可以多次使用標(biāo)志來配置多個端口。

與連接系統(tǒng)連接

本節(jié)將介紹默認(rèn)情況下的遺留鏈接功能。bridge網(wǎng)絡(luò)。請參閱在用戶定義的網(wǎng)絡(luò)中連接容器有關(guān)用戶定義網(wǎng)絡(luò)中鏈接的更多信息。

網(wǎng)絡(luò)端口映射并不是Docker容器相互連接的唯一方式。Docker還有一個鏈接系統(tǒng),允許您將多個容器連接在一起,并從一個容器到另一個容器發(fā)送連接信息。鏈接容器時,可以將有關(guān)源容器的信息發(fā)送到收件人容器。這允許收件人查看所選數(shù)據(jù)描述源容器的各個方面。

命名的重要性

要建立鏈接,Docker依賴于容器的名稱。您已經(jīng)看到,您創(chuàng)建的每個容器都有一個自動創(chuàng)建的名稱;實際上,您已經(jīng)熟悉了我們的老朋友nostalgic_morse在這個指南里。您也可以自己命名容器。這個命名提供了兩個有用的功能:

  1. 將執(zhí)行特定功能的容器命名為使您更容易記住它們的方法是有用的,例如命名包含web應(yīng)用程序的容器。web...

  1. 它為Docker提供了一個引用點,允許它引用其他容器,例如,可以指定鏈接容器web到集裝箱db...

您可以使用--name例如,國旗:

$ docker run -d -P --name web training/webapp python app.py

這將啟動一個新容器,并使用--name標(biāo)志以命名容器web.您可以使用docker ps命令。

$ docker ps -l

CONTAINER ID  IMAGE                  COMMAND        CREATED       STATUS       PORTS                    NAMES
aed84ee21bde  training/webapp:latest python app.py  12 hours ago  Up 2 seconds 0.0.0.0:49154->5000/tcp  web

您也可以使用docker inspect返回容器的名稱。

容器名稱必須是唯一的。這意味著您只能調(diào)用一個容器。web.如果要重用容器名稱,必須刪除舊容器%28docker rm%29,然后才能創(chuàng)建同名的新容器。作為替代,您可以使用--rmdocker run命令。這將在容器停止后立即刪除它。

跨鏈路通信

鏈接允許容器彼此發(fā)現(xiàn)并安全地將有關(guān)一個容器的信息傳輸?shù)搅硪粋€容器。設(shè)置鏈接時,可以在源容器和收件人容器之間創(chuàng)建管道。然后,收件人可以訪問有關(guān)源的選擇數(shù)據(jù)。若要創(chuàng)建鏈接,請使用--link旗子。首先,創(chuàng)建一個新容器,這次是一個包含數(shù)據(jù)庫的容器。

$ docker run -d --name db training/postgres

這將創(chuàng)建一個名為dbtraining/postgres圖像,其中包含PostgreSQL數(shù)據(jù)庫。

現(xiàn)在,您需要刪除web之前創(chuàng)建的容器,以便用鏈接的容器替換它:

$ docker rm -f web

現(xiàn)在,創(chuàng)建一個新的web容器并將其與您的db集裝箱。

$ docker run -d -P --name web --link db:db training/webapp python app.py

這將連接新的web容器db您之前創(chuàng)建的容器。大--link國旗形式如下:

--link <name or id>:alias

何地name是我們鏈接到的容器的名稱,并且alias是鏈接名的別名。您很快就會看到這個別名是如何使用的。大--link標(biāo)志還采取以下形式:

--link <name or id>

在這種情況下,別名將與名稱匹配。您可以將前面的示例編寫為:

$ docker run -d -P --name web --link db training/webapp python app.py

接下來,使用docker inspect*

$ docker inspect -f "{{ .HostConfig.Links }}" web[/db:/web/db]

你可以看到web容器現(xiàn)在鏈接到db集裝箱web/db。這允許它訪問有關(guān)db集裝箱。

那么,連接容器實際上是做什么的呢?您已經(jīng)了解到,鏈接允許源容器向收件人容器提供有關(guān)自身的信息。在我們的例子中,接受者,web,可以訪問有關(guān)源的信息。db為此,Docker在容器之間創(chuàng)建一個安全隧道,不需要在容器外部公開任何端口;您將注意到,當(dāng)我們啟動db容器,我們也沒有使用-P-p旗子。這是鏈接的一個巨大好處:我們不需要將源容器(這里是PostgreSQL數(shù)據(jù)庫)公開到網(wǎng)絡(luò)中。

Docker以兩種方式公開源容器到收件人容器的連接信息:

  • 環(huán)境變量,

  • 更新/etc/hosts檔案。

環(huán)境變量

當(dāng)您鏈接容器時,Docker會創(chuàng)建多個環(huán)境變量。控件自動在目標(biāo)容器中創(chuàng)建環(huán)境變量。--link參數(shù)。它還將公開源自源容器的Docker的所有環(huán)境變量。這些變量包括:

  • ENV源容器的Dockerfile中的命令

  • -e,,,--env,和--env-file上的選項docker run在啟動源容器時發(fā)出

這些環(huán)境變量可以從目標(biāo)容器中發(fā)現(xiàn)與源容器相關(guān)的信息。

警告*重要的是要理解從容器內(nèi)的Docker中產(chǎn)生的環(huán)境變量可用于任何鏈接到它的容器。如果將敏感數(shù)據(jù)存儲在其中,這可能會對安全產(chǎn)生嚴(yán)重影響。

碼頭設(shè)置<alias>_NAME中列出的每個目標(biāo)容器的環(huán)境變量。--link參數(shù)。例如,如果一個新容器調(diào)用web鏈接到名為db通孔--link db:webdb,然后Docker創(chuàng)建一個WEBDB_NAME=/web/webdb變量中的web集裝箱。

Docker還為源容器公開的每個端口定義了一組環(huán)境變量。每個變量在表單中都有一個唯一的前綴:

<name>_PORT_<port>_<protocol>

這個前綴中的組件是:

  • 別名<name>中指定的--link參數(shù)%28例如,webdb%29

  • <port>暴露數(shù)

  • <protocol>哪個是tcp或udp?

Docker使用這種前綴格式定義三個不同的環(huán)境變量:

  • prefix_ADDR變量包含來自URL的IP地址,例如WEBDB_PORT_5432_TCP_ADDR=172.17.0.82...

  • prefix_PORT變量僅包含URL中的端口號,例如WEBDB_PORT_5432_TCP_PORT=5432...

  • prefix_PROTO變量僅包含來自URL的協(xié)議,例如WEBDB_PORT_5432_TCP_PROTO=tcp...

如果容器公開多個端口,則為每個端口定義一個環(huán)境變量集。這意味著,例如,如果容器公開了Docker創(chuàng)建的4個端口,每個端口將創(chuàng)建12個環(huán)境變量。

此外,Docker還創(chuàng)建了一個名為<alias>_PORT此變量包含源容器的第一個公開端口的URL?!暗谝粋€”端口被定義為具有最低數(shù)目的公開端口。例如,考慮WEBDB_PORT=tcp://172.17.0.82:5432變量。如果該端口同時用于TCP和UDP,則指定TCP端口。

最后,Docker還將來自源容器的每個Docker源環(huán)境變量公開為目標(biāo)中的環(huán)境變量。對于每個變量,Docker創(chuàng)建一個<alias>_ENV_<name>變量在目標(biāo)容器中。變量的值設(shè)置為啟動源容器時使用的值Docker。

返回到我們的數(shù)據(jù)庫示例,您可以運行env命令列出指定容器的環(huán)境變量。

    $ docker run --rm --name web2 --link db:db training/webapp env    . . .
    DB_NAME=/web2/db
    DB_PORT=tcp://172.17.0.5:5432
    DB_PORT_5432_TCP=tcp://172.17.0.5:5432
    DB_PORT_5432_TCP_PROTO=tcp
    DB_PORT_5432_TCP_PORT=5432
    DB_PORT_5432_TCP_ADDR=172.17.0.5    . . .

您可以看到,Docker已經(jīng)創(chuàng)建了一系列環(huán)境變量,其中包含有關(guān)源的有用信息。db集裝箱。每個變量都以前綴DB_,它是從alias你上面有說明。如果aliasdb1,變量將以DB1_.可以使用這些環(huán)境變量配置應(yīng)用程序,以連接到db集裝箱。連接將是安全的和私有的;只有鏈接web容器將能夠與db集裝箱。

關(guān)于碼頭環(huán)境變量的重要注記

不像/etc/hosts檔案,如果重新啟動源容器,存儲在環(huán)境變量中的IP地址不會自動更新。我們建議在/etc/hosts若要解析鏈接容器的IP地址,請執(zhí)行以下操作。

這些環(huán)境變量僅為容器中的第一個進程設(shè)置。一些守護進程,例如sshd,當(dāng)它們產(chǎn)卵時,會擦洗它們以連接。

更新/etc/hosts檔案

除了環(huán)境變量之外,Docker還將源容器的主機項添加到/etc/hosts檔案。這里有一個條目web集裝箱:

$ docker run -t -i --rm --link db:webdb training/webapp /bin/bash

root@aed84ee21bde:/opt/webapp# cat /etc/hosts172.17.0.7  aed84ee21bde. . .172.17.0.5  webdb 6e5cdeb2d300 db

您可以看到兩個相關(guān)的主機條目。第一個條目是web容器,它使用容器ID作為主機名。第二個條目使用鏈接別名引用db集裝箱。除了您提供的別名之外,鏈接容器的名稱-如果是唯一的,則從提供給--link參數(shù)-并且鏈接容器的主機名也將被添加到/etc/hosts用于鏈接容器的IP地址。您現(xiàn)在可以通過以下任何一個條目來平該主機:

root@aed84ee21bde:/opt/webapp# apt-get install -yqq inetutils-ping

root@aed84ee21bde:/opt/webapp# ping webdb

PING webdb (172.17.0.5): 48 data bytes56 bytes from 172.17.0.5: icmp_seq=0 ttl=64 time=0.267 ms56 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.250 ms56 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.256 ms

:在本例中,您將注意到您必須安裝ping因為它最初沒有包含在容器中。

在這里,你用ping命令,將db容器使用其主機項,該條目解析為172.17.0.5.您可以使用此主機項配置應(yīng)用程序以使用db集裝箱。

::可以將多個收件人容器鏈接到單個源。例如,可以將多個%28不同名稱的web容器附加到db集裝箱。

如果重新啟動源容器,則鏈接容器/etc/hosts文件將使用源容器的新IP地址自動更新,從而允許繼續(xù)進行鏈接通信。

$ docker restart db

db

$ docker run -t -i --rm --link db:db training/webapp /bin/bash

root@aed84ee21bde:/opt/webapp# cat /etc/hosts172.17.0.7  aed84ee21bde. . .172.17.0.9  db
Previous article: Next article: