1. 概述

    1. docker network 命令
  2. 背景

    1. newwork 是 docker 的一种资源
    2. 经常会使用
      1. 需要整理命令

1. 引入

  1. 概述

    1. docker run 时, 将容器端口映射到宿主机
  2. 场景

    1. 启动 容器 时, 经常会使用命令

      1. 将容器的某个端口暴露
      2. 并且映射到 host 的某个端口上
      3. 这样可以通过 host 的 ip 和 端口, 直接访问
    2. 这个可能是我们对 docker 网络最初的认识

    3. 端口查看

      1. 记得用 命令 查看端口是否被占用, 以免出现不必要的麻烦

      2. 命令

        > netstat -utnlp
  3. 命令

    # 注意 -p
    > docker container run --name some-nginx -p 10000:80 -v website:/usr/share/nginx/html -d nginx
  4. 结果

    1. 容器启动成功
    2. host 的 10000 端口, 被映射到容器的 80 端口
      1. 可以用以下命令 来查看
        > docker ps
        > docker container port <container>

2. docker --link

  1. 概述

    1. 不对外暴露端口, 也可以让容器连接
  2. 场景

    1. 容器不想在 host 上暴露端口
    2. 容器希望与其他容器连接
  3. 准备

    1. 已经起来了一个容器, 比如之前的 some-nginx
  4. 命令

    # 在 ubuntu 里, 将 some-nginx 映射为了 nginx
    > docker container run --name ubuntu --link some-nginx:nginx -it ubuntu /bin/bash
  5. 结果

    1. 创建容器成功
    2. 尝试 ping nginx 或者 some-nginx 都能成功
      1. 如果没有 ping, ref 里有一个链接可以解决
  6. 其他

    1. 查看环境变量, 会发现很多 nginx 相关的变量

      > env | grep -i 'nginx'
    2. 查看 hosts, 也会有

      > cat /etc/hosts
    3. 对于这个 --link 原理的猜测

      1. 向系统写入 环境变量
      2. 向系统写入 hosts 文件
    4. 其实, 后面有个 url, 就是这么理解的

      1. 但是老实说, 我没看明白, 所以我暂时不敢下结论
  7. 问题

    1. 问题1: 如果两个容器需要互相 link, 怎么办?

      1. 问题

        1. 先启动的那个, 肯定没办法 link 后启动的
      2. 解决
        1. 生产中, 让不需要找其他服务器的组件先启动
        2. 尝试在启动后, 加入 link
          1. 貌似不可行
        3. 启动后直接修改 hosts 文件
          1. 通过某种方式推送, 让所有机器认识自己人

            1. 那 link 的意义, 其实不大
    2. 问题2: 容器的 宕机 和 重启, 是否会影响连接

      1. 这个还没试过
    3. 问题3: 是否还有其他方式, 管理 容器间 的网络交互

3. docker network 命令

  1. ls

    1. 概述

      1. 查看网络连接
    2. 命令

      > docker network ls
  2. inspect

    1. 概述

      1. 查看网络连接详情
    2. 命令

      > docker network inspect <network>
  3. connect

    1. 概述

      1. 容器连接网络
    2. 命令

      > docker network connect <network> <container>
  4. disconnect

    1. 概述

      1. 断开网络连接
    2. 命令

      # -f 表示强制
      # 成功后可以通过 inspect 查看
      > docker network disconnect [-f] <network> <container>
  5. create

    1. 概述

      1. 创建网络
    2. 命令

      # 不能重名
      > docker network create <network>
  6. rm

    1. 概述

      1. 删除网络连接
    2. 命令

      > docker network rm <network>
  7. prune

    1. 概述

      1. 删除没有使用的网络连接

        1. 删除前会有确认
    2. 命令

      > docker network prune

ps

  1. ref

    1. Docker 容器与容器云
    2. Docker 经典实例
    3. Docker 实战
    4. docker network
    5. 关于对docker run --link的理解
    6. Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决
  2. 虚拟化

    1. 服务器虚拟化
    2. 存储虚拟化
    3. 网络虚拟化
  3. 网络虚拟化

    1. 有想法的话, 可以去学学 ovs/ovn
  4. linux 相关的防火墙

    1. linux 的防护机制

      1. iptables
      2. firewalld
      3. selinux
      4. cgroup
    2. 这些东西, 貌似并不好弄
  5. 后续

    1. docker network 真正的原理

      1. docker 容器与容器云这本书里有写

        1. 网络

          1. 各种 network
        2. 容器
          1. sandbox
          2. endpoint
    2. linux 网桥

      1. bridge 类型的网络, 都是 linux 网桥

        1. 有空可以找找资料
        2. Linux 虚拟网络设备详解之 Bridge 网桥
      2. 网桥的本质, 是 虚拟交换机
        1. 这玩意是个大课题, 一句两句搞不定了

Docker - 命令 - docker network的更多相关文章

  1. 掌握Docker命令-Docker for Web Developers(4)

    1.管理镜像命令 获取镜像 docker push ubuntu:14:04 查看镜像列表 docker images 重命名image docker tag IMAGE-NAME NEW-IMAGE ...

  2. Docker - 命令 - docker volume

    概述 docker volume 命令 背景 docker 容器的存储, 通常需要独立于镜像 docker volume 就是负责这块的命令 1. 写在 docker volume 之前 概述 doc ...

  3. Docker - 命令 - docker container

    概述 整理 docker 容器的命令 1. 分类(25个) 查看 ls diff logs inspect port stats top 生命周期 pause prune create kill re ...

  4. Docker - 命令 - docker image

    概述 docker 客户端操控 镜像 1. 分类 概述 1 简单对 命令 做一些分类 分类 查看 ls inspect history 与 dockerhub 交互 pull push 导出 & ...

  5. Docker 0x08: Docker 命令

    目录 Docker 命令 run 与 start 区别 docker 进程相关命令 Restful API Docker 命令 docker命令容易混淆几个 run 与 start 区别 run: 会 ...

  6. 容器版jenkins安装并且实现使用宿主机docker命令,采用的是docker outside deocker,带jdk、添加maven、git

    docker版jekins使用宿主机docker命令 docker版jekins安装,实现CI/CD,也就是实现在容器里面使用宿主机docker命令,这样方式为:docker outside deoc ...

  7. Docker学习のDocker的简单应用

    一.常见基本docker命令 docker是在一个linux虚拟机上运行的(对于windows来说),打开Docker quickStart terminal,就连街上了docker的 daemon ...

  8. 【docker】docker network常用命令参数

    1.帮助命令 docker network --help 2.查看docker默认三种网络 docker network ls 3.创建自定义网络,如果不指定,默认创建类型为bridge类型 dock ...

  9. Docker 命令(二)

    Docker 入门 启动docker systemctl start docker 帮助命令 docker --help docker [Commands] --help   例:docker run ...

随机推荐

  1. 解决DFS Locations从Eclipse的Navigator中消失的问题

    尝试了这篇博客https://blog.csdn.net/qq_40120951/article/details/85028976所说的解决办法,但对我没用. 最后是重新打开Map/Reduce解决的 ...

  2. [ZJOI2008] 生日聚会 - dp

    共有\(n\)个男孩与\(m\)个女孩打算坐成一排.对于任意连续的一段,男孩与女孩的数目之差不超过 \(k\).求方案数. \(n,m \leq 150, k \leq 20\) Solution 设 ...

  3. 在npm上如何发布自己的包

    环境需要:node和npm 然后在本地建一个文件夹作为你要发布的模块 然后在这个文件夹下打开cmd 执行:npm init 按照提示写对应的,或者先不写也可以,最后y 这时候在mcrm这个文件夹下就出 ...

  4. 并查集-D - 畅通工程

    D - 畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通 ...

  5. 关于EasyUI DataGrid行编辑时嵌入时间控件

    本人做一个名为“安徽中控”项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必为每个表写具体的增删 ...

  6. 逗号运算符与括号 - C语言

    例1 int x; int a=(x=2),12;// 赋值优先级高于逗号,相当于a=x=2,12是多余的 printf("a=%d",a); 结果:a=2 例2 int x; i ...

  7. JS高级---沙箱

    沙箱 沙箱: 环境, 黑盒, 在一个虚拟的环境中模拟真实世界, 做实验, 实验结果和真实世界的结果是一样, 但是不会影响真实世界     全局变量 var num=10; console.log(nu ...

  8. jdk8-》allMatch、anyMatch、max、min函数

    allMatch函数: 检查是否匹配所有元素,只有全部符合才返回true boolean flag = list.stream().allMatch(obj->obj.length()>5 ...

  9. C#设置WebBrowser使用Edge内核

    原文:C#设置WebBrowser使用Edge内核 1. 问题描述 用C#写了一个小工具, 需要显示网页上的内容, 但WebBrowser使用的是IE内核, 不能很好的展示网页 2. 解决方法 通过一 ...

  10. lua学习,笔者自用

    标识符与关键字A:常量用全大写和下划线,eg: My_ACCOUNTB: 变量的第一个字母小写,eg: strNumberC: 全局变量第一个字母用小写g表示,eg: gMyAcountD: 函数名第 ...