栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker网络模式

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


#指定分配容器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 执行的命令

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

示例:
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 数据卷

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.

1、数据卷容器

//数据卷容器
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命令

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868348.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号