docker0网络
docker容器的 虚拟网关
loopback :回环网卡、TCP/IP网卡是否生效
virtual bridge:linux 自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
(示例:安装workstation (虚拟化平台)之后,会在网络适配器中会多出VMnet1 VMnet8 VMnet0)
docker 0 : 容器的网关,绑定物理网卡,负责做NAT 地址转换、端口映射
docker 0 本身也是一种容器
IP tables NAT做端口映射到ens33成为80 、81 、82
host模式 –net=host 容器和宿主机共享Network namespace。
container模式 –net=container:NAME_or_ID 多个容器共享一个Network namespace。
none模式 –net=none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式 –net=bridge (默认为该模式)
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
#指定分配容器IP地址
docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash
(以上会报错)
#自定义网络固定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
#暴露端口
-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
#在宿主机环境执行容器内命令
docker exec -it 容器ID /bin/bash -c ‘nginx’
docker exec 容器ID/容器name 执行的命令
示例:
docker run -itd --namecentos_3 --privileged=true centos /sbin/init
/sbin/init 内核启动时主动呼叫的第一个进程
可以使用docker inspect 容器ID
docker ps -a
docker exec -it 容器id /bin/bash
yum install httpd -y
systemctl status httpd
docker pull centos
//宿主机目录/var/www 挂载容器中的/data1
docker run -v /var/www:/data1 --name web1 -it centos /bin/bash
[root@202dd484fd62 /]# cd /data1/
[root@202dd484fd62 data1]# touch test123
//返回宿主机进行查看
[root@localhost ~]# ls /var/www/
应用场景:
原理:将容器内部的配置文件目录,挂载到宿主机指定目录下
作用:
① 修改配置文件例如,nginx.conf /usr/local/nginx/conf/nginx.conf —> /container_nginx/conf/nginx.conf
② 容器内部产生的日志,如何收集 将容器内部存方日志文件的目录挂载到宿主机指定目录下/container_nginx/log/access_log/access_log
③ 传入变量 挂载到宿主机 在宿主机上添加变量内容,将变量放入共享目录,在容器中/etc/profile 直接加载就可以
export xxdir=/data/data1/xx.
//数据卷容器
docker run --name web100 -v /data1 -v /data2 -it centos /bin/bash
//新容器挂载数据卷容器web100
docker run -it --volumes-from web100 --name db1 centos /bin/bash
原理:让两个容器实现数据共享
php ——》mysql 之间想要通讯 借助于socket 通讯文件
2、端口映射docker run -d -P httpd:centos
docker run -d -p 49280:80 httpd:centos
docker ps -a
6d461287c25d httpd:centos “/run.sh” 7 seconds ago Up 7 seconds 0.0.0.0:49280->80/tcp zen_swanson
3、容器互联(使用centos镜像)docker run -itd -P --name web1 centos /bin/bash //创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash //创建并运行容器取名web2,链接到web1和其通信
进web2 容器 ping web1
哨兵 ——》监控 redis
哨兵和redis包括哨兵和哨兵之间相互监控,会使用ping命令



