运行中对container操作
- 后台运行(-d命令为后台运行,--name为定义名称 )

- 操作容器

- 也可以在外部直接使用容器内部的东西

- 指定容器的名称

- 查看容器的详细信息

- 先看dockers日志

- 修改容器名字

Dockerfile案例
运行ubuntu直接安装stress
使用 256内存,debug输出

指定超出容器内存的任务
![]()
Docker的网络
busybox是一个非常小的linux, 让它执行一个语句。

查看本机namespace
![]()
添加一个namespace

查看本机namespace默认是down的状态
变为up状态,显示为unknown
创建并查看link
![]()
添加veth-test1到test1的namespace![]()
添加并查看veth-test2

为test1和test2分配IP地址
link并启动
![]()
两个namespace可以ping通了
![]()
![]()
bridge网络
可以看到test2和本机的网卡有veth对

安装brctl
![]()
查看本机的veth

查看本机网卡,docker0下有这2个veth

容器通信
首先启动一个容器
![]()
再创建一个有—link的容器
![]()
此时,可以用test6直接访问test5,类似于访问主机名
![]()
端口映射
1.运行一个nginx容器
![]()
2.查看桥接网络状态
![]()
3.容器内可以访问,容器外访问不到
![]()

4.停止并删除容器

5.重新创建容器,并指定端口映射
![]()
6.外界可以访问了

网络的none和host
none网络:应用场景是安全性极高的情况
1.创建新的容器,使用none网络![]()
2.查看none网络状态
![]()
3.外界访问不了,只有进去,127.0.0.1可以访问

host网络:
1.创建新的容器,使用host网络
![]()
2.查看host网络
![]()
3.进入容器,查看网络
![]()
多容器部署和应用
应用:flask做web服务,redis做自增
1.停止并删除之前的容器,删除image
![]()
![]()
3.运行redis容器
![]()
4.编写app.py,做web服务,中文就先别写了

5.编写Dockerfile

6.构建image
![]()
7.运行容器,并设置环境变量REDIS_HOST
![]()
8.进入容器并查看环境变量
![]()
9.多次访问5000端口,实现自增,此时外界无法访问

10.停止并删除之前容器,重启容器,指定暴露的端口,外界可以访问了

![]()
多机器多容器通信
注意:多机的docker版本要一致
1.停止和删除之前的容器

2.将准备好的etcd分别放到2台机器的 /usr/local 下
3.2台机器,解压并进入目录
![]()
![]()
4.在第一台机器运行如下启动,在运行.txt中修改好粘贴进去
docker启动命令(node01)
/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.20.250:2379 --cluster-advertise=192.168.20.250:2375&
docker启动命令(node02)
/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.20.254:2379 --cluster-advertise=192.168.20.254:2375&
注意更改IP地址

5. 在第二台机器运行如下启动,在运行.txt中修改好粘贴进去

6.2台机器都查询集群健康状态

7.2台机器都停止docker
![]()
8.node01启动docker

8.node02启动docker

9.创建overlay网络
![]()
10.查看网络

11.查看分布式数据库etcd存储的数据

12.在node01创建容器并运行

13.在node02创建容器并运行,容器名字不能与node01的冲突
本文深入探讨Docker的网络配置与容器间通信机制,包括不同网络模式如bridge、none和host的特点与应用场景,以及如何通过端口映射、link和overlay网络实现容器内外的通信,特别关注多容器部署、应用实例与多机多容器通信。
2640

被折叠的 条评论
为什么被折叠?



