docker-网络模式

目录

 

一、docker网络

1、网络模式分类

2、命令

怎么把宿主机的文件传入到容器内部

进入容器没有systemctl命令解决方法

二、docker数据卷

挂载数据卷

数据卷容器

三、容器互联(使用centos镜像)

总结

docker主要是四种网络模式,

常用命令


一、docker网络

1、网络模式分类

Host :与宿主机共享网络名称空间/网络协议栈(通过共享宿主机的ip,使用不同的端口)

Container:多个容器之间共享一个network namespaces

None:自闭空间

Bridge:默认模式通过veth,对连接容器与dockero网桥,网桥分配给容器IP,同时docker0作为“局域网”内容器的网关,最后和宿主机网卡进行通讯

2、命令

查看网络模式列表
docker network ls

查看容器信息
docker inspect 容器ID

自定义网络固定ip(需要先定义network类型,其次name和ip不能重复)
docker network create --subnet=172.18.0.0/16 ly
docker run -itd --name test2 --net ly --ip 172.18.0.10 nginx:latest /bin/bash

#暴露端口
-p自定义端口(宿主机端口:容器内端口)
-P随机端口(-P 49153起始49153到65535)

暴露端口8081,相当于把容器的80端口映射到宿主机上的8081端口
docker run -itd -p 8081:80 nginx /bin/bash ( docker 0)
docker run -itd -P nginx /bin/bash

在宿主机环境执行容器内命令,进入这个容器并启动nginx  #-c:在宿主机环境执行容器内命令
docker exec -it容器ID /bin/ bash -c " nginx'
docker exec容器ID/容器name执行的命令

 

怎么把宿主机的文件传入到容器内部

docker cp 源文件路径 容器ID:目标文件路径
docker cp /opt/1.txt 容器ID:/home

进入容器没有systemctl命令解决方法

docker run -itd --name centos7 --privileged=true centos:7 /sbin/init
# /sbin/init 内核启动时主动呼叫的第一个进程
#可以使用docker inspect 容器ID

提权后(进入就可以使用systemctl了)
docker exec -it 容器id /bin/bash

yum install net-tools # 安装后可以使用ifconfig
yum install vim -y #安装后可以使用vim编辑器

二、docker数据卷

数据卷是一个提供容器使用的特殊目录

我们之前用过nfs,其实效果差不多,就是我们要多次修改docker内部的文件时候,我们多次使用exec进入改动,就相当于经常用ssh免密登录一样,存在很大的危险系数

使用场景:修改宿主机的配置文件,容器运行是需要的文件,需要运行的脚本,日志

挂载数据卷

格式:docker run -v 宿主机目录:挂载容器中的目录

#例
docker run -it -v /var/www/html:/data1 --name test01 centos:7 /bin/bash

#这时候另开一个终端,去宿主机创建一个abc
cd /var/www/html
touch abc

#再回到上一个终端查看/data1目录下就会多出一个abc

数据卷容器

原理:让两个容器实现数据共享

1.创建一个数据卷容器,指定名字为web100,两个卷:/data1 和 /data2
docker run -it --name web100 -v /data1 -v /data2 centos:7 /bin/bash

2.另起一个终端,将这个数据卷容器挂载到centos:7的容器上
docker run -it --name db1 --volumes-from web100 centos:7 /bin/bash
#此时 ls / 查看就会发现有 /data1 和 /data2 两个目录

三、容器互联(使用centos镜像)

docker run -itd -P --name web1 centos:7 /bin/bash		//创建并运行容器取名web1,端口号随机映射
docker exec -it 容器ID /bin/bash

#另起一个终端(link web1:web1 也可通信)
docker run -itd -P --name web2 --link web1:web2 centos:7 /bin/bash	//创建并运行容器取名web2,链接到web1和其通信
#--link:打通隧道
docker exec -it 容器ID /bin/bash

#两个容器都下载
yum -y install net-tools	//各自下载ifconfig的工具
验证:
进web2容器 ping web1

总结

docker主要是四种网络模式,

第一就是host,共用宿主机的ip,但是不同端口;

第二,是container,多个容器共用一个指定容器的ip;

第三,none就是啥也不是,什么都没有;

第四,就是bridge,就是通过veth,在新建一个容器的时候,会有一个docker0,在其上有一个端口,和容器上一个端口进行转换;

常用命令

查看网络模式:docker network ls

查看容器信息:docker inspect 容器id

自定义网络固定ip:docker network create --subnet=172.18.0.0/16 ly;先定义网段类型;

docker exec -itd --name test --net ly --ip 172.18.0.10 nginx:latest /bin/bash,指定ip,进入容器

暴露端口:docker run -itd -p 8081:80 nginx /bin/bash

在宿主机启动Nginx:docker exec -it容器ID /bin/ bash -c nginx

把宿主机文件传到容器:docker cp 源文件路径 容器ID:目标文件路径

容器内安装部分功能:docker run -itd --name centos7 --privileged=true centos:7 /sbin/init,先提提权;在安装部分功能yum install net-tools

挂载数据卷:docker run -v 宿主机目录:容器目录  --name 名称 容器  /bin/bash

两个容器共享:docker run -it --name web100 -v /data1 -v /data2 centos:7 /bin/bash (

docker run -it --name db1 --volumes-from web100 centos:7 /bin/bash)

容器互联:docker run -itd -P --name web1 centos:7 /bin/bash(做link;docker run -itd -P --name web2 --link web1:web2 centos:7 /bin/bash)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值