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的编写的更多相关文章
- Docker 与 K8S学习笔记(四)—— Dockerfile的编写
在上一篇中我们简单介绍了Docker镜像的获取与使用,其中在镜像制作中提到在实际使用中一定要用Dockerfile方式去创建镜像而不要用docker commit方式,那么我们该如何编写Dockerf ...
- Docker学习笔记之常见 Dockerfile 使用技巧
0x00 概述 在掌握 Dockerfile 的基本使用方法后,我们再来了解一些在开发中使用 Dockerfile 的技巧.这一小节的展现方式与之前的略有不同,其主要来自阅读收集和我自身在使用中的最佳 ...
- Docker学习笔记之通过 Dockerfile 创建镜像
0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...
- Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像
一般呢,docker构建镜像容器的方式有两种:一种是pull dockerhub仓库里面的镜像,一种是使用Dockerfile自定义构建镜像. 很多时候,公司要求的镜像并不一定符合dockerhub仓 ...
- Docker学习(六)Dockerfile构建自定义镜像
Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...
- 『现学现忘』Docker基础 — 32、通过DockerFile的方式挂载数据卷
目录 1.简单了解一下DockerFile 2.通过DockerFile的方式挂载数据卷 (1)创建DockerFile文件 (2)编辑Dockerfile文件 (3)构建Dokcer镜像 (4)启动 ...
- docker学习笔记18:Dockerfile 指令 VOLUME 介绍
在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数 ...
- docker内程序如何读取dockerfile和compose.yml中设置的环境变量
docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...
- Docker学习计划三:Dockerfile 使用
我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dockerfile 是镜像和容器的关键,Dockerfile 可以非常容易的定义镜像内容 首先通过一张图来了解 Docker 镜像 ...
随机推荐
- 洛谷 P3195 [HNOI2008] 玩具装箱
链接: P3195 题意: 给出 \(n\) 个物品及其权值 \(c\),连续的物品可以放进一个容器,如果将 \(i\sim j\) 的物品放进一个容器,产生的费用是 \(\left(j-i+\sum ...
- 挂载iscsi存储
参考连接:https://segmentfault.com/a/1190000005853387?utm_source=tag-newest 安装客户端工具,iscsi-initiator yum i ...
- oracle 数据库修改端口号1521
1.关闭监听 2.修改配置文件,port=1933 #vi $ORACLE_HOME/network/admin/listener.ora 3.登录并查看local_listener参数,因为使用的是 ...
- ES6—数值(Number,Math对象)(复习+学习)
ES6-数值(Number,Math对象)(复习+学习) 每天一学,今天要学习ES6的关于数的扩展以及复习,然后通过看书,查阅资料,以及webAPI来搞清楚遇到的,没见过的对象方法等等,下面为本次学习 ...
- Robot frawork关键字使用报错原因
对比发现1或者${1}两种方式赋值输出的类型都为整形 >>> ${test1} set variable 'www' >>> log ${test1 ...
- 关于Cefsharp无法拖动Dom元素的解决方法
如图所显示,Cefsharp在嵌入网页,页面有对Dom元素的拖动的操作,独立在浏览器上对网页元素的拖动是没有问题的,但是嵌入到Cefsharp上显示禁用的图标.排查了H5的代码,没有写入禁用拖动的操作 ...
- [loj2469]最小方差生成树
2018年论文题 约定:令点集$V=[1,n]$.边集$E=[1,m]$,记$m$条边依次为$e_{i}=(x_{i},y_{i},c_{i})$(其中$1\le i\le m$),将其按照$c_{i ...
- [luogu7340]Balance
构造一个坐标系,共有$n$个黑点和百点,第$i$个黑点为$(p_{i},a_{i})$,第$i$个白点为$(-q_{i},-b_{i})$ 考虑第$i$个黑点和第$j$个白点连线的斜率,恰好就是$f( ...
- [loj4]Quine
很有趣的一道题目,如何让一个程序输出自身如果用字符串s表示程序,那么意味着可以通过s来输出sprintf是一个可以利用的函数,相当于要求printf(s,s)输出的就是s那么只需要在s中加入%c和%d ...
- 最小生成树(MST)详解+题目
原因 回顾一下旧知识 概况 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无 ...