运行中对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的冲突