Docker的基本使用及DockerFile的编写
Posted 程序员 二黑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker的基本使用及DockerFile的编写相关的知识,希望对你有一定的参考价值。
前言:
最近在准备面试,在复习到Docker相关内容时,想写一些东西分享给大家然后加深一下自己的印象,有了这篇随笔。
Docker的简介:
docker从文件系统、网络互连到进程隔离等等,极大的简化了容器的创建和维护,使得Docker技术比虚拟机技术更为便捷、快捷。
Docker的基本命令:
#查看docker 本地镜像
docker images
# 镜像下载 下载redis最后一个版本镜像
docker pull redis
# 删除本地镜像
docker rmi redis
# 强制删除本地镜像
docker rmi -f redis
# 创建一个名称为myredis的容器 使用的是reids:latest版本镜像
docker run --name mycentos -d centos:latest
--name 命名
-p 80:80 将端口映射出来通过主机ipv4地址:80 可以访问到容器内部
-v /data:/data 将主机目录/data下的内容映射到容器中/data中
-i -t 交互式创建容器,容器创建成功后直接进入容器中,可以进入容器的命令行模式
如:docker -it centos /bin/bash
-d 后台启动容器,启动一个守护进程
#启动一个容器
docker start centos
#重启一个容器
docker restart centos
#停止一个容器
docker stop centos
#进入容器
docker exec -i -t centos /bin/bash
#退出容器
exit
#查看正在运行的容器容器
docker ps
#查看所有创建了的容器
docker ps -a
#查看容器日志
docker logs redis
参数:
-f 跟踪日志输出
-t 显示时间戳
--tail 列出最新的xx条容器日志
#删除容器
docker rm centos
#强制删除容器
docker rm -f centos
DockerFile的编写:
在这里我用我以前写过的一个DockerFile文件来做解释。
下面是Jmeter-base
FROM openjdk:8-jre-slim# 引入java环境
LABEL maintainer='1056285392@qq.com'MAINTAINER baijiahei
ARG JMETER_VERSION=5.1.1#定义一个变量 jmeter版本RUN mkdir /jmeter# run为执行命令 创建jmeter目录
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone# 同步本地时间到容器中
WORKDIR jmeter# 设置工作目录
# 安装 JMeter
ADD ./apache-jmeter-5.1.1.tgz ./# 添加本地目录文件到镜像中并解压RUN apt-get update && apt-get install -y wget && apt-get install -y vim \\
&& wget -P /jmeter/apache-jmeter-$JMETER_VERSION/lib/ext https://repo.maven.apache.org/maven2/kg/apc/jmeter-plugins-extras-libs/1.4.0/jmeter-plugins-extras-libs-1.4.0.jar \\
&& wget -P /jmeter/apache-jmeter-$JMETER_VERSION/lib/ext https://repo.maven.apache.org/maven2/kg/apc/jmeter-plugins-standard/1.4.0/jmeter-plugins-standard-1.4.0.jar#安装一些插件
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VERSION/
ENV PATH $JMETER_HOME/bin:$PATH#设置环境变量
下面是Jmeter-slave
FROM congyiwei/jmeterbase
LABEL maintainer='1056285392@qq.com'
MAINTAINER baijiahei
EXPOSE 1099 50000# 声明暴露端口
ENV SSL_DISABLED true
# 配置环境变量 将ssl设置为true
WORKDIR $JMETER_HOME/bin/
ENTRYPOINT ./jmeter-server \\
-Dserver.rmi.localport=50000 \\
-Dserver_port=1099 \\
-Jserver.rmi.ssl.disable=$SSL_DISABLED \\
-Djava.rmi.server.hostname=$HOST_IP
# salve配置文件修改
CMD [ "./", "/jmeter/apache-jmeter-5.1.1/bin/jmeter-server.sh -Djava.rmi.server.hostname=$HOST_IP"]#容器启动后,启动server
master就不贴具体内容了,大概思路设置工作空间为jmeter目录,创建test_jmx、report、result等目录,在创建容器时挂在本地目录过去,并进入容器内,去手动指定执行的jmx文件、负载机地址等。
构建及上传:
首先我们准备好Dockerfile,进入dokcerfile所在目录中执行命令:
docker build -t jmeterbase:v1.0 .
代表使用当前目录下的Dockerfile文件构建一个名叫jmeterbase的镜像,版本号为v1.0, 最后面的 .
参数: -f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下)
-t 指定镜像的名字
最后面的 . 上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
在默认情况下,如果不额外指定 Dockerfile 的话,会将上下文目录(Context)下的名为Dockerfile 的文件作为 Dockerfile
上传:
1.注册docker hub账户
2.创建仓库
3.docker login
输入账户密码
登录成功后截图:
# 将生成的镜像打上tag,须要在镜像名称加上Docker hub用户docker tag jmeterbase congyiwei/jmeterbase
# 上传
docker push congyiwei/jmeterbase# 拉取镜像docker pull congyiwei/jmeterbase
上传成功后,可以在dockerhub中查看到:
下载后可以使用docker images查看:
资源分享
下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!
以上是关于Docker的基本使用及DockerFile的编写的主要内容,如果未能解决你的问题,请参考以下文章