国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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é)概述 Docker 的默認(rèn)網(wǎng)絡(luò)行為,包括默認(rèn)創(chuàng)建的網(wǎng)絡(luò)類型以及如何創(chuàng)建自己的用戶定義網(wǎng)絡(luò)。它還介紹了在單個主機(jī)上或跨主機(jī)集群創(chuàng)建網(wǎng)絡(luò)所需的資源。

有關(guān) Docker 如何與iptables在 linux 主機(jī)上,請參見碼頭工人iptables...

默認(rèn)網(wǎng)絡(luò)

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

$ docker network ls

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

這三個網(wǎng)絡(luò)都構(gòu)建在 Docker 中。當(dāng)你運(yùn)行一個容器時,你可以使用該--network標(biāo)志來指定你的容器應(yīng)該連接到哪個網(wǎng)絡(luò)。

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

$ 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)絡(luò)增加了一個容器為特定容器的網(wǎng)絡(luò)棧。該容器缺少網(wǎng)絡(luò)接口。附著在這樣一個容器上,看著它的堆棧,你會看到:

$ 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:/#

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

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

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

默認(rèn)網(wǎng)橋

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

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

$ 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": {}   }]

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

$ docker run -itd --name=container1 busybox

3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c

$ docker run -itd --name=container2 busybox

94447ca479852d29aeddca75c28f7104df3c3196d7b6d83061879e339946805c

bridge啟動兩個容器后再次檢查網(wǎng)絡(luò)。這兩個busybox容器都連接到網(wǎng)絡(luò)。記下它們的 IP 地址,這與主機(jī)上的 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": {}    }]

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

您可以attach運(yùn)行container以查看容器內(nèi)網(wǎng)絡(luò)的外觀。您連接為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)絡(luò)連接。

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容器上的文件。這顯示容器識別的主機(jī)名和 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容器中分離并保持運(yùn)行,請使用鍵盤序列 CTRL-p CTRL-q。如果您愿意,請附加container2并重復(fù)上述命令。

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

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

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

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

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

橋梁網(wǎng)絡(luò)

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

$ 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)絡(luò)后,可以使用該docker run --network=<NETWORK>選項(xiàng)在其上啟動容器。

$ 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)絡(luò)中的容器必須駐留在同一個 Docker 主機(jī)上。網(wǎng)絡(luò)中的每個容器可以立即與網(wǎng)絡(luò)中的其他容器進(jìn)行通信。雖然,網(wǎng)絡(luò)本身將容器與外部網(wǎng)絡(luò)隔離開來。

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

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

docker_gwbridge網(wǎng)絡(luò)

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

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

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

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

$ 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)絡(luò)時,網(wǎng)絡(luò)始終存在。

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

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

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

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

$ 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ù)可以連接到覆蓋網(wǎng)絡(luò),而不是獨(dú)立的容器。有關(guān)群集的更多信息,請參閱 Docker 群集模式覆蓋網(wǎng)絡(luò)安全模型和將服務(wù)附加到覆蓋網(wǎng)絡(luò)。

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

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

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

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

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

如果您的需求未被上述任何網(wǎng)絡(luò)機(jī)制解決,您可以使用 Docker 的插件基礎(chǔ)結(jié)構(gòu)編寫自己的網(wǎng)絡(luò)驅(qū)動程序插件。該插件將作為運(yùn)行 Docker 守護(hù)進(jìn)程的主機(jī)上的單獨(dú)進(jìn)程運(yùn)行。使用網(wǎng)絡(luò)插件是一個高級主題。

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

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

$ docker network create --driver weave mynet

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

嵌入式DNS服務(wù)器

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

公開和發(fā)布端口

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

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

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

本示例將容器中的端口80發(fā)布到32768主機(jī)上的隨機(jī)高端口(在這種情況下)。該-d標(biāo)志將導(dǎo)致容器在后臺運(yùn)行,以便您可以發(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應(yīng)映射到主機(jī)上的端口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

使用帶有容器的代理服務(wù)器

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

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

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

配置Docker客戶端

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

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

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

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

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

變量

Dockerfile示例

碼頭運(yùn)行示例

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)絡(luò)之前,您可以使用 Docker --link功能來允許容器將另一個容器的名稱解析為IP地址,并且還允許它訪問鏈接容器的環(huán)境變量。在可能的情況下,您應(yīng)該避免使用遺留--link標(biāo)志。

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

Docker和iptables

Linux 主機(jī)使用調(diào)用的內(nèi)核模塊iptables來管理對網(wǎng)絡(luò)設(shè)備的訪問,包括路由,端口轉(zhuǎn)發(fā),網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)以及其他問題。iptables當(dāng)您啟動或停止發(fā)布端口的容器時,當(dāng)您創(chuàng)建或修改網(wǎng)絡(luò)或?qū)⑷萜鞲郊拥剿鼈兓蚱渌c網(wǎng)絡(luò)相關(guān)的操作時,Docker會修改規(guī)則。

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

通常,iptables規(guī)則由初始化腳本或守護(hù)程序進(jìn)程創(chuàng)建,例如firewalld。規(guī)則不會在系統(tǒng)重新啟動時持續(xù)存在,因此腳本或?qū)嵱贸绦虮仨氃谙到y(tǒng)引導(dǎo)時運(yùn)行,通常在運(yùn)行級別3或在網(wǎng)絡(luò)初始化之后運(yùn)行。請查閱您的Linux發(fā)行版的網(wǎng)絡(luò)文檔,以獲取有關(guān)使iptables規(guī)則持久化的適當(dāng)方式的建議。

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

相關(guān)信息

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

  • 開始使用多主機(jī)網(wǎng)絡(luò)

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

  • Docker機(jī)器概述

  • Docker群集概述

  • 調(diào)查LibNetwork項(xiàng)目

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

Previous article: Next article: