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
='[email protected]'
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='[email protected]'
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查看: