前言
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