
背景
目前团队中的硬件资源总是挪来挪去,我在上面部署的测试虚机总是会被清理,重新搭建又很麻烦,要安装一堆的测试工具。为了彻底解决这个问题,我计划将打造一个测试容器,在需要的时候直接 docker run 就行了,几秒搞定测试机器。
需要明确的
- 测试机容器需要能够上网,本次通过在host 配置代理,容器内部通过host 的代理访问公网。
- 测试机使用docker bridge 网络,所以需要host 能够访问测试环境。
- 源镜像已经安装python3、修改好镜像源(这些操作也可以在Dockerfile 中做)。
Dockerfile
提前将需要用到的文件(
jdk-8u311-linux-x64.tar.gz、Shanghai)拷贝到 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 进行测试工作了。
完
 
 
                     
            
        













 
                    

 
                 
                    