前言:

最近在准备面试,在复习到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的编写的更多相关文章

  1. Docker 与 K8S学习笔记(四)—— Dockerfile的编写

    在上一篇中我们简单介绍了Docker镜像的获取与使用,其中在镜像制作中提到在实际使用中一定要用Dockerfile方式去创建镜像而不要用docker commit方式,那么我们该如何编写Dockerf ...

  2. Docker学习笔记之常见 Dockerfile 使用技巧

    0x00 概述 在掌握 Dockerfile 的基本使用方法后,我们再来了解一些在开发中使用 Dockerfile 的技巧.这一小节的展现方式与之前的略有不同,其主要来自阅读收集和我自身在使用中的最佳 ...

  3. Docker学习笔记之通过 Dockerfile 创建镜像

    0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...

  4. Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像

    一般呢,docker构建镜像容器的方式有两种:一种是pull dockerhub仓库里面的镜像,一种是使用Dockerfile自定义构建镜像. 很多时候,公司要求的镜像并不一定符合dockerhub仓 ...

  5. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

  6. 『现学现忘』Docker基础 — 32、通过DockerFile的方式挂载数据卷

    目录 1.简单了解一下DockerFile 2.通过DockerFile的方式挂载数据卷 (1)创建DockerFile文件 (2)编辑Dockerfile文件 (3)构建Dokcer镜像 (4)启动 ...

  7. docker学习笔记18:Dockerfile 指令 VOLUME 介绍

    在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数 ...

  8. docker内程序如何读取dockerfile和compose.yml中设置的环境变量

    docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...

  9. Docker学习计划三:Dockerfile 使用

    我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dockerfile 是镜像和容器的关键,Dockerfile 可以非常容易的定义镜像内容 首先通过一张图来了解 Docker 镜像 ...

随机推荐

  1. 多边形——————区间dp

    原题链接:https://www.acwing.com/problem/content/285/ 题意简单来说就是:给你一个环,断掉一条边使其成为一个链,用这个链跑dp,求最大得分. 首先这不是一道板 ...

  2. Shadertoy 教程 Part 3 - 矩形和旋转

    Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...

  3. 第02课 OpenGL 多边形

    你的第一个多边形: 在第一个教程的基础上,我们添加了一个三角形和一个四边形.也许你认为这很简单,但你已经迈出了一大步,要知道任何在OpenGL中绘制的模型都会被分解为这两种简单的图形.读完了这一课,你 ...

  4. sqlldr 导入有中文乱码问题

    1.导入成功后,查看导入数据有乱码 2.查看字符集为uft8 select * from v$nls_parameters where PARAMETER like '%NLS_CHARACTERSE ...

  5. JVM-内存区域与OOM

    本篇博客内容主要参考<深入理解Java虚拟机> 内存区域与内存溢出异常 运行时数据区 Java虚拟机运行时数据区: 程序计数器(Program Counter Register)是一块较小 ...

  6. 为什么IDEA不推荐你使用@Autowired ?

    @Autowired注解相信每个Spring开发者都不陌生了!在DD的Spring Boot基础教程和Spring Cloud基础教程中也都经常会出现. 但是当我们使用IDEA写代码的时候,经常会发现 ...

  7. 五(二)、spring 声明式事务xml配置

    概述: 接着上一节内容,把注解配置@@Transactional形式改为xml配置形式: 一.配置步骤 1.配置事务管理器 1 <!-- 1配置事务管理器 --> 2 <bean i ...

  8. Redis源码分析(intset)

    源码版本:4.0.1 源码位置: intset.h:数据结构的定义 intset.c:创建.增删等操作实现 1. 整数集合简介 intset是Redis内存数据结构之一,和之前的 sds. skipl ...

  9. loadRunner12 设置关联 获取服务端动态数据

    关联:服务器返回给客户端一些动态变化的值,客户端用这些值去访问服务器,不能把这些值写死在脚本里面,而应该存放在一个变量里面. 在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关 ...

  10. Spring Cloud Alibaba 使用Seata解决分布式事务

    为什么会产生分布式事务? 随着业务的快速发展,网站系统往往由单体架构逐渐演变为分布式.微服务架构,而对于数据库则由单机数据库架构向分布式数据库架构转变.此时,我们会将一个大的应用系统拆分为多个可以独立 ...