docker的使用笔记

前言

  最近在负责一个基于airtest的游戏UI自动化压测项目,需求大概是达到单服同时在线1500人并在游戏中做主线大约30分钟。

  在完成项目的过程中,遇到了linux连接大量adb会导致连接不稳定,继而大量地断开连接。

  为了提高adb连接的稳定性,引入了docker。

  因此在这里记录配置docker时使用到的部分指令(虚拟机为centos系统)。

 

Docker的安装

  yum安装docker

yum -y install docker

  安装后重载下daemon

systemctl daemon-reload
service docker restart

 

Dockerfile的配置

  简单来说dockerfile是用来创建docker镜像的依赖文件,它的内容里的指令必须为大写,以下,便是一个创建自带adb/python/jdk的镜像的dockerfile。

  我们在大部分时间,最好是直接利用dockerfile将docker image环境直接配置好,只需要启动image就能直接执行我们的脚本

FROM centos:7.2.1511

# 安装依赖包,最好在yum -y isntall前加上rpm -rebuilddb以免出现报错
RUN yum -y install libffi-devel
RUN yum -y install zlib zlib-devel
RUN yum -y install make
RUN rpm -rebuilddb && yum -y install openssl-devel
RUN rpm -rebuilddb && yum -y install gcc unzip
RUN rpm -rebuilddb && yum -y install java-1.8.0-openjdk.x86_64
RUN rpm -rebuilddb && yum -y install ncurses-libs.i686 libgcc.i686

# 创建必要的文件夹
RUN mkdir /home/software
RUN mkdir /opt/python3
RUN mkdir /opt/adb

# 把文件复制到docker镜像中
ADD Python.tgz /home/software
ADD requirements.txt /home/software
ADD platform-tools_r23.0.1-linux.zip /opt/adb
ADD sdk-tools-linux-3859397.zip /opt/adb

# 安装python3.7.6
WORKDIR /home/software/Python-3.7.6
RUN ./configure --prefix=/opt/python3
RUN make && make install

# 创建python3、pip3的超链接
RUN ln -s /opt/python3/bin/python3 /usr/local/bin/python3
RUN ln -s /opt/python3/bin/pip3 /usr/local/bin/pip3

# 安装python3的某些库
RUN pip3 install -r /home/software/requirements.txt -i https://pypi.doubanio.com/simple

# add不会自动解压zip文件,因此我们需要手动解压
WORKDIR /opt/adb
RUN unzip platform-tools_r23.0.1-linux.zip
RUN unzip sdk-tools-linux-3859397.zip
RUN rm -rf platform-tools_r23.0.1-linux.zip
RUN rm -rf sdk-tools-linux-3859397.zip

# 设置adb环境
RUN echo "export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL" >> /etc/profile
RUN echo "export PATH=$PATH:/opt/adb/tools/bin" >> /etc/profile
RUN echo "export PATH=$PATH:/opt/adb/platform-tools" >> /etc/profile
RUN source /etc/profile

# 创建启动docker所依赖的文件夹
RUN mkdir /home/stress

# 设置工作文件夹类似于cd /home/stress
WORKDIR /home/stress

# 启动时执行的指令
CMD python3 test.py

 

Docker的常用指令

image的创建,首先我们要Dockerfile所有在文件夹下,然后执行以下指令

docker build -t [name:version] .
# 实例,创建一个名为test的docker image,版本为v0 docker build -t test:v0 .

image的启动

docker run -it -v[sourcepath:targetpath] --cpuset-cpus="0" [name:version]
# 实例一,启动镜像test:v0,其只占用编号为0和1的cpu,且将/opt/test.py映射到镜像的/home/stress中, # 启动时执行Dockerfile中预设的CMD docker run -it -v/opt/test.py:/home/stress/test.py --cpuset-cpus="0,1" test:v0
# 实例二,启动镜像test:v0,其只占用编号为0到4的cpu,且将/opt/test.py映射到镜像的/home/stress中, # 启动时不执行Dockerfile中预设的CMD docker run -it -v/opt/test.py:/home/stress/test.py --cpuset-cpus="0-4" test:v0 /bin/bash
# 实例三,后台启动镜像test:v0,其只占用编号为0到4的cpu,且将/opt/test.py映射到镜像的/home/stress中, # 启动时执行Dockerfile中预设的CMD docker run -it -d -v/opt/test.py:/home/stress/test.py --cpuset-cpus="0-4" test:v0

docker查看当前正在运行的镜像

docker ps

docker查看历史运行的镜像

docker ps -a

docker进入正在运行的镜像

docker attach 镜像ID

docker查看所有镜像

docker images

docker删除镜像

docker rmi 镜像ID

docker删除所有历史运行的镜像

docker rm $(docker ps -a -q)

docker将镜像保存为新镜像,一般在对镜像内容有改动的情况下使用

docker commit 镜像ID [name:version]

# 实例,将镜像ID为342d13s0b的镜像保存为新镜像,名为test:v1
docker commit 342d13s0b test:v1

docker镜像保存到本地,一般用来转移镜像到别的虚拟机

docker save [name:version]>[filename]

# 实例,将test:v1保存到本地,文件名为test.rar(通常用.rar)
docker save test:v1>test.rar 

docker从本地镜像文件中导入镜像

docker load<[filename]
# 实例,从本地导入镜像test.rar
docker load<test.rar

 

posted @ 2020-03-16 21:13  鸽男  阅读(147)  评论(0编辑  收藏  举报