天天看點

kali下對Docker的詳細安裝

作者:菜鳥滲透

0x00 前言

Docker是滲透測試中必學不可的一個容器工具,在其中,我們能夠快速建立、運作、測試以及部署應用程式。如,我們對一些漏洞進行本地複現時,可以使用Docker快速搭建漏洞環境,完成複現學習。

注:本教程僅供學習參考,請勿用在非法途徑上,違者後果自負,與筆者無關。

0x01 Docker的安裝

1、Linux核心版本檢視

#安裝docker要求核心版本kerner>=3.10

#為此,先檢查目前Linux系統的核心版本

uname -a

kali下對Docker的詳細安裝

2、更新apt源滿足下載下傳要求

#新重寫sources.list中内容,一個個字母删除太久了

cho > /etc/apt/sources.list

#進入sources.lis重新編輯apt源

vim /etc/apt/sources.list

#直接CV大法寫入下面的apt源

#其他apt源

#此處,筆者僅添加中科達和阿裡的,其他注釋掉

#中科大

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#阿裡雲

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#清華大學

#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#浙大

#deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

#deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

#東軟大學

#deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contribp.kali.org/kali kali-rolling main non-free contrib

#重慶大學

#deb http://http.kali.org/kali kali-rolling main non-free contrib

#deb-src http://http.kali.org/kali kali-rolling main non-free contrib

3、進行系統或工具的更新

#進行系統或工具的更新(有丢丢就,先上把王者)

#注:當出現正在設定軟體包界面時,直接按tab+enter進行确認

apt-get update && apt-get upgrade && apt-get dist-upgrade

#禮貌性清除更新緩存

apt-get clean

4、采用apt安裝Docker

#為什麼采用apt安裝?因為之後采用apt源安裝Docker的其他元件時,新元件與已安裝的Docker容器最為比對。

apt-get install docker docker-compose

#或

apt-get install docker.io

kali下對Docker的詳細安裝

5、檢驗Docker成功安裝

#啟動docker服務

service docker start

#列出docker現有鏡像

docker images

#運作hello-world鏡像

#但apt安裝的docker沒帶有hello-world預設鏡像呀,是以下面的指令不成功,它會幫你拉去該鏡像下來

docker run hello-world

kali下對Docker的詳細安裝
kali下對Docker的詳細安裝

0x02 Docker的其他配置

1、配置阿裡雲鏡像加速

Docker建議配備一個鏡像加速器來解決國内使用者通路DockerHub緩慢的問題。此處筆者推薦使用阿裡雲的鏡像加速器來優化,提升下載下傳速度。

注:配置鏡像加速器,僅針對Docker用戶端版本大于 1.10.0 的使用者

#阿裡雲鏡像加速器擷取網址(需注冊):https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

#鏡像加速器網址寫入/etc/docker/daemon.json檔案(可能不存在)中

vim /etc/docker/daemon.json

#建立daemon.jsp檔案

touch /etc/docker/daemon.json

#寫入内容

{

"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]

}

#退出daemon.jsp,并重新開機docker

ESC --> :wq!

systemctl restart docker

#其他公開Docker鏡像加速源(不需注冊)

https://docker.mirrors.ustc.edu.cn #中科大

http://hub-mirror.c.163.com/ #網易

kali下對Docker的詳細安裝
kali下對Docker的詳細安裝
kali下對Docker的詳細安裝
kali下對Docker的詳細安裝

2、設定Docker開機自啟

#設定docker開機自啟

systemctl enable docker

kali下對Docker的詳細安裝

0x03 Docker的簡單使用

#筆者以拉取 CVE-2017-7504 的漏洞環境為例。

docker search testjboss #搜尋漏洞環境

docker pull testjboss/jboss #拉取漏洞環境

docker run -d -p 80:8080 testjboss/jboss:latest #根據testjboss/jboss鏡像建立并運作容器

ifconfig #檢視已運作容器ip

#kali中,使用浏覽器通路http://IP #IP可為127.0.0.1

docker ps #檢視正在運作的容器

docker exec -it e8f4844aabc1 /bin/bash #進入容器(id:e8f4844aabc1)

exit #退出容器到主控端(容器不會停止運作)

docker stop 3b41c0c08430 #關閉容器(id唯一辨別,建議使用id)

kali下對Docker的詳細安裝
kali下對Docker的詳細安裝
kali下對Docker的詳細安裝
kali下對Docker的詳細安裝

0x04 Docker的常用指令

#系統指令

systemctl start docker #啟動docker

systemctl stop docker #停止docker

systemctl restart docker #重新開機docker

systemctl enable docker #設定docker開機自啟

#基本指令

docker version #檢視docker版本

docker info #檢視docker詳細資訊

docker --help #檢視docker指令

#鏡像指令

docker images #檢視docker鏡像清單

docker images -a #列出本地所有鏡像

docker images --digests #顯示鏡像的摘要資訊

docker search redis #從Docker Hub上查找redis鏡像

docker pull redis #從Docker Hub上下載下傳redis鏡像

docker rmi 373f0984b070 #删除IMAGE ID 為373f0984b070的鏡像

#運作指令

#-p 6379:6379 端口映射:前表示主機部分,後表示容器部分

#-d 在背景運作容器(不進入終端)并列印容器ID/容器名

#--name myredis表示自定義容器名為myredis

docker run -d -p 6379:6379 --name myredis redis:latest #根據鏡像建立并運作容器

#容器指令

docker container ls 或 docker ps #檢視正在運作的容器

docker container ls -a 或 docker ps -a #列出所有容器

docker container start 容器ID 或 容器名稱 #啟動容器

docker start 容器ID 或 容器名稱 #啟動容器

docker container stop 容器ID 或 容器名稱 #停止容器

docker stop 容器ID 或 容器名稱 #停止容器

docker container rm 容器ID 或 容器名稱 #删除容器

docker rm 容器ID 或 容器名稱 #删除容器

docker container logs -f 容器ID 或 容器名稱 #檢視容器日志

docker exec -it name /bin/bash #進入name(容器名/id)中開啟互動式的終端,exit退出

0x05 docker --help中文譯解

Usage:

docker [OPTIONS] COMMAND [arg...]

docker daemon [ --help | ... ]

docker [ --help | -v | --version ]

A

self-sufficient runtime for containers.

Options:

--config=~/.docker Location of client config files #用戶端配置檔案的位置

-D, --debug=false Enable debug mode #啟用Debug調試模式

-H, --host=[] Daemon socket(s) to connect to #守護程序的套接字(Socket)連接配接

-h, --help=false Print usage #列印使用

-l, --log-level=info Set the logging level #設定日志級别

--tls=false Use TLS; implied by--tlsverify #

--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA #信任證書簽名CA

--tlscert=~/.docker/cert.pem Path to TLS certificate file #TLS證書檔案路徑

--tlskey=~/.docker/key.pem Path to TLS key file #TLS密鑰檔案路徑

--tlsverify=false Use TLS and verify the remote #使用TLS驗證遠端

-v, --version=false Print version information and quit #列印版本資訊并退出

Commands:

attach Attach to a running container #目前shell下attach連接配接指定運作鏡像

build Build an image from a Dockerfile #通過Dockerfile定制鏡像

commit Create a new image from a container's changes #送出目前容器為新的鏡像

cp Copy files/folders from a container to a HOSTDIR or to STDOUT #從容器中拷貝指定檔案或者目錄到主控端中

create Create a new container #建立一個新的容器,同run 但不啟動容器

diff Inspect changes on a container's filesystem #檢視docker容器變化

events Get real time events from the server#從docker服務擷取容器實時事件

exec Run a command in a running container#在已存在的容器上運作指令

export Export a container's filesystem as a tar archive #導出容器的内容流作為一個tar歸檔檔案(對應import)

history Show the history of an image #展示一個鏡像形成曆史

images List images #列出系統目前鏡像

import Import the contents from a tarball to create a filesystem image #從tar包中的内容建立一個新的檔案系統映像(對應export)

info Display system-wide information #顯示系統相關資訊

inspect Return low-level information on a container or image #檢視容器詳細資訊

kill Kill a running container #kill指定docker容器

load Load an image from a tar archive or STDIN #從一個tar包中加載一個鏡像(對應save)

login Register or log in to a Docker registry#注冊或者登陸一個docker源伺服器

logout Log out from a Docker registry #從目前Docker registry退出

logs Fetch the logs of a container #輸出目前容器日志資訊

pause Pause all processes within a container#暫停容器

port List port mappings or a specific mapping for the CONTAINER #檢視映射端口對應的容器内部源端口

ps List containers #列出容器清單

pull Pull an image or a repository from a registry #從docker鏡像源伺服器拉取指定鏡像或者庫鏡像

push Push an image or a repository to a registry #推送指定鏡像或者庫鏡像至docker源伺服器

rename Rename a container #重命名容器

restart Restart a running container #重新開機運作的容器

rm Remove one or more containers #移除一個或者多個容器

rmi Remove one or more images #移除一個或多個鏡像(無容器使用該鏡像才可以删除,否則需要删除相關容器才可以繼續或者-f強制删除)

run Run a command in a new container #建立一個新的容器并運作一個指令

save Save an image(s) to a tar archive#儲存一個鏡像為一個tar包(對應load)

search Search the Docker Hub for images #在docker

hub中搜尋鏡像

start Start one or more stopped containers#啟動容器

stats Display a live stream of container(s) resource usage statistics #統計容器使用資源

stop Stop a running container #停止容器

tag Tag an image into a repository #給源中鏡像打标簽

top Display the running processes of a container #檢視容器中運作的程序資訊

unpause Unpause all processes within a container #取消暫停容器

version Show the Docker version information#檢視容器版本号

wait Block until a container stops, then print its exit code #截取容器停止時的退出狀态值