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

本節(jié)概述 Docker 的默認網(wǎng)絡行為,包括默認創(chuàng)建的網(wǎng)絡類型以及如何創(chuàng)建自己的用戶定義網(wǎng)絡。它還介紹了在單個主機上或跨主機集群創(chuàng)建網(wǎng)絡所需的資源。

有關 Docker 如何與iptables在 linux 主機上,請參見碼頭工人iptables...

默認網(wǎng)絡

當您安裝 Docke r時,它會自動創(chuàng)建三個網(wǎng)絡。您可以使用以下docker network ls命令列出這些網(wǎng)絡:

$ docker network ls

NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                nullcf03ee007fb4        host                host

這三個網(wǎng)絡都構建在 Docker 中。當你運行一個容器時,你可以使用該--network標志來指定你的容器應該連接到哪個網(wǎng)絡。

bridge網(wǎng)絡是指docker0存在于所有的碼頭工人安裝網(wǎng)絡。除非您使用該docker run --network=<NETWORK>選項另外指定,否則默認情況下,Docker 守護程序會將容器連接到此網(wǎng)絡。通過使用主機上的ifconfig命令,您可以將此橋看作主機網(wǎng)絡堆棧的一部分。

$ ifconfig

docker0   Link encap:Ethernet  HWaddr 02:42:47:bc:3a:eb
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:47ff:febc:3aeb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1100 (1.1 KB)  TX bytes:648 (648.0 B)

所述none網(wǎng)絡增加了一個容器為特定容器的網(wǎng)絡棧。該容器缺少網(wǎng)絡接口。附著在這樣一個容器上,看著它的堆棧,你會看到:

$ docker attach nonenetcontainer

root@0cb243cd1293:/# cat /etc/hosts127.0.0.1	localhost::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
root@0cb243cd1293:/# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)root@0cb243cd1293:/#

注意:您可以從容器中分離并使其保持運行狀態(tài)CTRL-p CTRL-q

host網(wǎng)絡增加了主機的網(wǎng)絡堆棧上的容器。就網(wǎng)絡而言,主機和容器之間沒有隔離。例如,如果使用主機網(wǎng)絡運行在端口80上運行 Web 服務器的容器,則 Web 服務器在主機的端口80上可用。

這些nonehost網(wǎng)絡不能直接在 Docker 中配置。但是,您可以配置默認bridge網(wǎng)絡以及您自己的用戶定義網(wǎng)橋。

默認網(wǎng)橋

默認bridge網(wǎng)絡存在于所有 Docker 主機上。如果您未指定其他網(wǎng)絡,則新容器會自動連接到默認bridge網(wǎng)絡。

docker network inspect命令返回有關網(wǎng)絡的信息:

$ docker network inspect bridge[   {       "Name": "bridge",       "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",       "Scope": "local",       "Driver": "bridge",       "IPAM": {           "Driver": "default",           "Config": [               {                   "Subnet": "172.17.0.1/16",                   "Gateway": "172.17.0.1"               }           ]       },       "Containers": {},       "Options": {           "com.docker.network.bridge.default_bridge": "true",           "com.docker.network.bridge.enable_icc": "true",           "com.docker.network.bridge.enable_ip_masquerade": "true",           "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",           "com.docker.network.bridge.name": "docker0",           "com.docker.network.driver.mtu": "9001"       },       "Labels": {}   }]

運行以下兩個命令來啟動兩個busybox容器,每個容器都連接到默認bridge網(wǎng)絡。

$ docker run -itd --name=container1 busybox

3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c

$ docker run -itd --name=container2 busybox

94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c

bridge啟動兩個容器后再次檢查網(wǎng)絡。這兩個busybox容器都連接到網(wǎng)絡。記下它們的 IP 地址,這與主機上的 IP 地址不同,下面的例子會有所不同。

$ docker network inspect bridge{[    {        "Name": "bridge",        "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",        "Scope": "local",        "Driver": "bridge",        "IPAM": {            "Driver": "default",            "Config": [                {                    "Subnet": "172.17.0.1/16",                    "Gateway": "172.17.0.1"                }            ]        },        "Containers": {            "3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c": {                "EndpointID": "647c12443e91faf0fd508b6edfe59c30b642abb60dfab890b4bdccee38750bc1",                "MacAddress": "02:42:ac:11:00:02",                "IPv4Address": "172.17.0.2/16",                "IPv6Address": ""            },            "94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c": {                "EndpointID": "b047d090f446ac49747d3c37d63e4307be745876db7f0ceef7b311cbba615f48",                "MacAddress": "02:42:ac:11:00:03",                "IPv4Address": "172.17.0.3/16",                "IPv6Address": ""            }        },        "Options": {            "com.docker.network.bridge.default_bridge": "true",            "com.docker.network.bridge.enable_icc": "true",            "com.docker.network.bridge.enable_ip_masquerade": "true",            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",            "com.docker.network.bridge.name": "docker0",            "com.docker.network.driver.mtu": "9001"        },        "Labels": {}    }]

連接到默認bridge網(wǎng)絡的容器可以通過 IP 地址相互通信。Docker 不支持在默認網(wǎng)橋上自動發(fā)現(xiàn)服務。如果您希望容器能夠通過容器名稱解析 IP 地址,則應該使用用戶定義的網(wǎng)絡。您可以使用舊版docker run --link選項將兩個容器鏈接在一起,但在大多數(shù)情況下不建議這樣做。

您可以attach運行container以查看容器內(nèi)網(wǎng)絡的外觀。您連接為root,因此您的命令提示符是一個#字符。

$ docker attach container1

root@0cb243cd1293:/# ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1296 (1.2 KiB)  TX bytes:648 (648.0 B)lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

從容器內(nèi)部,使用該ping命令測試到其他容器的 IP 地址的網(wǎng)絡連接。

root@0cb243cd1293:/# ping -w3 172.17.0.3PING 172.17.0.3 (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.096 ms64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.080 ms64 bytes from 172.17.0.3: seq=2 ttl=64 time=0.074 ms--- 172.17.0.3 ping statistics ---3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.074/0.083/0.096 ms

使用該cat命令查看/etc/hosts容器上的文件。這顯示容器識別的主機名和 IP 地址。

root@0cb243cd1293:/# cat /etc/hosts172.17.0.2	3386a527aa08127.0.0.1	localhost::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters

要從container1容器中分離并保持運行,請使用鍵盤序列 CTRL-p CTRL-q。如果您愿意,請附加container2并重復上述命令。

默認docker0網(wǎng)橋支持使用端口映射并docker run --link允許網(wǎng)絡中的容器之間的docker0通信。不建議使用這種方法。在可能的情況下,您應該使用用戶定義的網(wǎng)橋。

用戶定義的網(wǎng)絡

建議使用用戶定義的橋接網(wǎng)絡來控制哪些容器可以相互通信,還可以啟用將容器名稱自動 DNS 解析為 IP 地址。Docker 提供用于創(chuàng)建這些網(wǎng)絡的默認網(wǎng)絡驅動程序。您可以創(chuàng)建新的網(wǎng)橋,覆蓋網(wǎng)絡MACVLAN網(wǎng)絡。您還可以創(chuàng)建網(wǎng)絡插件遠程網(wǎng)絡以進行完整的自定義和控制。

您可以根據(jù)需要創(chuàng)建盡可能多的網(wǎng)絡,并且您可以在任何給定時間將容器連接到零個或多個這些網(wǎng)絡。另外,您可以在不重新啟動容器的情況下連接和斷開網(wǎng)絡中正在運行的容器。當容器連接到多個網(wǎng)絡時,其外部連接通過第一個非內(nèi)部網(wǎng)絡以詞匯順序提供。

接下來的幾節(jié)將更詳細地介紹 Docker 的每個內(nèi)置網(wǎng)絡驅動程序。

橋梁網(wǎng)絡

一個bridge網(wǎng)絡是網(wǎng)絡在泊塢中使用的最常見的類型。橋梁網(wǎng)絡類似于默認bridge網(wǎng)絡,但添加一些新功能并刪除一些舊功能。以下示例創(chuàng)建了一些橋接網(wǎng)絡并對這些網(wǎng)絡上的容器執(zhí)行了一些實驗。

$ docker network create --driver bridge isolated_nw

1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b

$ docker network inspect isolated_nw[    {        "Name": "isolated_nw",        "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",        "Scope": "local",        "Driver": "bridge",        "IPAM": {            "Driver": "default",            "Config": [                {                    "Subnet": "172.21.0.0/16",                    "Gateway": "172.21.0.1/16"                }            ]        },        "Containers": {},        "Options": {},        "Labels": {}    }]$ docker network ls

NETWORK ID          NAME                DRIVER
9f904ee27bf5        none                nullcf03ee007fb4        host                host
7fca4eb8c647        bridge              bridge
c5ee82f76de3        isolated_nw         bridge

創(chuàng)建網(wǎng)絡后,可以使用該docker run --network=<NETWORK>選項在其上啟動容器。

$ docker run --network=isolated_nw -itd --name=container3 busybox

8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c

$ docker network inspect isolated_nw[    {        "Name": "isolated_nw",        "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",        "Scope": "local",        "Driver": "bridge",        "IPAM": {            "Driver": "default",            "Config": [                {}            ]        },        "Containers": {            "8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c": {                "EndpointID": "93b2db4a9b9a997beb912d28bcfc117f7b0eb924ff91d48cfa251d473e6a9b08",                "MacAddress": "02:42:ac:15:00:02",                "IPv4Address": "172.21.0.2/16",                "IPv6Address": ""            }        },        "Options": {},        "Labels": {}    }]

您啟動到此網(wǎng)絡中的容器必須駐留在同一個 Docker 主機上。網(wǎng)絡中的每個容器可以立即與網(wǎng)絡中的其他容器進行通信。雖然,網(wǎng)絡本身將容器與外部網(wǎng)絡隔離開來。

在用戶定義的網(wǎng)橋網(wǎng)絡中,不支持連接.。你可以公開和發(fā)布集裝箱港口在這個網(wǎng)絡中的容器上。如果您想要使部分bridge外部網(wǎng)絡可用的網(wǎng)絡。

在希望在單個主機上運行相對較小的網(wǎng)絡的情況下,橋接網(wǎng)絡非常有用。但是,您可以通過創(chuàng)建網(wǎng)絡來創(chuàng)建更大的overlay網(wǎng)絡。

docker_gwbridge網(wǎng)絡

docker_gwbridge是一個由 Docker 在兩種不同情況下自動創(chuàng)建的本地橋接網(wǎng)絡:

  • 初始化或加入群集時,Docker 會創(chuàng)建docker_gwbridge網(wǎng)絡并將其用于不同主機上的群集節(jié)點之間的通信。

  • 當一個容器的網(wǎng)絡都不能提供外部連接時,docker_gwbridge除容器的其他網(wǎng)絡外,Docker 還將容器連接到網(wǎng)絡,以便容器可以連接到外部網(wǎng)絡或其他群集節(jié)點。

docker_gwbridge如果需要自定義配置,您可以提前創(chuàng)建網(wǎng)絡,否則 Docker 會根據(jù)需要創(chuàng)建它。以下示例docker_gwbridge使用一些自定義選項創(chuàng)建網(wǎng)絡。

$ docker network create --subnet 172.30.0.0/16 \                        --opt com.docker.network.bridge.name=docker_gwbridge \--opt com.docker.network.bridge.enable_icc=false \
			docker_gwbridge

docker_gwbridge使用overlay網(wǎng)絡時,網(wǎng)絡始終存在。

以群模式覆蓋網(wǎng)絡

您可以在沒有外部鍵值存儲的情況下在以群集模式運行的管理器節(jié)點上創(chuàng)建覆蓋網(wǎng)絡。群體使覆蓋網(wǎng)絡只能用于群體中需要服務的節(jié)點。當您創(chuàng)建使用覆蓋網(wǎng)絡的服務時,管理器節(jié)點會自動將覆蓋網(wǎng)絡擴展到運行服務任務的節(jié)點。

要了解有關在群集模式下運行 Docker 引擎的更多信息,請參閱群集模式概述。

下面的例子顯示了如何創(chuàng)建一個網(wǎng)絡并將其用于群中管理器節(jié)點的服務:

$ docker network create \  --driver overlay \  --subnet 10.0.9.0/24 \
  my-multi-host-network

400g6bwzd68jizzdx5pgyoe95

$ docker service create --replicas 2 --network my-multi-host-network --name my-web nginx

716thylsndqma81j6kkkb5aus

只有群集服務可以連接到覆蓋網(wǎng)絡,而不是獨立的容器。有關群集的更多信息,請參閱 Docker 群集模式覆蓋網(wǎng)絡安全模型和將服務附加到覆蓋網(wǎng)絡。

沒有群模式的覆蓋網(wǎng)絡

如果您未在群集模式下使用 Docker 引擎,則overlay網(wǎng)絡需要有效的鍵值存儲服務。支持的鍵值存儲包括Consul,Etcd 和 ZooKeeper(分布式存儲)。在以這種方式創(chuàng)建網(wǎng)絡之前,您必須安裝并配置您選擇的鍵值存儲服務。Docker 托管您打算聯(lián)網(wǎng)并且該服務必須能夠通信。

注意:以群集模式運行的 Docker Engine 與外部鍵值存儲的網(wǎng)絡不兼容。

對于大多數(shù) Docker 用戶,不推薦使用這種覆蓋網(wǎng)絡。它可以與獨立群集一起使用,并可能對在 Docker 之上構建解決方案的系統(tǒng)開發(fā)人員有用。它可能在將來被棄用。如果您認為您可能需要以這種方式使用覆蓋網(wǎng)絡,請參閱本指南。

自定義網(wǎng)絡插件

如果您的需求未被上述任何網(wǎng)絡機制解決,您可以使用 Docker 的插件基礎結構編寫自己的網(wǎng)絡驅動程序插件。該插件將作為運行 Docker 守護進程的主機上的單獨進程運行。使用網(wǎng)絡插件是一個高級主題。

網(wǎng)絡插件遵循與其他插件相同的限制和安裝規(guī)則。所有插件都使用插件 API,并且具有包含安裝,啟動,停止和激活的生命周期。

一旦創(chuàng)建并安裝了自定義網(wǎng)絡驅動程序,就可以創(chuàng)建一個使用該驅動程序和該--driver標志的網(wǎng)絡。

$ docker network create --driver weave mynet

您可以檢查網(wǎng)絡,連接和斷開容器,并刪除它。一個特定的插件可能有特定的要求,以便使用。查看插件的文檔以獲得特定信息。有關編寫插件的詳細信息,請參閱延伸碼頭和編寫網(wǎng)絡驅動插件...

嵌入式DNS服務器

Docker 守護程序運行嵌入式 DNS 服務器,該服務器在連接到同一用戶定義網(wǎng)絡的容器中提供 DNS 解析,以便這些容器可以將容器名稱解析為IP地址。如果嵌入式 DNS 服務器無法解析請求,它將被轉發(fā)到為該容器配置的任何外部DNS服務器。為了便于創(chuàng)建容器,只有可訪問的嵌入式 DNS 服務器127.0.0.11將在容器的resolv.conf文件中列出。有關用戶定義網(wǎng)絡中嵌入式 DNS 服務器的更多信息,請參閱用戶定義網(wǎng)絡中的嵌入式 DNS 服務器

公開和發(fā)布端口

在 Docker 網(wǎng)絡中,有兩種直接涉及網(wǎng)絡端口的不同機制:公開和發(fā)布端口。這適用于默認橋接網(wǎng)絡和用戶定義橋接網(wǎng)絡。

  • 您使用EXPOSEDockerfile中的關鍵字或--expose標志暴露端口docker run。公開端口是一種記錄使用哪些端口的方法,但并不實際映射或打開任何端口。公開端口是可選的。

  • 您使用PUBLISHDockerfile 中的關鍵字或--publish標志來發(fā)布端口docker run。這告訴 Docker 在容器的網(wǎng)絡接口上打開哪些端口。端口發(fā)布時,它將映射到30000主機上的可用高端端口(高于),除非您在運行時指定要在主機上映射的端口。您無法在 Dockerfile 中的主機上指定要映射到的端口,因為無法保證端口在您運行映像的主機上可用。

本示例將容器中的端口80發(fā)布到32768主機上的隨機高端口(在這種情況下)。該-d標志將導致容器在后臺運行,以便您可以發(fā)出該docker ps命令。

$ docker run -it -d -p 80 nginx $ docker ps 64879472feea nginx“nginx -g'daemon ...”43小時前Up大約一分鐘443 / tcp,0.0.0.0:32768->80/tcp blissful_mclean

下一個示例指定端口80應映射到主機上的端口8080。如果端口8080不可用,它將失敗。

$ docker run -it -d -p 8080:80 nginx $ docker ps b9788c7adca3 nginx“nginx -g'daemon ...”43小時前上傳3秒80 / tcp,443 / tcp,0.0.0.0:8080->80 / tcp goofy_brahmagupta

使用帶有容器的代理服務器

如果您的容器需要使用 HTTP,HTTPS 或 FTP 代理服務器,則可以采用不同的方式對其進行配置:

  • 在 Docker 17.07及更高版本中,您可以配置 Docker 客戶端以自動將代理信息傳遞給容器。

  • 在 Docker 17.06 及更低版本中,您必須在容器中設置適當?shù)沫h(huán)境變量。您可以在構建圖像時(這會使圖像的可移植性降低)或創(chuàng)建或運行容器時執(zhí)行此操作。

配置Docker客戶端

僅限邊緣:此選項僅在Docker CE Edge版本中可用。請參閱Docker CE Edge。

  1. 在Docker客戶端上,創(chuàng)建或編輯~/.config.json啟動容器的用戶的主目錄中的文件。添加JSON(如下所示),用代理服務器的類型httpsproxyftpproxy必要時替換代理服務器的類型,并替換代理服務器的地址和端口。您可以同時配置多個代理服務器。通過將noProxy密鑰設置為一個或多個逗號分隔的IP地址或主機,您可以選擇性地排除通過代理服務器的主機或范圍。*如本例所示,支持使用字符作為通配符。{“proxies”:{“httpProxy”:“http://127.0.0.1:3001”,“noProxy”:“* .test.example.com,.example2.com”}}保存文件。

  1. 當您創(chuàng)建或啟動新容器時,環(huán)境變量將在容器中自動設置。

手動設置環(huán)境變量

當您創(chuàng)建圖像或--env在創(chuàng)建或運行容器時使用該標記時,可以將一個或多個以下變量設置為適當?shù)闹?。此方法使圖像的可移植性降低,因此,如果您擁有 Docker 17.07或更高版本,則應該配置 Docker 客戶端。

變量

Dockerfile示例

碼頭運行示例

HTTP_PROXY

ENV HTTP_PROXY“http://127.0.0.1:3001”

--env HTTP_PROXY“http://127.0.0.1:3001”

HTTPS_PROXY

ENV HTTPS_PROXY“https://127.0.0.1:3001”

--env HTTPS_PROXY“https://127.0.0.1:3001”

FTP_PROXY

ENV FTP_PROXY“ftp://127.0.0.1:3001”

--env FTP_PROXY“ftp://127.0.0.1:3001”

NO_PROXY

ENV NO_PROXY“* .test.example.com,.example2.com”| -env NO_PROXY“* .test.example.com,.example2.com”`| |


鏈接

在 Docker 包含用戶定義的網(wǎng)絡之前,您可以使用 Docker --link功能來允許容器將另一個容器的名稱解析為IP地址,并且還允許它訪問鏈接容器的環(huán)境變量。在可能的情況下,您應該避免使用遺留--link標志。

當您創(chuàng)建鏈接時,當您使用默認bridge網(wǎng)絡或使用用戶定義的網(wǎng)橋時,它們的行為會有所不同。有關詳細信息,請參閱默認bridge網(wǎng)絡中的鏈接功能的傳統(tǒng)鏈接以及用戶定義網(wǎng)絡中的鏈接容器,以獲取用戶定義網(wǎng)絡中的鏈接功能。

Docker和iptables

Linux 主機使用調(diào)用的內(nèi)核模塊iptables來管理對網(wǎng)絡設備的訪問,包括路由,端口轉發(fā),網(wǎng)絡地址轉換(NAT)以及其他問題。iptables當您啟動或停止發(fā)布端口的容器時,當您創(chuàng)建或修改網(wǎng)絡或將容器附加到它們或其他與網(wǎng)絡相關的操作時,Docker會修改規(guī)則。

充分討論iptables超出了這個話題的范圍。要查看哪些iptables規(guī)則隨時有效,可以使用iptables -L。多個表存在,你可以列出一個特定的表,例如nat,prerouting或者postrouting,使用命令如iptables -t nat -L。有關完整的文檔iptables,請參閱netfilter / iptables。

通常,iptables規(guī)則由初始化腳本或守護程序進程創(chuàng)建,例如firewalld。規(guī)則不會在系統(tǒng)重新啟動時持續(xù)存在,因此腳本或實用程序必須在系統(tǒng)引導時運行,通常在運行級別3或在網(wǎng)絡初始化之后運行。請查閱您的Linux發(fā)行版的網(wǎng)絡文檔,以獲取有關使iptables規(guī)則持久化的適當方式的建議。

Docker 動態(tài)管理iptables守護進程的規(guī)則以及容器,服務和網(wǎng)絡。在Docker 17.06及更高版本中,您可以將規(guī)則添加到名為的新表中DOCKER-USER,并且這些規(guī)則將在 Docker 自動創(chuàng)建任何規(guī)則之前加載。如果您需要預先填充iptablesDocker 運行之前需要到位的規(guī)則,這會非常有用。

相關信息

  • 使用網(wǎng)絡命令

  • 開始使用多主機網(wǎng)絡

  • 在容器中管理數(shù)據(jù)

  • Docker機器概述

  • Docker群集概述

  • 調(diào)查LibNetwork項目

網(wǎng)絡,網(wǎng)絡,iptables,用戶定義的網(wǎng)絡,網(wǎng)橋,防火墻,端口

?? ??: ?? ??: