前言:
最近在準備面試,在複習到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檢視: