docker 网络配置

docker run

docker run 网络相关参数,主要有:

--dns=[]           : 为容器设置自定义DNS,可以设置多个
--network="xxx" 
                      'bridge': 创建一个新的网络
                      'none': 不使用网络
                      'container:<name|id>': 重用其他容器的网络
                      'host': 使用容器宿主机的网络
                      '<network-name>|<network-id>': 使用预先创建的网络
--network-alias=[] : 为容器网络定义一个别名
--add-host=""      : 添加容器网络到 /etc/hosts (host:IP)
--mac-address=""   : 设置容器网络设备Mac地址
--ip=""            : 设置IPV4地址
--ip6=""           : 设置IPV6地址
--link-local-ip=[] : 设置多个容器的 link 地址,可以是IPV4 或 IPV6

–dns

 docker run -itd --dns ['8.8.8.8', '9.9.9.9'] --network=my-net busybox

–network

在容器启动时,将容器连接到 --network 指定的网络。

 docker run -itd --network=my-net busybox

注意:

  1. –network 指定的网络必须存在,否则会导致容器创建失败,并提示如下错误
docker: Error response from daemon: network net-hello not found.
ERRO[0002] error waiting for container: context canceled 

  1. –network 的位置,必须在镜像名称前面,否则报错
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "--network": executable file not found in $PATH: unknown.
ERRO[0003] error waiting for container: context canceled 

在 --network 基础上,可以进一步设置ip地址 --ip 或 --ip6 ,如下所示:

docker run -itd --network=my-net --ip=10.10.9.75 busybox
  • 使用bridge模式
    原理:

    该模式下,docker将为容器创建一对 veth 接口,一端在宿主机,并附加到默认的 bridge (通常名称位 docker0 ); 另一端则放到容器内部作为 loopback 接口。最后分配一个ip地址给容器,实现网络通信。

    • 这种模式下,容器依赖 bridge 实现和外部通信,多了一次转发,网络性能显然会受到影响。
    • 对网络性能敏感的应用,需要慎重评估在这种影响
    • 这种模式具有优秀的隔离性,也具有非常好的灵活性。可以实现复杂的集群组网。
    • 也是 docker 网络的默认模式。
  • 使用host模式

  这种模式下,容器拥有主机所有网络设备的使用权限,因为容器时直接使用host主机的网络协议栈。

  - 这种模式下网络拥有最好的性能
  - 容器对网络性能比较敏感的情况下,建议使用这种模式
  - 比如:负载均衡,高性能网络服务器
  
  • 使用 container 模式

     docker run -d --name redis example/redis --bind 127.0.0.1
     docker run --rm -it --network container:redis example/redis-cli -h 127.0.0.1
    
  • 使用 预定义网络

     docker network create -d bridge my-net
     docker run --network=my-net -itd --name=container3 busybox
    

–add-host

 docker run -it --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts
 

  172.17.0.22     09d03f76bf2c
  fe00::0         ip6-localnet
  ff00::0         ip6-mcastprefix
  ff02::1         ip6-allnodes
  ff02::2         ip6-allrouters
  127.0.0.1       localhost
  ::1	            localhost ip6-localhost ip6-loopback
  86.75.30.9      db-static

最后一行就是 通过 --add-host db-static:86.75.30.9 加入的

86.75.30.9      db-static
# docker  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×