docker不虚拟化内核,只能宿主机的内核,网络模式都是使用Linux本身的功能;ie只能被windows的内核驱动,所以docker的selenium相关的镜像没有ie相关的;docker是在Linux基础上发展起来的,不支持使用windows内核的所有程序和应用

1、selenium的grid模式:

NodeChrome:命令行模式

NodeChromeDebug:图形界面,装一个vnc客户端就可以看到图开界面,看到启动的过程变化

1)启动hub

docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

(1)以上-e 配置的参数都是标准的官配

2)启动node

docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium

(1)NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6  代表启动6个chrome

2、镜像制作:

两种方式 :

第一种方式:缺点:1)不知道改变了镜像具体的内容  2)新制作的镜像会越来越大,因为联合文件系统的原因

(1)在一个已经运行好的容器上直接制作镜像利用docker commit命令:

docker commit myjenkins gaofeijenkins:3.1.0   (docker commit 旧容器名称 新的镜像名称和版本)

第二种方式:dockerfile,以编程的方式进行镜像制作

(1)Dockerfile是一个用来构建镜像的文本文件,使用vim Dockerfile指令查看Dockerfile的内容

From centos  (继承centos这个基础镜像)

ADD entrypoint.sh /root  (将entrypoint.sh这个脚本放到镜像中的root目录下)

RUN yum install -y git (安装git)

RUM yum install -y vim (安装vim)

ENTRYPOINT ["/bin/bash","/root/entrypoint.sh"] (指定容器启动时的启动脚本)

说明:entrypoint.sh脚本中可以写一个Ping百度的内容:ping www.baidu.com (ping百度的目的是永不结束,这样容器就能一直运行下去)

(2)在 Dockerfile 文件的存放目录下执行docker build命令:docker build -t myimage .   (.代表当前目录)

执行完docker build命令后可以在日志中看到制作镜像的过程:

1)启一个临时容器,

2)在第1)步骤中的临时容器执行Dockerfile中的每一个指令(以上蓝色部分)

3)删除临时的容器

4)再使用docker commit制作一个镜像

联合文件系统:(演进过程:aufs->device mapper->overlayFS->overlayFS2f)

联合文件系统的原理不详述,因为联合文件系统的原因Dockerfile文件中的命令不能写成多行,Dockerfile 的指令每执行一次都会在 docker 上新建一层目录,(每一层目录之间是隔离的,上层镜像永远记录了对下层的改变)所以过多无意义的层,会造成镜像膨胀过大:

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。

注意:Dockerfile文件中的指令中包含ENV指令设置环境变量,需要在RUN 指令中将ENV指令设置的环境变量写入/root/.bashrc文件中;因为通过ssh登陆容器的时候 ,环境加载是通过bashrc的,不走ENV的;

Dockerfile的常用命令:ENV、USER、WORKDIR、PORT、RUN、ADD

3、K8S=Kubernetes(k和s中间有8个字母)介绍:(容器编排工具)

容器编排能做些什么事情?1)容器编排就是容器集群的管理方案,用统一的视图和统一的接口操作所有容器,官方公布一个K8S可以操作5000台机器; 2)在容器中运行各种各样的任务;3)做到负载均衡

 

 

 

 

 

 

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐