DOCKER
docker run创建镜像时
1)检查本地是狗存在指定的惊像
2)利用镜像创建并启动一个容器
3)分配一个文件系统给容器,在只读的镜像曾外改在一层可读可写层
4)从宿主机配置的网桥接口中桥接一个虚拟机接口到容器中;
5)分配一个地址池中的ip地址给容器;
6)执行用户指定的应用程序,执行完毕后同期被终止运行
镜像堆叠而成
docker ps -a 查看q
docker ps -q 只查看docker id号
docker run --name c3 -it --rm centos:7 bash
kill -9 1
docker ps -a -q | grep -v $(docker ps -q)
docker rm $(docker ps -a -q | grep -v $(docker ps -a)) #不加-f 删除不在运行容器
run [--name 容器名] 【--rm】 镜像:标签 [启动容器的命令] 没有命令使用镜像自带的命令
run -P 宿主机端口:容器端口 #指定端口映射
run -p #使用随机端口映射从32768开始
docker使用linux桥接,在宿主机虚拟的一个docker容器网桥,docker启动一个容器时会根据docker网桥的网段分配给容器的一个ip地址,称container-ip
docker run -d --name test1 -P nginx 随机端口(从32768开始)
docker run -d --name test2 -p nainx 43000:80 ngixn 指定映射端口
docker logs 日志名
主进程日志
容器的网络模式:
host:容器将不会虚拟出自己的网卡,配置自己的ip等,而是使用宿主机上的ip和端口。
container:创建的容器不会创建自己的网卡,配置自己的ip,而是和一个指定的容器共享ip,端口范围
none:该模式关闭了容器的网络功能
bridge 默认为该模式,此模式会为每个容器分配,设置ip等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat表配置与宿主机通信
自定义网络
docker run 创建docker容器时
启动时--net或者 --network选项指定容器的网络模式
做container模式
docker inspect -f '{{.State.Pid}}' 66b62b415b2d
docker 网络模式
bridge 默认网络模式 每个容器都有独立的网络命名空间namespace,又独立的ip,端口范围(容器端口不能一样),路由,iptables规则
bridge 省略,或 --network=bridge
hosts 容器和宿主机共享网络namespace,容器和宿主机使用同一个ip,端口范围(端口不能一样)等
--network=host
container 与指定容器共享网络namespace,两个容器使用同一个ip,端口范围(两个容器端口不能一样)等
--network=container
none 每个容器都有独立的网络那么space,但是容器没网卡,ip,端口等,只有lo网卡
---network=none
自定义网络 docker network create --subnet=新ip网端 --opt “com.docker.network.bridge.name”="docker1"(指定设备名称)再指定新网络模式名称
docker run --network=新网络模式名称 --ip 自定义ip 镜像:标签 【启动命令】
docker run --itd --network=bridge --ip 172.17.0.100 soscscs/myapp:v1
容器容器之间共享数据
宿主机与容器目录共享
docker run -itd --name c3 -v /var/www/:/test soscscs/myapp:v1
数据卷容器实现共享
容器互联(使用centos镜像)
创建并运行原容器取名web1
docker run -itd --name c3 --link(实现两个容器互联) c1:mylove soscscs/myapp:v1
run -v 宿主机目录/文件:容器目录/文件 #将宿主机目录挂载到容器数据卷目录
run --volumes-from 数据卷容器名 #共享将数据卷容器的目录到本容器
run --link 目标容器名:连接别名 #可以实现新建的容器通过容器别名或连接别名与目标容器通信