6.docker基础网络

2022-04-06 分类:docker 阅读(313) 评论(0)

孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。

1.四种基础网络类型介绍

bridge  默认类型 NAT模式
host   host类型,使用宿主机网络,网络性能最高
container 容器类型。使用其他容器共用网络,k8s中使用
none   没有网络,上不了外网

2.bridge默认网络类型 NAT模式

#启动一个alpine容器
[root@docker02 ~]#  docker run -it alpine:latest 

##另开一个窗口查看这个容器的详细信息
[root@docker02 ~]# docker container inspect nostalgic_brown |grep -A2 Networks
            "Networks": {
                "bridge": {
                    "IPAMConfig": null, 

##上面是默认的,接下来我们指定一下网络类型
[root@docker02 ~]#  docker run -it --network bridge alpine:latest 
[root@docker02 ~]# docker container inspect objective_wu |grep -A2 Networks
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
###发现默认的网络类型是bridge,nat模式

3.host类型,使用宿主机网络,网络性能最高

##退出之前的容器,重新启动一个指定网络类型是host
[root@docker02 ~]#  docker run -it --network host alpine:latest 
[root@docker02 ~]# docker container inspect hardcore_burnell |grep -A2 Networks
            "Networks": {
                "host": {
                    "IPAMConfig": null,
##这时候的容器是跟宿主机共用一个网络,在容器里执行抓包命令的话就相当于在宿主机上执行。包括/etc/hosts文件内容也是一样的。这就是共 用网络的特点,但是如果宿主机把端口占用了,容器就不能用了,容器就需要指定端口了。否则容器肯定起不来,会提示端口被占用

4.container容器类型,使用其他容器共用网络,k8s中使用

#查看有哪些容器在运行。过滤下它的ip地址
[root@docker02 ~]#  docker inspect registry|grep -i ipadd

#启动一个新容器,使用container
[root@docker02 ~]#  docker run -it --network container:registry alpine:latest 
##也就是说它俩不能出现端口冲突,如果端口冲突肯定报错,后起的容器肯定起不来

5.none没有网络,上不了外网

[root@docker02 ~]#  docker run --network none -it alpine:latest

6.创建一个自定义网络

##docker network ls网络默认就可以查看
[root@docker02 ~]# docker network ls 
NETWORK ID     NAME      DRIVER    SCOPE
5af89b2fa9a8   bridge    bridge    local
c21ecb12d13f   host      host      local
9f7a85b48803   none      null      local
##k8s就是这三种网络

##我们用compose编排启动的容器,会自动创建一个网络然后再启动容器,尽到一个容器的目录,把容器停掉。它不止会把容器删掉,就连网络也会跟着一起删掉。
[root@docker01 ~]#  cd /opt/dockerfile/docker-compose/zabbix/ 
[root@docker01 /opt/dockerfile/docker-compose/zabbix]#docker-compose down 
再次查看网络,发现自动创建的网络没了

可以启动一遍观察一下,第一行就是创建网络docker-compose up -d

##可以看看它的属性
[root@docker01 ~]#  docker network inspect zabbix_default 

##创建自定义网络
[root@docker01 ~]# docker network create -d bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 sunfuyang
再执行docker network ls 可以看到多了一个名字叫sunfuyang的网络

##创建指定名字与网络的容器
[root@docker01 ~]# docker run -d --name web01 --network sunfuyang nginx:latest 
[root@docker01 ~]#  docker run -it --network sunfuyang alpine:latest 

##当使用同一个网络的时候,容器之间的通讯,用名字就可以了,就再也不用担心它的ip地址是多少了

评论已关闭

登录

忘记密码 ?

切换登录

注册

鲁ICP备2021019243号-1