打造一个好用的测试容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 打造一个好用的测试容器

背景


目前团队中的硬件资源总是挪来挪去,我在上面部署的测试虚机总是会被清理,重新搭建又很麻烦,要安装一堆的测试工具。为了彻底解决这个问题,我计划将打造一个测试容器,在需要的时候直接 docker run 就行了,几秒搞定测试机器。


需要明确的


  1. 测试机容器需要能够上网,本次通过在 host 配置代理,容器内部通过 host 的代理访问公网。
  2. 测试机使用 docker bridge 网络,所以需要 host 能够访问测试环境。
  3. 源镜像已经安装 python3、修改好镜像源(这些操作也可以在 Dockerfile 中做)。


Dockerfile


提前将需要用到的文件(jdk-8u311-linux-x64.tar.gzShanghai)拷贝到 Dockerfile 路径下。


Shanghai 的来源:cp /etc/localtime Shanghai

Shanghai 的用处:为了让容器和宿主机时区信息一致。


FROM py3:v1
MAINTAINER phyger
ADD Shanghai /etc/localtime
ENV http_proxy=http://172.17.0.1:8888
ENV https_proxy=http://172.17.0.1:8888
RUN yum install openssh-server -y && \
    yum provides sshd && \
    yum install git -y && \
    yum install passwd -y && \
    yum install wget -y && \
    mkdir /usr/java && cd /usr/java && \
    sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \
    ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \
    ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \
    ssh-keygen -t dsa -P "" -f /etc/ssh/ssh_host_dsa_key && \
    ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \
    echo "root:admin" | chpasswd
ADD jdk-8u311-linux-x64.tar.gz /usr/java/
RUN cd /usr/java/ && cp -pr jdk1.8.0_311 default
ENV JAVA_HOME=/usr/java/jdk1.8.0_311
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
EXPOSE 22
CMD ["-D"]
ENTRYPOINT ["/usr/sbin/sshd"]
复制代码


为了让我们的容器具备 ssh 功能,我们的 ENTRYPOINT 使用 sshd 启动。同时我们在 Dockerfile 中安装了很多测试容器需要的软件和 JDK、生成了秘钥、打开了 root 用户登录、设置了环境变量。


构建镜像


docker build -t py3:v2 .


网络异常,图片无法展示
|


网络异常,图片无法展示
|


ssh 登录测试


启动容器:


docker run -d --name py3 py3:v2

修改登录密码:


[root@x86build lifei]# docker exec -it bf40806f8f6e bash
[root@bf40806f8f6e /]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
复制代码


修改完成退出容器!


查看容器地址:


网络异常,图片无法展示
|


登录:


[root@x86build lifei]# ssh root@172.17.0.10
root@172.17.0.10's password:
Last login: Wed Nov 10 10:02:15 2021 from 172.17.0.1
[root@bf40806f8f6e /]#
复制代码


登录成功!


接下来我们就可以将测试机接入 Jenkins 进行测试工作了。

相关文章
|
26天前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
|
6月前
|
运维 Kubernetes 测试技术
容器技术:优化软件测试流程的利器
本文介绍了容器技术的概念、优势和历史发展,对比了容器与虚拟机的区别,并提及了Docker和Kubernetes等常见容器技术。容器作为轻量级虚拟化工具,提供高效、灵活的应用部署方式,广泛应用于软件开发、云计算和微服务架构。随着技术演进,容器将在边缘计算、人工智能等领域发挥更大作用,推动行业变革。
|
3月前
|
运维 Kubernetes 监控
|
4月前
|
Java 测试技术 数据库
单元测试问题之LoginServiceImpl以避免对IpUtil的依赖问题如何解决
单元测试问题之LoginServiceImpl以避免对IpUtil的依赖问题如何解决
|
3月前
|
测试技术 持续交付 数据库
容器镜像解析问题之区分单元测试和集成测试如何解决
容器镜像解析问题之区分单元测试和集成测试如何解决
18 0
|
11月前
|
Kubernetes 监控 测试技术
阿里云容器计算服务ACS功能测试
阿里云容器计算服务ACS功能测试,结合实际测试过程,总结一些使用经验。
阿里云容器计算服务ACS功能测试
|
6月前
|
安全 测试技术 持续交付
Docker和容器编排工具的自动化测试:构建可靠的容器化应用
容器化应用程序在现代软件开发中越来越受欢迎,而Docker和容器编排工具如Kubernetes、Docker Compose等的自动化测试是确保应用程序的可靠性和稳定性的关键。本文将深入探讨如何使用自动化测试来验证和验证Docker容器化应用程序,提供丰富的示例代码和详细的指南,以帮助您构建更可靠的容器化应用。
|
运维 网络协议 测试技术
软件测试|docker ps命令 管理和监视容器的利器
软件测试|docker ps命令 管理和监视容器的利器
|
云安全 存储 Kubernetes
国内首家通过赛可达容器安全测试!阿里云容器安全图谱详解
国内首家通过赛可达容器安全测试!阿里云容器安全图谱详解
246 0
|
监控 测试技术 程序员
732.【chatGTP】测试工作人员如何使用容器云持续集成,持续部署?
732.【chatGTP】测试工作人员如何使用容器云持续集成,持续部署?
143 0