前言:

最近在准备面试,在复习到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. 洛谷 P3195 [HNOI2008] 玩具装箱

    链接: P3195 题意: 给出 \(n\) 个物品及其权值 \(c\),连续的物品可以放进一个容器,如果将 \(i\sim j\) 的物品放进一个容器,产生的费用是 \(\left(j-i+\sum ...

  2. 挂载iscsi存储

    参考连接:https://segmentfault.com/a/1190000005853387?utm_source=tag-newest 安装客户端工具,iscsi-initiator yum i ...

  3. oracle 数据库修改端口号1521

    1.关闭监听 2.修改配置文件,port=1933 #vi $ORACLE_HOME/network/admin/listener.ora 3.登录并查看local_listener参数,因为使用的是 ...

  4. ES6—数值(Number,Math对象)(复习+学习)

    ES6-数值(Number,Math对象)(复习+学习) 每天一学,今天要学习ES6的关于数的扩展以及复习,然后通过看书,查阅资料,以及webAPI来搞清楚遇到的,没见过的对象方法等等,下面为本次学习 ...

  5. Robot frawork关键字使用报错原因

    对比发现1或者${1}两种方式赋值输出的类型都为整形 >>> ${test1}    set variable   'www' >>> log    ${test1 ...

  6. 关于Cefsharp无法拖动Dom元素的解决方法

    如图所显示,Cefsharp在嵌入网页,页面有对Dom元素的拖动的操作,独立在浏览器上对网页元素的拖动是没有问题的,但是嵌入到Cefsharp上显示禁用的图标.排查了H5的代码,没有写入禁用拖动的操作 ...

  7. [loj2469]最小方差生成树

    2018年论文题 约定:令点集$V=[1,n]$.边集$E=[1,m]$,记$m$条边依次为$e_{i}=(x_{i},y_{i},c_{i})$(其中$1\le i\le m$),将其按照$c_{i ...

  8. [luogu7340]Balance

    构造一个坐标系,共有$n$个黑点和百点,第$i$个黑点为$(p_{i},a_{i})$,第$i$个白点为$(-q_{i},-b_{i})$ 考虑第$i$个黑点和第$j$个白点连线的斜率,恰好就是$f( ...

  9. [loj4]Quine

    很有趣的一道题目,如何让一个程序输出自身如果用字符串s表示程序,那么意味着可以通过s来输出sprintf是一个可以利用的函数,相当于要求printf(s,s)输出的就是s那么只需要在s中加入%c和%d ...

  10. 最小生成树(MST)详解+题目

    原因 回顾一下旧知识 概况 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无 ...