關於Docker容器互聯的初步實踐

1、Docker容器之間的互聯

Docker如今已經成爲一種輕量級的虛擬化方案,在同一宿主機下,全部的容器均可以經過網橋進行互聯。若是以前有docker的使用經驗,可能已經習慣了使用--link來對容器進行互聯。隨着docker的逐步完善,強烈推薦你們使用網橋(bridge)來對容器進行互聯。docker

2、實踐過程

1.建立一個網絡my-net:json

[root@ChatDevOps ~]# docker network create my-net
71b42506de62797889372ea4a5270f905f79a19cf80e308119c02e529b89c94e
[root@ChatDevOps ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3dec5cbb852e        bridge              bridge              local
6dd6dcfc2f26        host                host                local
71b42506de62        my-net              bridge              local
4c142a02cd6b        none                null                local

2.在建立docker容器的時候就指定橋接網絡:ubuntu

[root@ChatDevOps docker]# docker create -it --name d1 --network my-net -p 8080:80 ubuntu:14.04
4776b65db566f370cad5da3a9354a12c7e4f9badab53647b7e30e1e8f343ae3d
[root@ChatDevOps docker]# docker start d1
d1

在該命令中,docker create也能夠用docker container create,兩者等價。--name指定了容器的名稱,--network指定了該容器的網絡名稱,橋接形式默認爲網橋,-p或--publish指定了映射的端口。若是在這一步指定的網絡沒有預先被建立,那麼這個容器時沒法正常啓動的。此時,能夠爲該容器建立網絡後再次啓動容器便可。bash

3.還能夠在運行一個docker容器的時候指定一個已經建立好的網絡:網絡

[root@ChatDevOps docker]# docker run -it --name d2 --network my-net --publish 8081:80 ubuntu:14.04 /bin/bash
root@07fd516911d0:/# ping d1
PING d1 (172.18.0.2) 56(84) bytes of data.
64 bytes from d1.my-net (172.18.0.2): icmp_seq=1 ttl=64 time=0.115 ms
root@4776b65db566:/# ping d2
PING d2 (172.18.0.3) 56(84) bytes of data.
64 bytes from d2.my-net (172.18.0.3): icmp_seq=1 ttl=64 time=0.062 ms

經過容器名稱便可ping通在同一網橋的容器。也能夠直接ping其IP。spa

3、總結

1.在docker安裝完成以後,docker容器有三個網絡,以下:3d

[root@ChatDevOps ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3dec5cbb852e        bridge              bridge              local
6dd6dcfc2f26        host                host                local
4c142a02cd6b        none                null                local

2.在同一網絡中的全部容器網絡都是互通的。
3.容器的網絡配置中的dns配置能夠在主機的/etc/docker/daemon.json文件進行配置,參照官方格式:code

相關文章
相關標籤/搜索