容器化技术docker之高级配置

高级网络配置

说明

当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge(桥),可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。

同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。

当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头(例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。

查看网络信息

   

 # docker network ls

创建一个网桥

    # docker network create -d bridge 网桥名称

删除一个网桥

   

 # docker network rm 网桥名称

容器之前使用网络通信    # 1.查询当前网络配置

    - docker network ls

    NETWORK ID          NAME                DRIVER              SCOPE
    8e424e5936b7        bridge              bridge              local
    17d974db02da        docker_bridge       bridge              local
    d6c326e433f7        host                host                local

    # 2.创建桥接网络

    - docker network create -d bridge info

    [root@centos ~]# docker network create -d bridge info
    6e4aaebff79b1df43a064e0e8fdab08f52d64ce34db78dd5184ce7aaaf550a2f
    [root@centos ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    8e424e5936b7        bridge              bridge              local
    17d974db02da        docker_gwbridge     bridge              local
    d6c326e433f7        host                host                local
    6e4aaebff79b        info                bridge              localb

    # 3.启动容器指定使用网桥
    - docker run -d -p 8890:80 --name nginx001 --network info nginx 
    - docker run -d -p 8891:80 --name nginx002 --network info nginx 
        `注意:一旦指定网桥后--name指定名字就是主机名,多个容器指定在同一个网桥时,可以在任意一个容器中使用主机名与容器进行互通`

 

   [root@centos ~]# docker run -d -p 8890:80 --name nginx001 --network info nginx 
    c315bcc94e9ddaa36eb6c6f16ca51592b1ac8bf1ecfe9d8f01d892f3f10825fe
    [root@centos ~]# docker run -d -p 8891:80 --name nginx002 --network info nginx
    f8682db35dd7fb4395f90edb38df7cad71bbfaba71b6a4c6e2a3a525cb73c2a5
    [root@centos ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    f8682db35dd7        nginx               "/docker-entrypoint.…"   3 seconds ago       Up 2 seconds        0.0.0.0:8891->80/tcp   nginx002
    c315bcc94e9d        nginx               "/docker-entrypoint.…"   7 minutes ago       Up 7 minutes        0.0.0.0:8890->80/tcp   nginx001
    b63169d43792        mysql:5.7.19        "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        3306/tcp               mysql_mysql.1.s75qe5kkpwwttyf0wrjvd2cda
    [root@centos ~]# docker exec -it f8682db35dd7 /bin/bash
    root@f8682db35dd7:/# curl http://nginx001
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    .....

---

高级数据卷配置

- 作用: 数据卷(volume) 用来实现宿主机和容器之前进行数据共享
- 使用:
  - 数据卷必须在首次启动容器时使用-v参数指定 
  - 1.绝对路径方式数据    注意:使用这种方式会自动将容器中映射目录清空始终以绝对路径中内容为主
  - 2.别名方式数据卷      

说明

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

- 数据卷 可以在容器之间共享和重用
- 对 数据卷 的修改会立马生效
- 对 数据卷 的更新,不会影响镜像
- 数据卷 默认会一直存在,即使容器被删除

注意:数据卷 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。

    # 1.查看docker中数据卷
      

  docker volume ls

创建数据卷

 

   [root@centos ~]# docker volume create my-vol
    my-vol

查看数据卷

    [root@centos ~]# docker volume inspect my-vol   =====> 简化 docker inspect 容器id|容器名称、网桥名称、卷名    
    [
        {
            "CreatedAt": "2020-11-25T11:43:56+08:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
            "Name": "my-vol",
            "Options": {},
            "Scope": "local"
        }
    ]

挂载数据卷

 

   [root@centos ~]# docker run -d -P --name web  -v my-vol:/usr/share/nginx/html  nginx
    [root@centos ~]# docker inspect web
                    "Mounts": [
                {
                    "Type": "volume",
                    "Name": "my-vol",
                    "Source": "/var/lib/docker/volumes/my-vol/_data",
                    "Destination": "/usr/share/nginx/html",
                    "Driver": "local",
                    "Mode": "z",
                    "RW": true,
                    "Propagation": ""
                }
            ],

删除数据卷

 

   docker volume rm my-vol

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全干程序员demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值