前言:
最近在准備面試,在復習到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查看: