精华内容
下载资源
问答
  • docker网络

    2020-12-30 21:14:03
    docker network create 新建一下网络 docker network rm 移除一个网络 docker network inspect 查看一个网络 docker network connect 把容器从一个网络 链接 另一个网络 docker network disconnect 把容器从一个网络...
    论证同一个网桥(brige)下的docker容器网络是互通
    1.拉取一个镜像 
    docker pull tomcat:8.0-jre8
    2.创建一个网桥取名为tomcat
    docker network create tomcat
    3.分别创建端口映射为8081:8080和8082:8080的两个tomcat容器
    docker run -d --name=tomcat01 -p 8081:8080 --network tomcat tomcat:8.0-jre8
    docker run -d --name=tomcat02 -p 8082:8080 --network tomcat tomcat:8.0-jre8
    4.进入8082的容器内部访问8081的容器看是否可以访问到数据
    docker exec -it f01e4ce153e5b802cd3a255358ccfad79c0b0cc2cbe0b5b43e015f6762fe1aa6 /bin/bash
    curl http://172.17.0.6:8080/
    5.因为容器已经帮我做好了容器名字与容器内部的IP一对一映射 所以使用容器名字+端口的形式可以访问
    curl http://tomcat01:8080/
    论证 数据卷是否可以访问以及及时备份
    1.创建端口映射为8083:8080以及映射一个外部路径
    docker run -itd --restart=always --name=tomcat03 -p 8083:8080 --network=tomcat -v /home/tomcat/:/usr/local/tomcat/webapps/ tomcat:8.0-jre8
    2.在宿主机文件上创建一个文件
    cd /home/tomcat/
    mkdir test
    touch index.html
    vi index.html
    i
    <a>hello docker</a>
    esc
    :wq
    
    3.进入容器内部 映射的路由文件下是否存在相应的文件
    
    4.浏览器访问
    宿主机的id+端口8083/index.html
    
    
    docker网络常用命令
    docker network list 查看当前有哪些网络
    docker network create 新建一下网络
    docker network rm 移除一个网络
    docker network inspect 查看一个网络
    docker network connect 把容器从一个网络 链接 另一个网络
    docker network disconnect 把容器从一个网络断开

    docker的三种网络模式

     

    docker

     

    查看网络信息
    docker netwok inspect bridge

    docker容器与宿主机器通信

     

    dockder容器与宿主机的桥接网卡

     

    查看网络ip
    docker exec -it 容器id(容器名字) ip addr
    
    docker inspect --format '{{ .NetworkSettings.IPAddress }}' 容器的id
    
    docker exec -it 5ec67c53c61d ping 172.17.0.2  容器ping另一个容器的ip

     

    redis启动 持久化 参数--appendonly yes
    
    docker run --restart=always -p 6379:6379 -v /home/redis/data:/data --name redis -d redis:latest redis-server --appendonly yes
    
    查看持久化文件
    [root@localhost _data]# cd /home/redis/data
    [root@localhost _data]# ls
    appendonly.aof
    
    redis启动 配置文件
    docker run --restart=always -p 6379:6379 -v /home/redis/redis.conf:/etc/redis/redis.conf --name redis -d redis:latest redis-server /etc/redis/redis.conf
    
    redis启动 开始持久化和密码。。。。都可以在配置文件中  设置好  然后用上面的命令 启动 一键搞定

     

    展开全文
  • Docker 容器网络

    2021-07-22 14:20:35
    Docker 容器网络1. Docker 网络基本命令2. 网络模式简介2.1 host 模式2.2 Bridge 模式2.3 none 模式3.自定义网络3.1 自定义网络3.2 自定义网关、网段3.3 不同...docker network create 网络#新建网络 docker network c

    1. Docker 网络基本命令

    docker network ls#查看网络
    docker network inspect 网络#查看网络内部信息
    docker network create 网络#新建网络
    docker network connect 网络 容器#将容器加入到该网络中
    docker network disconnect 网络 容器#断开网络
    docker network rm 网络#移除网络(需要断开连接到该网络的所有容器)
    docker network prune 网络#移除未使用的网络
    
    

    2. 网络模式简介

        docker安装后会自动创建3种网络:bridge(默认)、host、none
    

    在这里插入图片描述

    2.1 host 模式

        容器和宿主机共享Network namespace
        容器和宿主机的端口不同
        外部主机与容器直接通信,网络缺少隔离性
    

    在这里插入图片描述

    2.2 Bridge 模式

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    IP递增且自动互补
    在这里插入图片描述

    2.3 none 模式

    Docker容器拥有自己的Network Namespace
    不为Docker容器进行任何网络配置(Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。)
    容器只有lo回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
    
    

    在这里插入图片描述

    3.自定义网络

    docker提供三种自定义网络驱动

    bridge(默认)
    overlay
    macvlan
    

    overlay,macvlan 用于创建跨主机网络

    3.1 自定义网络

    创建网络
    在这里插入图片描述
    创建容器并指定网络类型为自定义mynet1:同一网络中直接ping容器名称即可
    在这里插入图片描述
    ip addr show查看到添加了接口:IP为172.18.0.1,为其容器的网关
    在这里插入图片描述
    在这里插入图片描述
    IP递增且自动替补
    在这里插入图片描述

    3.2 自定义网关、网段

    创建网络:指定子网、网关

    docker network create --subnet 172.20.0.0/24 --gateway 172.20.0.1 net1
    --subnet:网段
    --gateway:网关
    
    

    创建容器,指定IP,网络类型

    docker run -it --name demo1 --ip 172.20.0.10 --network net1 busybox
    docker run -it --name demo2 --ip 172.20.0.20 --network net1 busybox
    --ip:指定容器ip
    --network:指定网络
    
    

    在这里插入图片描述

    3.3 不同网桥之间通信

    1.创建容器
    docker run -it --name demo3  busybox
    2.连接网络
    docker network connect net1 demo3
    
    

    在这里插入图片描述

    4.同一主机间通信、跨主机通信

    4.1 docker 容器通信

    ip通信
    容器名称通信
    

    4.1.1 joined 容器

    1.创建容器web_demo(webserver包含nginx服务)
    docker run -d --name web_demo webserver
    2.joined容器到busybox上(busybox包含shell及基本命令的小版本环境)
    docker run -it --network container:web_demo busybox
    
    

    在这里插入图片描述

    4.1.2 link 链接容器

    1.创建容器
    docker run -d --name demo nginx
    2.link容器
    docker run -it --link demo:nginx busybox
    #当释放掉demo,开启一个demo1占用172.17.0.2后
    #再开demo(IP为172.17.0.4),发现解析随之变化
    
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4.2 容器访问外网

    SNAT(地址转发:MASQUERADE)
    

    4.3 外网访问容器

    使用docker-proxy进程通信
    DNAT地址转发
    
    docker run -d --name demo1 -p 80:80 nginx
    -p:指定映射端口
    
    

    在这里插入图片描述
    内部访问
    在这里插入图片描述
    外部访问
    在这里插入图片描述

    4.3.1 测试

    删除DNAT规则
    iptables -t nat -D DOCKER 3
    删除后发现依然可以访问(docker-proxy进程存在的前提下)
    
    kill掉docker-proxy进程
    kill 进程id,发现依然可以访问
    (在地址转发正常的前提下)
    
    
    展开全文
  • docker网络管理

    2021-06-18 16:26:08
    文章目录docker网络主机层面解释docker网络说明查看docker网络bridge网络说明查看docker_bridge网络类型详细信息新建一个docker_bridge网络【也称自定义网桥】通过自定义的bridge网络创建一个容器host网络说明创建一...

    docker网络主机层面解释

    • Docker Daemon 会创建出一个名为 docker0 的虚拟网桥 ,用来连接宿主机与容器,或者连接不同的容器。

    • veth pair 是用于不同network namespace间进行通信的方式,veth pair 将一个 network namespace 数据发往另一个 network namespace 的 veth。

    • Docker 利用 veth pair 技术,在宿主机上创建了两个虚拟网络接口 veth0 和 veth1(veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会无条件地传输给另一方)。如下图所示
      在这里插入图片描述

    docker网络说明

    查看docker网络

    • 命令:docker network list查看主机上的docker网络类型
      默认使用的是bridge模式
    [root@ccx ~]# docker network list
    NETWORK ID          NAME                DRIVER              SCOPE
    e6ee3d8294cd        bridge              bridge              local
    7fbf0d1de452        host                host                local
    9ead5d6edce5        none                null                local
    [root@ccx ~]# 
    
    • 对上面网络进行简单说明
      • bridege:默认网络,在Docker网桥docker0上为容器创建新的网络栈
      • none: 不配置网络,用户可以稍后进入容器,自行配置
      • host:容器和宿主机共享Network namespace
      • container:容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace 【我上面没有这个网络,网上查资料看到有这个网络,了解一下】
      • 自定义网络:也就是bridege模式,只是能自定义网段罢了,下面有说明。

    bridge网络说明

    • 容器和容器之间是不能互相通信的,单如果主机能通外网,则每个容器都可以通外网。
    • bridge网络就相当于VMware中的nat模式,会自动获取IP,并把主机当交换机造。
    • Docker守护进程创建了一个虚拟以太网桥docker0,附加在其上的任何网卡之间都能自动转发数据包。默认情况下,守护进程会创建一对对等接口,将其中一个接口设置为容器的eth0接口,另一个接口放置在宿主机的命名空间中,从而将宿主机上的所有容器都连接到这个内部网络上。同时,守护进程还会从网桥的私有地址空间中分配一个IP地址和子网给该容器。

    查看docker_bridge网络类型详细信息

    命令:docker network inspect bridge

    [root@ccx ~]# docker network inspect bridge 
    [
        {
            "Name": "bridge",
            "Id": "e6ee3d8294cdf0e33acc6f017917dbb9c3a0fb9e7e76ee9a29923b6af92a782a",
            "Created": "2021-06-18T15:28:23.482967747+08:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": [
                    {
                        "Subnet": "172.17.0.0/16",
                        "Gateway": "172.17.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Containers": {
                "305175003c1d3648da3efbe7afbb95574dce85042a4fb34bde9c40d90c1e3a48": {
                    "Name": "d1",
                    "EndpointID": "6e636282db32ad08c23cd7260a7ff98cd68fb471f7aea368cc237531be88bcce",
                    "MacAddress": "02:42:ac:11:00:02",
                    "IPv4Address": "172.17.0.2/16",
                    "IPv6Address": ""
                },
                "83817192b3ad981916fbd4a5233f6938ed39fadbe397e808ce6fe9cae2d3ef37": {
                    "Name": "db",
                    "EndpointID": "ffbac933c7a2af9073beda2836832a547811567396b3c43a074213bfb3c6b860",
                    "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": "1500"
            },
            "Labels": {}
        }
    ]
    [root@ccx ~]# 
    

    新建一个docker_bridge网络【也称自定义网桥】

    • 创建命令:docker network create -d 网络类型 --subnet=自定义网段/24 自定义网络名称
      如下:我创建一个10.1.0.0/24的bridge网段,名称为mynet
    [root@ccx ~]# docker network create -d bridge --subnet=10.1.0.0/24 mynet
    4c69134c1f738325131234723aa53411bc356fd6f903340cd50ccbb337cfa05f
    [root@ccx ~]# docker network list
    NETWORK ID          NAME                DRIVER              SCOPE
    e6ee3d8294cd        bridge              bridge              local
    7fbf0d1de452        host                host                local
    4c69134c1f73        mynet               bridge              local
    9ead5d6edce5        none                null                local
    [root@ccx ~]#
    [root@ccx ~]# docker network inspect mynet
    [
        {
            "Name": "mynet",
            "Id": "4c69134c1f738325131234723aa53411bc356fd6f903340cd50ccbb337cfa05f",
            "Created": "2021-06-18T16:45:59.696990876+08:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": {},
                "Config": [
                    {
                        "Subnet": "10.1.0.0/24"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    
    
    • 命令参数记不得不要紧,我们可以通过man查看参数这些的
    # 找到docker-network-create这行
    [root@ccx ~]# man -k docker | grep netwo
    docker-network-connect (1) - connect a container to a network
    docker-network-create (1) - create a new network
    docker-network-disconnect (1) - disconnect a container from a network
    docker-network-inspect (1) - inspect a network
    docker-network-ls (1) - list networks
    docker-network-rm (1) - remove one or more networks
    [root@ccx ~]# # 然后执行下面条命令
    [root@ccx ~]# man docker-network-create
    #下翻,其中有一行是 $ docker network create \ 这个开头,下面就有说明参数了
                  $ docker network create \
                    --driver=bridge \
                    --subnet=172.28.0.0/16 \
                    --ip-range=172.28.5.0/24 \
                    --gateway=172.28.5.254 \
                    br0
    

    通过自定义的bridge网络创建一个容器

    • 参数:--network=网络名称【docker network list查看】
      如:我通过上面我自己创建的网络mynet创建一个centos容器
      创建成功以后看到的ip就是自定义的网络ip了。
    [root@ccx ~]# docker run -dit --name=d2 --restart=always --network=mynet hub.c.163.com/library/centos
    8991f9ffe2cfe419de9aac2e48a3ac046d04b21b9d64c04dfb3431f154874748
    [root@ccx ~]# 
    [root@ccx ~]# docker inspect d2 | grep IPA
                "SecondaryIPAddresses": null,
                "IPAddress": "",
                        "IPAMConfig": null,
                        "IPAddress": "10.1.0.2",
    [root@ccx ~]# 
    

    host网络说明

    • docker的host网络是共享主机网络的, host没有自己的网络空间。

    • 该模式将禁用Docker容器的网络隔离。因为容器共享了宿主机的网络命名空间,容器和宿主机具有相同的IP地址172.17.119.96直接暴露在公共网络中。因此,你需要通过端口映射(port mapping)来进行协调。该模式比bridge模式更快(因为没有路由开销),但是它将容器直接暴露在公共网络中,是有安全隐患的。

    创建一个指定网络位host的容器

    • 因为这个host是共享的主机网络,所以也就没有自己创建docket_host网络的意义,直接使用即可。
    • 如,我使用host网络创建一个b1的容器,查看ip
      因为上面的centos镜像没有ipconfig命令,所以我使用了busybox镜像【这个镜像很小,但命令较全,适合做测试用,但需要注意的是这个镜像使用的cmd是 sh ,而非 bash了】
    [root@ccx ~]# docker images
    REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
    docker.io/busybox                 latest              69593048aa3a        10 days ago         1.24 MB
    docker.io/nginx                   latest              d1a364dc548d        3 weeks ago         133 MB
    hub.c.163.com/library/wordpress   latest              dccaeccfba36        3 years ago         406 MB
    hub.c.163.com/library/centos      latest              328edcd84f1b        3 years ago         193 MB
    hub.c.163.com/library/mysql       latest              9e64176cd8a2        4 years ago         407 MB
    [root@ccx ~]# docker run -dit --name=b1 --restart=always --network=host docker.io/busybox
    f2de84bfa8ed2f507d34ca3ace92e74637a02dcfbc6c890ab6a989da45471d5c
    [root@ccx ~]# docker exec -it b1 sh
    / # ifconfig
    # 下面内容太多了,所以我删了许多,只保留了现有ip的选项
    
    ens33     Link encap:Ethernet  HWaddr 00:0C:29:04:51:6B  
              inet addr:192.168.159.128  Bcast:192.168.159.255  Mask:255.255.255.0
              inet6 addr: fe80::1d92:633a:8803:17b2/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:31256 errors:0 dropped:0 overruns:0 frame:0
              TX packets:10374 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:30645011 (29.2 MiB)  TX bytes:1304944 (1.2 MiB)
    
    ens34     Link encap:Ethernet  HWaddr 00:0C:29:04:51:75  
              inet addr:192.168.159.129  Bcast:192.168.159.255  Mask:255.255.255.0
              inet6 addr: fe80::59c4:bb33:e5bb:ee6c/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1354 errors:0 dropped:0 overruns:0 frame:0
              TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:87936 (85.8 KiB)  TX bytes:7136 (6.9 KiB)
              
    # 下面是我主机上看到的ip信息
    [root@ccx ~]# ip a 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:04:51:6b brd ff:ff:ff:ff:ff:ff
        inet 192.168.159.128/24 brd 192.168.159.255 scope global noprefixroute dynamic ens33
           valid_lft 1087sec preferred_lft 1087sec
        inet6 fe80::1d92:633a:8803:17b2/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:04:51:75 brd ff:ff:ff:ff:ff:ff
        inet 192.168.159.129/24 brd 192.168.159.255 scope global noprefixroute dynamic ens34
           valid_lft 1602sec preferred_lft 1602sec
        inet6 fe80::59c4:bb33:e5bb:ee6c/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
        link/ether 02:42:c8:57:ce:6c brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 scope global docker0
           valid_lft forever preferred_lft forever
        inet6 fe80::42:c8ff:fe57:ce6c/64 scope link 
           valid_lft forever preferred_lft forever
    

    host模式应用

    • 这个可以直接用于nginx容器,这样我们访问主机ip,就相当于访问容器了。
    [root@ccx ~]# docker run -dit --name=web --restart=always --network=host docker.io/nginx
    ab8cc63f0c17e3049338f0a0224a9f0a0aa2b3293e1107698e101985f8d20b4e
    [root@ccx ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    ab8cc63f0c17        docker.io/nginx     "/docker-entrypoin..."   6 seconds ago       Up 6 seconds                            web
    [root@ccx ~]# 
    
    • 此时在浏览器中输入服务器ip就可以直接看到nginx中内容了
      如果输入主机ip打不开,去主机上关闭防火墙:systemctl stop firewalld
    Welcome to nginx!
    If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
    
    For online documentation and support please refer to nginx.org.
    Commercial support is available at nginx.com.
    
    Thank you for using nginx.
    

    container模式说明(一般缓存使用,在同一台机器访问比较快)

    • 我的这个主机上没有这个网络,这是我查资料看到的,可以了解一下。
    • 在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

    none网络说明

    • 这个模式没啥要说明的,主要用于测试使用,这个创建出来的容器没有任何IP,不能和主机互通。
    • 但可以进入容器,自行配置

    创建一个指定网络位none的容器

    这个过程应该没啥好说明的了,直接看下面代码内容吧

    [root@ccx ~]# docker run -it --name=c1 --restart=always --network=none docker.io/busybox
    / # 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:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    / # exit
    [root@ccx ~]# 
    
    

    查看容器ip的方法

    方式一

    • 第一种是进入容器使用命令查看
      如果容器是自带bash的,如centos系统,则流程如下:
      因为我下面这个centos镜像里面没有ip a这些命令,所以查看失败哈【这种情况只能通过方式2查看了】。
    [root@ccx ~]# docker ps
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS               NAMES
    83817192b3ad        hub.c.163.com/library/mysql    "docker-entrypoint..."   7 minutes ago       Up 7 minutes        3306/tcp            db
    305175003c1d        hub.c.163.com/library/centos   "/bin/bash"              46 minutes ago      Up 46 minutes                           d1
    [root@ccx ~]# docker attach d1
    [root@305175003c1d /]# ifconfig
    bash: ifconfig: command not found
    [root@305175003c1d /]# ip a 
    bash: ip: command not found
    [root@305175003c1d /]# ls
    anaconda-post.log  ccx  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
    bin                dev  home  lib64  media       opt  root  sbin  sys  usr
    [root@305175003c1d /]# 
    
    • 第二种是没有bash进程,需要新建bash进程,如mysql容器
      流程如下
    [root@ccx ~]# docker ps 
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS               NAMES
    83817192b3ad        hub.c.163.com/library/mysql    "docker-entrypoint..."   5 minutes ago       Up 5 minutes        3306/tcp            db
    305175003c1d        hub.c.163.com/library/centos   "/bin/bash"              44 minutes ago      Up 44 minutes                           d1
    [root@ccx ~]# docker exec - it db ip a 
    Error response from daemon: No such container: -
    [root@ccx ~]# docker exec -it db ip a 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    27: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
        link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.3/16 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::42:acff:fe11:3/64 scope link 
           valid_lft forever preferred_lft forever
    
    
    # 上面是直接把bash进程换成需要执行的命令了,也可以通过下面这样进入bash里面再执行命令
    
    [root@ccx ~]# docker exec -it db bash
    root@83817192b3ad:/# ip a 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    27: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
        link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.3/16 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::42:acff:fe11:3/64 scope link 
           valid_lft forever preferred_lft forever
    root@83817192b3ad:/# 
    

    方式二

    • 这种是通过底层代码的方式过滤出密码
      代码:docker inspect 容器名称 | grep ipaddress -i
    • 流程如下:
    [root@ccx ~]# docker ps
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS               NAMES
    83817192b3ad        hub.c.163.com/library/mysql    "docker-entrypoint..."   10 minutes ago      Up 10 minutes       3306/tcp            db
    305175003c1d        hub.c.163.com/library/centos   "/bin/bash"              49 minutes ago      Up 25 seconds                           d1
    [root@ccx ~]# docker inspect db | grep ipaddress -i
                "SecondaryIPAddresses": null,
                "IPAddress": "172.17.0.3",
                        "IPAddress": "172.17.0.3",
    [root@ccx ~]# docker inspect d1 | grep ipaddress -i
                "SecondaryIPAddresses": null,
                "IPAddress": "172.17.0.2",
                        "IPAddress": "172.17.0.2",
    [root@ccx ~]# 
    
    展开全文
  • Docker默认网络管理

    2021-02-20 20:51:49
    在进行Docker安装时,Docker就会自动创建三种网络。客户端可以通过网络管理指令进行查看,具体操作指令如下。 $ docker network ls ​ 上述指令用于列举Docker中的所有网络,执行后的效果如图1所示。 图1 Docker...

    在进行Docker安装时,Docker就会自动创建三种网络。客户端可以通过网络管理指令进行查看,具体操作指令如下。

    $ docker network ls

    ​ 上述指令用于列举Docker中的所有网络,执行后的效果如图1所示。
    在这里插入图片描述

    图1 Docker默认网络
    从图1可以看出,Docker中默认的三种网络分别为bridge、host和none,其中名为bridge的网络就是默认的bridge驱动网络,也是容器创建时默认的网络管理方式,配置后可以与宿主机通信从而实现与互联网通信功能,而host和none属于无网络,容器添加到这两个网络时不能与外界网络通信。

    下面通过一个示例来演示默认的bridge网络管理方式,其执行过程如下。

    (1)创建并启动容器。在终端窗口中执行如下指令。

    $ docker run -itd --name=networktest ubuntu

    上述指令在后台启动了一个镜像名称为ubuntu的容器,并为启动后的容器命名为networktest。

    (2)使用网络查看指令查看网络详情,具体操作指令如下。

    $ docker network inspect bridge

    上述指令用于核查名称为bridge的网络详情,需要指明网络名称或者网络ID,执行上述指令后,效果如图2所示。
    在这里插入图片描述从图2可以看出,执行上述指令后就会显示出bridge网络的所有详细信息,其中就包括了使用默认的bridge网络管理方式启动的名称为networktest的容器。

    需要注意的是,这里介绍的三种网络bridge、host和none都是在非集群环境下Docker提供的默认网络,而在Docker Swarm集群环境下,除了这三种默认网络外,Docker还提供了docker_gwbridge和ingress两种默认网络。

    小提示:

    在上一章中已经启动了多个容器,并且都是默认使用bridge网络进行管理的。为了不对本章节相关讲解和测试造成干扰,建议先将前面章节创建的容器全部移除。
    虽然Docker提供的默认网络的使用比较简单,但是为了保证各容器中应用的安全性,在实际开发中更推荐使用自定义的网络进行容器管理。

    在Docker中,可以自定义bridge网络、overlay网络,也可以创建network plugin(网络插件)或者远程网络以实现容器网络的完全定制和控制。接下来将分别针对这几种自定义网络进行讲解。

    1. Bridge networks(桥接网络)

    为了保证容器的安全性,我们可以使用基于bridge的驱动创建新的bridge网络,这种基于bridge驱动的自定义网络可以较好的实现容器隔离。

    ​ 需要说明的是,这种用户自定义的基于bridge驱动的网络对于单主机的小型网络环境管理是一个不错的选择,但是对于大型的网络环境管理(如集群)就需要考虑使用自定义overlay集群网络。

    1. Overlay network in swarm mode(Swarm集群中的覆盖网络)

    ​ 在Docker Swarm集群环境下可以创建基于overlay驱动的自定义网络。为了保证安全性,Swarm集群使自定义的overlay网络只适用于需要服务的群集中的节点,而不会对外部其他服务或者Docker主机开放。

    1. Custom network plugins(定制网络插件)

    ​ 如果前面几种自定义网络都无法满足需求时,就可以使用Docker提供的插件来自定义网络驱动插件。自定义网络插件会在Docker进程所在主机上作为另一个运行的进程。

    自定义网络驱动插件与其他插件遵循相同的限制和安装规则,所有插件都使用Docker提供的插件API,并且有一个包含安装、启动、停止和激活的生命周期。由于自定义网络插件使用较少,所以读者只需了解即可。
    上一节已经对Docker中几种常用的自定义网络进行了简单介绍,本小节将针对非集群环境下基于bridge驱动的自定义网络进行详细讲解。

    1. 创建自定义网络

    ​ 在Docker主机上可以使用docker network create指令来创建网络,具体操作指令如下。

    $ docker network create --driver bridge isolated_nw

    ​ 执行上述指令可以创建一个基于bridge驱动的名称为isolated_nw的网络。其中–driver(可简写为-d)用于指定网络驱动类型,isolated_nw就是新创建的网络名称。需要说明的是,–driver bridge可以省略,省略时Docker会默认使用基于bridge驱动来创建新的网络。

    ​ 创建完网络后,可以使用docker network ls指令查看创建的网络是否成功,效果如图1所示。
    在这里插入图片描述从图1可以看出,新创建的isolated_nw网络已经在列表中展示出来,这说明新的bridge网络创建成功。

    除docker network ls指令外,还可以使用docker network inspect指令查看新建网络的详细信息。

    1. 使用自定义网络启动容器

    自定义网络创建成功后,就可以使用该网络启动一个容器,具体操作指令如下。

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

    执行上述指令后,会创建一个名为nwtest的容器,指令中的–network参数指定了该容器的网络连接为自定义的isolated_nw。

    通过docker inspect nwtest指令可以查看启动后的容器详情,来核查其网络管理方式,效果如图2所示。
    在这里插入图片描述从图2可以看出,名为nwtest的容器使用的就是自定义的isolated_nw网络进行容器网络管理的。

    1. 为容器添加网络管理

    名为nwtest的容器使用的只有自定义的isolated_nw一种网络管理方式,我们还可以继续为该容器添加其他网络管理方式,具体操作指令如下。

    $ docker network connect bridge nwtest

    执行上述指令后,会为容器nwtest另添加一种默认的bridge网络管理方式。再次使用docker inspect nwtest指令查看该容器网络详情,效果如图3所示。
    在这里插入图片描述从图3可以看出,执行完为容器添加网络管理的指令后,容器nwtest就拥有了两种网络管理方式,分别为默认的bridge网络和自定义的isolated_nw网络。

    1. 断开容器网络连接

    ​ 容器既可以连接网络,也可以断开网络。这里以断开nwtest容器的自定义网络isolated_nw为例进行演示,断开网络连接的指令如下。

    $ docker network disconnect isolated_nw nwtest

    ​ 断开网络连接的指令与连接网络的指令类似,在使用时也需要指定网络名称和容器名称。

    小提示:

    一个容器可以有一到多个网络连接,当使用断开网络连接的指令将一个容器内的所有的网络连接方式全部断开后,虽然容器还在运行,但是容器内部的应用将无法被外界访问。

    1. 移除自定义网络

    ​ 当不再需要某个网络时,可以将该网络移除,但在移除网络之前,一定要先将所有与该网络连接的容器断开。移除自定义网络的指令如下。

    $ docker network rm isolated_nw

    ​ 执行上述指令后,就可以移除名称为isolated_nw的自定义网络。当网络移除成功后,会返回网络名称。为了验证网络是否移除成功,可以使用docker network ls指令列举所有网络进一步确认。

    展开全文
  • Docker网络1.Docker原生网络bridge模式host网络模式none...docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口。 bridge模式 默认执行 bridge模式下容器有一个公有ip,只有宿主机可
  • Docker-网络设置

    千次阅读 2018-08-16 17:08:46
    如果你之前有使用Docker的经验,你可能已经习惯了使用--link参数来实现容器互联。...新建网络 下面创建一个新的Docker网络 root@ubuntu:~# docker networker create -d bridge my-net -d参数指定Doc...
  • Docker网络

    2020-07-17 21:39:54
    目录Docker0link自定义网络网络连通 Docker0 我们每启动一个docker容器,docker就会给容器分配一个ip,只要安装了docker,就会有一个网卡docker0进行网络分配 可以用ip addr //查看容器内部地址 我们发现这个容器...
  • Docker - 网络 Link

    2020-04-25 09:22:03
    docker network create -d bridge mybridge 新建bridge docker network connect mybridge test将容器连接到 mybridge 网络docker run --network mybridge --name test -d busybox 使用自定的bridge网络创建容器...
  • Docker网络

    2019-08-04 16:46:21
    docker安装时会创建一个名为docker0的linux birdge,新建的容器会自动连接到这个接口 2.none模式,该模式禁用网络接口,仅保留本机回环接口 [root@server1 ~]# docker run -it --name vm1 --network none ubuntu...
  • 默认情况下,Compose会为我们的应用创建一个网络,服务的每个容器...查看docker网络命令 # 查看docker网络命令 docker network --help Usage: docker network COMMAND Manage networks Commands: connect Connect a
  • 实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建网络,提高Docker网络安全和通信.1.给自己的docker (Dcoker1.12GA)...
  • docker单机网络

    2018-01-10 00:00:00
    序言 主要总结的是在单个主机上的...docker默认网络 1 概述三种默认的网络 在docker安装之后,启动docker的服务,那么默认就会看到三个docker创建的网络:[root@docker-ce ~]# docker network lsNETWORK ID NAME
  • Docker Container网络

    2017-03-08 10:41:41
    原文 ...Docker目前支持4种网络模式,分别是bridge、host、container、none,Docker开发者可以根据自己的需求来确定最适合自己应用场景的网络模式。 从Docker Conta
  • Docker容器网络

    2019-09-30 10:39:15
    Docker容器的网络驱动有很多种方式,当安装docker engine后,docker会在每一个engine上面生成一个3种网络,通过命令可以看到是bridge,host和none,而docker官方推荐用户使用自己的自定义网络,所以在使用容器的时候...
  • Docker网络配置

    万次阅读 多人点赞 2019-08-20 23:05:34
    基本网络配置–docker网络模式 docker的镜像是令人称道的地方,但网络功能还是相对薄弱的部分。 docker安装后会自动创建3种网络:bridge、host、none Docker在启动时会开启一个虚拟网桥设备docker0,默认的地址...
  • Docker基础-20-网络-容器link关系和新建bridge网络.pdf
  • docker bridge网络

    千次阅读 2018-07-03 09:10:42
    docker网络常用命令 查看所有网络docker network ls 查看某个网络详情:docker network inspect 容器ID docker 4种网络模式 bridge模式,使用–net=bridge指定,默认设置。 host模式,使用–net=host...
  • docker原生网络

    2018-08-10 19:25:02
    docker自带的网络模式有bridge,none,host,container4种, docker network ls #查看docker网络 一、bridge模式 docker的默认模式,docker进程第一次启动会创建一个docker0虚拟网桥,此宿主机上启动的容器会...
  • 目录一、Docker原生网络1.桥接网络2.host网络3.none模式二、Docker自定义网络2.创建自定义网桥3.双网卡实现不同网段间通信三、Docker容器通信1.内部访问外部2.外部访问内部四、跨主机容器网络1.跨主机同网段容器通信...
  • docker网络的使用

    2018-12-25 10:13:54
    一、docker网络 1、docker网络原理  Docker本地网络创建是利用了linux系统上的网络命名空间和虚拟网络设备,在本地主机和容器你分别创建一个虚拟接口,并让他们彼此连通。 2、docker网络创建过程 (1)创建一对...
  • docker网络模式

    2020-04-27 14:41:33
    2.docker分为三种网络模式:bridge、host和none。 bridge为默认docker网络模式。该模式下每一个容器拥有自己的IP namespace,容器可以通过宿主机上面docker0网桥与别的容器、宿主机或者外部网络进行通信。此外我们...
  • docker容器网络配置

    2020-06-10 13:49:24
    docker网络 docker网络驱动主要有以下几种 bridge:默认的网络驱动程序。当您的应用程序在需要通信的独立容器中运行时,通常会使用网桥网络。 host:直接使用主机的网络。host 仅可用于Docker 17.06及更高版本上...
  • Docker 基本网络功能

    千次阅读 2018-05-30 16:30:35
      Docker 允许通过外部访问容器或...新建网络 连接容器 外部访问容器   容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。   当使用 -P 标记时,D...
  • DW & Docker网络

    2021-04-17 07:19:16
    DataWhale & Docker(网络) 学习大纲: 开源内容 Github开源地址 Docker — 从入门到实践 目录 DataWhale & Docker(网络) ...1.2.1新建网络 1.2.2连接容器 1.2.3Docker Com...
  • Docker网络配置 6 docker-proxy

    千次阅读 2020-05-04 16:21:28
    我们在上个章节 Docker网络配置 5 将容器与外部世界连接 首次提到docker-proxy作用是提供端口映射,以便外部可以访问容器内部,但其实是不准确的,因为同样是访问容器内部,不一定走docker-proxy。 开启docker-p.....
  • 关于不同主机间的容器网络互联,网络上的所有教程都是通过open vswitch等虚拟网桥方式实现的,但是最近本人发现可以直接通过配置网桥实现网络的互联,而不用安装配置open vswitch。在这里分享一下。实验环境: 宿...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,525
精华内容 6,610
关键字:

docker新建网络