端午安康!Docker深度学习(三)

admin 2023年6月22日04:11:44评论27 views字数 3889阅读12分57秒阅读模式


声明

该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。 

滑至文末,参与端午活动抽奖!
  获取“searchall”下载链接!






一.Docker网络

当我们搭建靶场,或者使用靶场的时候最快捷的办法就是使用docker容器来搭建方便快捷。

1.docker网络命令

docker网络列表显示

docker network ls

端午安康!Docker深度学习(三)

Docker网络数据源

docker network inspect XXX网络名字

删除网络

docker network rn xxx网络名字

添加Docker网络

docker network add xxx

2.Docker网络模式

端午安康!Docker深度学习(三)

查看某个容器的网络模式

# 通过inspect获取容器信息,最后20行即为容器的网络模式信息docker inspect 容器ID | tail -n 20

端午安康!Docker深度学习(三)

Docker 服务默认会创建一个docker0网桥(其上有一个docker0内部接口),该桥接网络的名称为 docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。

Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥互相通信。

查看bridge网络的详细信息,并通过grep获取名称

docker network inspect bridge | grep name

端午安康!Docker深度学习(三)

可以看到其名称为docker0。

bridge模式

docker run的时候,没有指定—network的话,默认使用的网桥模式就是bridge

例如:启动tomcat容器,进入tomcat容器后,执行 ip addr,可以看到其网卡信息

1: lo ..................
容器内的网卡为 eth0@符号后面就是宿主机上对应的veth网卡的编号2827: eth0@if28 ...............................

在宿主机执行 ip addr 查看宿主机网卡信息

每个veth都有个编号:vethXXXXXX@符号后面对应就是容器内的eth0网卡编号27
28: vethXXXXXX@if27 ................

host模式

直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行 NAT 转换。

如果在 docker run 命令中同时使用了 —network host 和 -p端口映射,例如:

docker run -p 8082:8080 --network host centos

那么会出现一个警告:

WARNING: Published ports are discarded when using host network mode

因为此时已经使用了host模式,本身就是直接使用的宿主机的IP和端口,此时的-p端口映射就没有了意义,也不会生效,端口号还是会以主机端口号为主。

正确做法是:不再进行-p端口映射,或者改用bridge模式

none模式

禁用网络功能。

docker run -it --name alpine1 alpine /bin/sh
# 指定和 alpine1 容器共享网络docker run -it --netrowk container:alpine1 --name alpine2 alpine /bin/sh

此时使用 ip addr查看两台容器的网络,会发现两台容器的eth0网卡内的IP等信息完全相同。

如果关掉了alpine1容器,因为alpine2的网络使用alpine1共享网络,所以关掉alpin1后,alpine2的eth0网卡也随之消失了。

自定义网络

容器间的互联和通信以及端口映射。

容器 IP 变动时候可以通过服务名直接网络通信而不受影响。(类似Eureka,通过服务名直接互相通信,而不是写死IP地址)。

docker中还有一个 —link 进行容器网络互联,但是已经被标记为过时的,可能会在将来的版本中移除这个功能。推荐使用自定义网络替换link。

自定义桥接网络(自定义网络默认使用的是桥接网络 bridge)

1.新建自定义网络:

docker network create tomcat_network

2.查看网络列表

docker network ls

3.创建容器时,指定加入我们自定义的网络中

docker run -d -p 8081:8080 --network tomcat_network --name tomcat1 tomcat:8.5-jdk8-correttodocker run -d -p 8082:8080 --network tomcat_network --name tomcat2 tomcat:8.5-jdk8-corretto

此时进入tomcat1中,使用ping命令测试连接tomcat2容器名,发现可以正常连通

安装ifconfig命令yum install -y net-tools安装ip addr命令yum install -y iproute安装ping命令yum install -y iputils直接ping容器名,不需要ping IP地址ping tomcat2

二.Docker-compose容器编排

1.常用命令

需要在对应的docker-compose.yml文件所在目录下执行。

1、查看帮助:

docker-compose -h

2、创建并启动docker-compose服务

docker-compose up# 后台运行docker-compose up -d

3、停止并删除容器,网络,卷,镜像

docker-compose down

4、进入容器实例内部

docker-compose exec <yml里面的服务id> /bin/bash

5、展示当前docker-compose编排过的运行的所有容器

docker-compose ps

6、展示当前docker-compose编排过的容器进程

docker-compose top

7、查看容器输出日志

docker-compose log <yml里面的服务id>

8、检查配置

docker-compose config# 有问题才输出docker-compose config -q

9、重启服务

docker-compose restart

10、启动服务

docker-compose start

11、停止服务

docker-compose stop

2.Compose编排例子

# docker-compose文件版本号version: "3"
# 配置各个容器服务services: microService: image: springboot_docker:1.0 container_name: ms01 # 容器名称,如果不指定,会生成一个服务名加上前缀的容器名 ports: - "6001:6001" volumes: - /app/microService:/data networks: - springboot_network depends_on: # 配置该容器服务所依赖的容器服务 - redis - mysql
redis: image: redis:6.0.8 ports: - "6379:6379" volumes: - /app/redis/redis.conf:/etc/redis/redis.conf - /app/redis/data:data networks: - springboot_network command: redis-server /etc/redis/redis.conf
mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: '123456' MYSQL_ALLOW_EMPTY_PASSWORD: 'no' MYSQL_DATABASE: 'db_springboot' MYSQL_USER: 'springboot' MYSQL_PASSWORD: 'springboot' ports: - "3306:3306" volumes: - /app/mysql/db:/var/lib/mysql - /app/mysql/conf/my.cnf:/etc/my.cnf - /app/mysql/init:/docker-entrypoint-initdb.d networks: - springboot_network command: --default-authentication-plugin=mysql_native_password # 解决外部无法访问
networks: # 创建 springboot_network 网桥网络 springboot_network:

编写完成docker-compose.yml后,进行语法检查

# 进行语法检查docker-compose config -q

如果语法检查没有任何问题,进行创建,启动

docker-compose up -d

注:如有侵权请后台联系进行删除

觉得内容不错,请点一下"赞"和"在看"

今日互动

端午安康!Docker深度学习(三)

阅读公众号三篇文章并且"点赞+在看"即可参与活动

开奖日随机抽取一位粉丝宝贝送出渗透书籍!

活动截止6月22日中午12点

点击下方链接参与活动:

端午宠粉活动来啦!文章"点赞+在看"得奖品!!



端午安康!Docker深度学习(三)
点击上方公众号
端午安康!Docker深度学习(三)
关注我们
端午安康!Docker深度学习(三)








往期精彩

Frp多级内网代理

Redis的漏洞总结(建议收藏)

端午宠粉活动来啦!文章"点赞+在看"得奖品!!







1、公众号后台回复:搜索大法,获取searchall工具下载链接。

2、公众号后台回复:靶场,获取靶场工具网盘下载链接。

3、公众号后台回复:webshell,获取webshell下载链接。

原文始发于微信公众号(嗨嗨安全):端午安康!Docker深度学习(三)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月22日04:11:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   端午安康!Docker深度学习(三)https://cn-sec.com/archives/1826759.html

发表评论

匿名网友 填写信息