Docker网络模式

前言

docker0网络
docker容器的 虚拟网关

loopback :回环网卡、TCP/IP网卡是否生效

virtual bridge:linux 自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
(示例:安装workstation (虚拟化平台)之后,会在网络适配器中会多出VMnet1 VMnet8 VMnet0)

docker 0 : 容器的网关,绑定物理网卡,负责做NAT 地址转换、端口映射
docker 0 本身也是一种容器

一、Docker网络模式

在这里插入图片描述

IP tables NAT做端口映射到ens33成为80 、81 、82

1 docker四种网络模式

host模式 –net=host 容器和宿主机共享Network namespace。
container模式 –net=container:NAME_or_ID 多个容器共享一个Network namespace。
none模式 –net=none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式 –net=bridge (默认为该模式)

2 docker自定义网络

(1)查看网络列表

docker network ls
在这里插入图片描述
在这里插入图片描述

[root@docker opt]# docker network create -d overlay portainer_vpc
kpwjcb8057lmns1cbxj866v6x
[root@docker opt]# docker network ls
NETWORK ID     NAME                        DRIVER    SCOPE
31fab7b89bb2   bridge                      bridge    local
59832900c2aa   docker_gwbridge             bridge    local
89b74e8f5221   host                        host      local
ykmh4ehc7c1p   ingress                     overlay   swarm
6666a7ead913   none                        null      local
kpwjcb8057lm   portainer_vpc               overlay   swarm

(2)查看容器信息(包含配置、环境、网关、挂载、cmd等等信息)

docker inspect 容器ID
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(3)指定分配容器IP地址

docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash
(以上会报错)
在这里插入图片描述

(4)自定义网络固定IP

docker network create --subnet=172.18.0.0/16 mynetwork
docker run -itd --name test2 --net mynetwork --ip 172.18.0.100 centos:latest /bin/bash
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)暴露端口

-port 自定义端口(手动设置端口) ( 宿主机端口:容器内端口)
-Port 随机端口 (-P 49153起始 49153到65535)

docker run -itd -p 123:80 nginx /bin/bash (docker 0)
在这里插入图片描述
在这里插入图片描述

docker run -itd -P --name nginx_2 nginx /bin/bash
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(6)在宿主机环境执行容器内命令

docker exec -it 容器ID /bin/bash -c ‘nginx’
docker exec 容器ID/容器name 执行的命令
在这里插入图片描述
在这里插入图片描述

二、将宿主机的文件传入到容器内部

1、linux 怎么复制

(1)cp 源文件路径 目标文件路径
docker cp /opt/abc 容器id:/opt/abc

三、特权模式

1、进入容器没有systemctl 命令解决:添加–privileged=true (指定此容器是否为特权容器),使用此参数,则不能用attach

示例:
docker run -itd --namecentos_3 --privileged=true centos /sbin/init
在这里插入图片描述

/sbin/init 内核启动时主动呼叫的第一个进程

可以使用docker inspect 容器IP

docker ps -a

docker exec -it 容器id /bin/bash
yum install httpd -y
systemctl status httpd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值