首页 > 其他分享 >Docker Network命令

Docker Network命令

时间:2023-03-10 23:14:21浏览次数:58  
标签:容器 Network bridge -- 网络 命令 Docker docker network

列出所有网络 -- docker network ls

# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
3a7ff82cf61b   bridge    bridge    local
81ec257be06b   host      host      local
7d8e5912ccf5   none      null      local


# 网络模式简介
bridge:为每一个容器分配、设置 IP 等,并将容器连接到一个docker0虚拟网桥,默认为该模式。
host:容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。
none:容器有独立的 Network namespace,但并没有对其进行任何网络设置,如分配 veth pair 和网桥连接,IP 等。
container:新创建的容器不会创建自己的网卡和配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。

创建一个新的网络连接 -- docker network create

DRIVER指网络驱动,参考链接

# -d 选项指定DRIVER,如不指定默认bridge,最后是自定义网络名称。
docker network create -d bridge my-bridge
docker network create my-bridge                    # 默认bridge

# 通过docker network ls查看创建的新网络,同时通过ip a可以看到多了一张新网卡,即是刚创建的,类似于docker0

# 新建容器可直接使用--network选项加入该网络,同网络内容器可通过容器名称互相通信
docker run -tid --name test3 --network my-bridge busybox /bin/sh -c "while true;do sleep 3600;done"

# 注意:宿主机的 /etc/docker/daemon.json里别忘了设置DNS

删除一个或多个网络 -- docker network rm

# 语法
docker network rm NETWORK [NETWORK...]

# 示例,网络ID通过docker network ls查看
docker network rm 3a24 ca8d

# 如果通过某个自定义网络模式创建了容器,则该网络模式无法删除。

将已运行容器连接到网络 -- docker network connect

# 语法
docker network connect [OPTIONS] NETWORK CONTAINER

# 选项
--alias:为容器添加网络范围的别名
--ip:指定IP地址
--ip6:指定IPv6地址
--link:添加链接到另一个容器
--link-local-ip:添加容器的链接本地地址

# 示例,将test1、test2容器都添加至创建的my-bridge网络中
docker network connect my-bridge test1
docker network connect my-bridge test2
# 可以使用brctl show命令查看,同时两个容器可以互相通过容器名称建立连接了

断开容器的网络 -- docker network disconnect

# 容器必须运行才能将其与网络断开连接
# 语法
docker network disconnect [OPTIONS] NETWORK CONTAINER
-f:强制容器断开网络的连接

# 示例,把名字为test1的容器从默认bridge网络断开
docker network disconnect bridge test1

显示一个或多个网络的详细信息 -- docker network inspect

# 语法,网络名称通过docker network ls查看,使用名称或ID均可
docker network inspect NETWORK [NETWORK...]

删除所有未使用的网络 -- docker network prune

# 未使用的网络是不被任何容器引用的网络,有交互提示
docker network prune
-f:不要提示确认

端口映射

docker run的时候加入-p参数,格式为:宿主机端口:容器端口;例:-p 5000:5000

# 示例,启动一个nginx容器并将其80映射到本地80端口
docker run -d --name web -p 80:80 nginx

# docker ps命令里的PORTS列可以看到其映射关系
# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
8a3fa1531794   nginx     "/docker-entrypoint.…"   14 seconds ago   Up 11 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web

容器之间默认是如何通信和连接外网的?

安装docker后使用ip a命令可以看到本机多了一个docker0的网卡,每创建一个容器都会生成一张新的网卡。
通过brctl命令可以查看网桥关系,需要安装该命令。

yum -y install bridge-utils
brctl show

以下是创建了两个容器,可以看到这两张网卡都是连接到docker0的,通过docker0的转发实现通信,docker0在通过NAT到宿主机网卡从而连接外网。
image
但是通过这种默认的方式无法通过dns连接,因为容器的IP在创建时是不可知的,容器之间通过IP连接就没有保障。应该通过容器名称连建立连接。
以test1、test2两个容器为例:

# 通过link的方式将test1的网络链接到test2
docker run -tid --name test1 busybox /bin/sh -c "while true;do sleep 3600;done"
docker run -tid --name test2 --link test1 busybox /bin/sh -c "while true;do sleep 3600;done"

# 这样在test2中可以直接通过test1的名称建立连接,而无需通过IP
# docker exec -ti test2 /bin/sh
/ # ping test1
PING test1 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.132 ms

...

# 但是反之test1中不能连通test2,docker也不推荐使用这种方式

标签:容器,Network,bridge,--,网络,命令,Docker,docker,network
From: https://www.cnblogs.com/tandabao/p/17204921.html

相关文章

  • Docker安装RabbitMQ
    Docker安装RabbitMQ1、准备工作准备挂载目录创建/opt/rabbitmq目录,集中管理RabbitMQ信息。特别注意目录权限问题。因为容器内RabbitMQ是以rabbitmq用户启动的,有些......
  • Docker数据卷
    DockerDataVolume作用:用来实现容器中数据和宿主机中数据进行映射同步注意:数据卷使用必须在容器首次启动时设置数据卷的使用设置数据卷在dockerrun时使用-v选项,多个......
  • Docker常用命令
    docker从入门到实践参考文档https://docker-practice.github.io/zh-cn/dockr练习网站https://labs.play-with-docker.com/查看docker版本dockerversion或docker-v......
  • 查看命令帮助
    参考mandatorytolongoptionsaremandatorytoshortoptionstoo是什么意思?_百度知道(baidu.com)如何查看命令的帮助信息命令--help帮助信息中的符号及其含......
  • docker安装MySQL
    docker安装MySQL1、先安装docker略过。2、准备工作先准备配置目录和持久化目录,举个栗子:mkdir-p/opt/mysql/{conf,data}准备配置文件*.cnf,放到/opt/mysql/conf目......
  • Optimal ANN-SNN conversion for high-accuracy and ultra-low-latency spiking neura
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!PublishedasaconferencepaperatICLR2022 ABSTRACT脉冲神经网络(SNN)因其独特的低功耗属性和对神经形......
  • 1.solodworks草图镜像(1.使用镜像实体命令、2.快速镜像操作,3.左键➕右键技巧、4.回车
    1.镜像草图,使用镜像实体命令,正常操作如下 2.镜像草图快速操作,立即完成   ......
  • Docker容器共享磁盘
    需求:.NET程序需要监控一个FTP上的文件变化并进行操作,在linux上使用原生目录时,不管怎么切换后台运行,总是会在一段时间运行后死掉。方案:远程也不好debug,想了一下,干脆直接使......
  • linux命令--磁盘命令dd
    转载自:https://www.cnblogs.com/kongzhongqijing/articles/9049336.html============= 网上dd命令的文章有很多,这里只是自己做下简单的记录。dd命令介绍作用是用指......
  • 10分钟快速掌握分布式版本控制系统GIT命令集【形成知识体系篇】
    任务要求要求全部使用git命令实现1、创建本地仓库,项目名称为hniu_site2、在仓库下创建多级(目录)文件夹cn/hniu/班级名称(例如软件2108,cn/hniu/rj2108)3、在班级名称下新......