Docker的基本使用及DockerFile的編寫

白加黑呀發表於2021-12-04

前言:

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

 

 

 

 

 

 

 

 

相關文章