Docker - 命令 - docker network
概述
- docker network 命令
背景
- newwork 是 docker 的一种资源
- 经常会使用
- 需要整理命令
1. 引入
概述
- docker run 时, 将容器端口映射到宿主机
场景
启动 容器 时, 经常会使用命令
- 将容器的某个端口暴露
- 并且映射到 host 的某个端口上
- 这样可以通过 host 的 ip 和 端口, 直接访问
这个可能是我们对 docker 网络最初的认识
端口查看
记得用 命令 查看端口是否被占用, 以免出现不必要的麻烦
命令
> netstat -utnlp
命令
# 注意 -p
> docker container run --name some-nginx -p 10000:80 -v website:/usr/share/nginx/html -d nginx
结果
- 容器启动成功
- host 的 10000 端口, 被映射到容器的 80 端口
- 可以用以下命令 来查看
> docker ps
> docker container port <container>
- 可以用以下命令 来查看
2. docker --link
概述
- 不对外暴露端口, 也可以让容器连接
场景
- 容器不想在 host 上暴露端口
- 容器希望与其他容器连接
准备
- 已经起来了一个容器, 比如之前的 some-nginx
命令
# 在 ubuntu 里, 将 some-nginx 映射为了 nginx
> docker container run --name ubuntu --link some-nginx:nginx -it ubuntu /bin/bash
结果
- 创建容器成功
- 尝试 ping nginx 或者 some-nginx 都能成功
- 如果没有 ping, ref 里有一个链接可以解决
其他
查看环境变量, 会发现很多 nginx 相关的变量
> env | grep -i 'nginx'
查看 hosts, 也会有
> cat /etc/hosts
对于这个 --link 原理的猜测
- 向系统写入 环境变量
- 向系统写入 hosts 文件
其实, 后面有个 url, 就是这么理解的
- 但是老实说, 我没看明白, 所以我暂时不敢下结论
问题
问题1: 如果两个容器需要互相 link, 怎么办?
- 问题
- 先启动的那个, 肯定没办法 link 后启动的
- 解决
- 生产中, 让不需要找其他服务器的组件先启动
- 尝试在启动后, 加入 link
- 貌似不可行
- 启动后直接修改 hosts 文件
- 通过某种方式推送, 让所有机器认识自己人
- 那 link 的意义, 其实不大
- 通过某种方式推送, 让所有机器认识自己人
- 问题
问题2: 容器的 宕机 和 重启, 是否会影响连接
- 这个还没试过
问题3: 是否还有其他方式, 管理 容器间 的网络交互
3. docker network 命令
ls
概述
- 查看网络连接
命令
> docker network ls
inspect
概述
- 查看网络连接详情
命令
> docker network inspect <network>
connect
概述
- 容器连接网络
命令
> docker network connect <network> <container>
disconnect
概述
- 断开网络连接
命令
# -f 表示强制
# 成功后可以通过 inspect 查看
> docker network disconnect [-f] <network> <container>
create
概述
- 创建网络
命令
# 不能重名
> docker network create <network>
rm
概述
- 删除网络连接
命令
> docker network rm <network>
prune
概述
- 删除没有使用的网络连接
- 删除前会有确认
- 删除没有使用的网络连接
命令
> docker network prune
ps
ref
- Docker 容器与容器云
- Docker 经典实例
- Docker 实战
- docker network
- 关于对docker run --link的理解
- Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决
虚拟化
- 服务器虚拟化
- 存储虚拟化
- 网络虚拟化
网络虚拟化
- 有想法的话, 可以去学学 ovs/ovn
linux 相关的防火墙
- linux 的防护机制
- iptables
- firewalld
- selinux
- cgroup
- 这些东西, 貌似并不好弄
- linux 的防护机制
后续
docker network 真正的原理
- docker 容器与容器云这本书里有写
- 网络
- 各种 network
- 容器
- sandbox
- endpoint
- 网络
- docker 容器与容器云这本书里有写
linux 网桥
- bridge 类型的网络, 都是 linux 网桥
- 有空可以找找资料
- Linux 虚拟网络设备详解之 Bridge 网桥
- 网桥的本质, 是 虚拟交换机
- 这玩意是个大课题, 一句两句搞不定了
- bridge 类型的网络, 都是 linux 网桥
Docker - 命令 - docker network的更多相关文章
- 掌握Docker命令-Docker for Web Developers(4)
1.管理镜像命令 获取镜像 docker push ubuntu:14:04 查看镜像列表 docker images 重命名image docker tag IMAGE-NAME NEW-IMAGE ...
- Docker - 命令 - docker volume
概述 docker volume 命令 背景 docker 容器的存储, 通常需要独立于镜像 docker volume 就是负责这块的命令 1. 写在 docker volume 之前 概述 doc ...
- Docker - 命令 - docker container
概述 整理 docker 容器的命令 1. 分类(25个) 查看 ls diff logs inspect port stats top 生命周期 pause prune create kill re ...
- Docker - 命令 - docker image
概述 docker 客户端操控 镜像 1. 分类 概述 1 简单对 命令 做一些分类 分类 查看 ls inspect history 与 dockerhub 交互 pull push 导出 & ...
- Docker 0x08: Docker 命令
目录 Docker 命令 run 与 start 区别 docker 进程相关命令 Restful API Docker 命令 docker命令容易混淆几个 run 与 start 区别 run: 会 ...
- 容器版jenkins安装并且实现使用宿主机docker命令,采用的是docker outside deocker,带jdk、添加maven、git
docker版jekins使用宿主机docker命令 docker版jekins安装,实现CI/CD,也就是实现在容器里面使用宿主机docker命令,这样方式为:docker outside deoc ...
- Docker学习のDocker的简单应用
一.常见基本docker命令 docker是在一个linux虚拟机上运行的(对于windows来说),打开Docker quickStart terminal,就连街上了docker的 daemon ...
- 【docker】docker network常用命令参数
1.帮助命令 docker network --help 2.查看docker默认三种网络 docker network ls 3.创建自定义网络,如果不指定,默认创建类型为bridge类型 dock ...
- Docker 命令(二)
Docker 入门 启动docker systemctl start docker 帮助命令 docker --help docker [Commands] --help 例:docker run ...
随机推荐
- 解决DFS Locations从Eclipse的Navigator中消失的问题
尝试了这篇博客https://blog.csdn.net/qq_40120951/article/details/85028976所说的解决办法,但对我没用. 最后是重新打开Map/Reduce解决的 ...
- [ZJOI2008] 生日聚会 - dp
共有\(n\)个男孩与\(m\)个女孩打算坐成一排.对于任意连续的一段,男孩与女孩的数目之差不超过 \(k\).求方案数. \(n,m \leq 150, k \leq 20\) Solution 设 ...
- 在npm上如何发布自己的包
环境需要:node和npm 然后在本地建一个文件夹作为你要发布的模块 然后在这个文件夹下打开cmd 执行:npm init 按照提示写对应的,或者先不写也可以,最后y 这时候在mcrm这个文件夹下就出 ...
- 并查集-D - 畅通工程
D - 畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通 ...
- 关于EasyUI DataGrid行编辑时嵌入时间控件
本人做一个名为“安徽中控”项目时,为快速开发基础数据增删改模块,遂采用EasyUIDatagrid将所有增删改查的操作都集中于表格中,并且所有增删改查操作都集中于泛型对象,从而不必为每个表写具体的增删 ...
- 逗号运算符与括号 - C语言
例1 int x; int a=(x=2),12;// 赋值优先级高于逗号,相当于a=x=2,12是多余的 printf("a=%d",a); 结果:a=2 例2 int x; i ...
- JS高级---沙箱
沙箱 沙箱: 环境, 黑盒, 在一个虚拟的环境中模拟真实世界, 做实验, 实验结果和真实世界的结果是一样, 但是不会影响真实世界 全局变量 var num=10; console.log(nu ...
- jdk8-》allMatch、anyMatch、max、min函数
allMatch函数: 检查是否匹配所有元素,只有全部符合才返回true boolean flag = list.stream().allMatch(obj->obj.length()>5 ...
- C#设置WebBrowser使用Edge内核
原文:C#设置WebBrowser使用Edge内核 1. 问题描述 用C#写了一个小工具, 需要显示网页上的内容, 但WebBrowser使用的是IE内核, 不能很好的展示网页 2. 解决方法 通过一 ...
- lua学习,笔者自用
标识符与关键字A:常量用全大写和下划线,eg: My_ACCOUNTB: 变量的第一个字母小写,eg: strNumberC: 全局变量第一个字母用小写g表示,eg: gMyAcountD: 函数名第 ...