Docker 是基于 Go 語言實(shí)現(xiàn)的云開源項(xiàng)目,是基于 Linux 的多項(xiàng)開源技術(shù)提供高效、敏捷和輕量級的容器方案。創(chuàng)建于 2013 年初,自從開源后就受到了廣泛的關(guān)注,從長遠(yuǎn)的眼光來看,Docker 是未來虛擬化的一個發(fā)展的趨勢。帶來了更輕量快捷的的體驗(yàn),一臺主機(jī)可以同時運(yùn)行數(shù)千個 Docker 容器,而且在性能上幾乎不會損耗。
Docker 簡介
概念
Docker 是基于 Go 語言實(shí)現(xiàn)的云開源項(xiàng)目,是基于 Linux 的多項(xiàng)開源技術(shù)提供高效、敏捷和輕量級的容器方案。創(chuàng)建于 2013 年初。自從開源后就受到了廣泛的關(guān)注,從長遠(yuǎn)的眼光來看,Docker 是未來虛擬化的一個發(fā)展的趨勢。
優(yōu)勢
- 一次構(gòu)建,處處運(yùn)行,帶來了更快速的交付和部署和更輕松的遷移和擴(kuò)展。
- 對系統(tǒng)內(nèi)核進(jìn)行抽象,帶來了更輕量快捷的的體驗(yàn),一臺主機(jī)可以同時運(yùn)行數(shù)千個 Docker 容器,而且在性能上幾乎不會損耗。
Docker 1.1.2 中 Ubuntu14.04 主機(jī)與 Ubuntu14.04 Docker 容器性能測試
參數(shù) | 測試工具 | 物理主機(jī) | Docker |
---|---|---|---|
CPU | sysbench | 1 | 0.9945 |
寫內(nèi)存 | sysbench | 1 | 0.9826 |
讀內(nèi)存 | sysbench | 1 | 1.0025 |
磁盤 I O | dd | 1 | 0.9811 |
網(wǎng)絡(luò) | iperf | 1 | 0.9626 |
從數(shù)值上看,物理主機(jī)與 Docker 容器之間的性能差異不大,二者速度幾乎一樣。
基本組件
鏡像:鏡像是構(gòu)建 Docker 世界的基石。用戶的一切操作都是基于鏡像來運(yùn)行自己的容器的。同時鏡像也是 Docke r 的 “構(gòu)建” 部分,也可以把鏡像當(dāng)作容器的” 源代碼”,鏡像體積很小,便攜性高,易分享、存儲和更新。
容器:容器是基于鏡像啟動起來的,用戶只需要把自己的應(yīng)用程序或服務(wù)打包放進(jìn)容器即可。容器中可以運(yùn)行一個或多個進(jìn)程,是 Docker 的啟動和執(zhí)行階段。
Docker 安裝
這么多年過去了,這 Docker 安裝的部分僅供參考留念。
安裝 Docker 的前提條件
運(yùn)行 64 位 CPU 架構(gòu)的計(jì)算機(jī)(這意味著一些較老的機(jī)器可能無法安裝 Docker)
Linux 系統(tǒng)的話,得運(yùn)行 Linux3.8 內(nèi)核及其以上的版本,一些老版本的 2.6x 內(nèi)核運(yùn)行可能會出現(xiàn)一些無法預(yù)料的 BUG
Windows 安裝 Dokcer
官網(wǎng)直接下載安裝包,然后直接運(yùn)行來安裝 Docker,開啟 Hyper-V (這個階段可能需要重啟), 有可用更新的話,就安裝更新。
小提示:Windows 下的 Docker 啟動貌似有點(diǎn)慢,不知道是不是我這龜速的機(jī)械硬盤的原因。
驗(yàn)證 docker 是否安裝成功:在命令提示符下輸入:docker
出現(xiàn)下面這張圖即安裝成功:
macOS 安裝 Docker
首先安裝 Virtual Box,官網(wǎng)下載:https://www.virtualbox.org
Virtual box 安裝完了再安裝 Docker
Docker 官網(wǎng)直接下載安裝包: https://download.docker.com/mac/stable/Docker.dmg
macOS 下安裝啟動就很快了。
然后在終端下輸入:
docker
Mac 和 Linux 下必須得以 root 身份才可以穩(wěn)定運(yùn)行 docker,
效果如下:
Ubuntu 安裝 Docker
Linux 安裝要簡單的多,畢竟 Docker 一開始就是基于 Linux 提出來的。
首先以 root 身份終端下輸入:
apt-get install docker.io
然后就沒有然后了,1 條命令即可安裝 :
root 身份終端下輸入:docker
查看安裝是否成功:
Dokcer 入門
搜索鏡像
Dokcer 通過 Dokcer Hub 搭建鏡像共享生態(tài)系統(tǒng),這意味著我們可以直接下載其他人已經(jīng)打包好的鏡像。
使用 docker search 命令在 Docker HUB 中搜索鏡像
這里我們以搜索 Ubuntu 鏡像為例:
docker search ubuntu
一般我們下載靠前面的鏡像,OFFICIAL 標(biāo)簽如果是 OK 的話,這表示是官方鏡像,其他的都是用戶自己創(chuàng)建并共享的鏡像。
下載鏡像
下面從 Docker Hub 下載 Ubuntu 鏡像,終端輸入:
docker pull ubuntu
Docker 默認(rèn)是下載最新版本的 Ubuntu 鏡像 : 鏡像一般都很小的,網(wǎng)速快的話可以分分鐘下載完。
列出下載的鏡像
下面列出本地主機(jī)中已經(jīng)下載的 docker 鏡像
終端輸入:
docker images
或者:
docker image ls
可以看到我們剛剛下載的 Ubuntu 鏡像,大小才 129MB, 是 4 周前更新的版本。
創(chuàng)建并使用容器
使用 run 命令即可用鏡像來創(chuàng)建一個容器
docker run -i -t --name hellodocker ubuntu /bin/bash
命令格式為:docker run <選項(xiàng)參數(shù)> <鏡像名稱> <要運(yùn)行的文件>
>使用 -i、-t選項(xiàng)可以在運(yùn)行的Bash shell中進(jìn)行輸入與輸出
>使用—name可以指定容器的名稱。如果不指定的話,docker默認(rèn)會自動生成隨機(jī)的名稱進(jìn)行指定。
再回看這行命令大概就明白了它的意思:使用 ubuntu 這個鏡像來創(chuàng)建一個 名為 hellodocker 的容器
當(dāng)我們創(chuàng)建容器后,默認(rèn)就進(jìn)入了容器,此時使用 cd、ls 等命令發(fā)現(xiàn)已經(jīng)不是我們物理機(jī)上的 ubutu 了。
退出容器
終端輸入:
exit
從 Bash shell 退出,因?yàn)樵?Ubuntu 鏡像中直接運(yùn)行 /bin/bash 可執(zhí)行文件,所以退出后 容器也會終止(stop),就這樣我們創(chuàng)建運(yùn)行并退出了一個容器,現(xiàn)在自己再親手創(chuàng)建個容器試試看吧。
查看容器列表
終端輸入:
docker ps -a
查看本地的所有容器的詳細(xì)信息 :
可以看到,除了我們第一個創(chuàng)建的名為 hellodocker 外,還發(fā)現(xiàn)了我后來新建的 GG 容器,他們都是 Exited (退出狀態(tài)),這里還可以看到他們的 ID、所使用的鏡像、創(chuàng)建時間、端口等信息 。
使用 start 命令來啟動容器
到這里機(jī)智的小伙伴們可能產(chǎn)生疑問了:第一次創(chuàng)建容器是默認(rèn)就進(jìn)入了容器,那么在我們 exit 退出容器之后如何喚醒我們的容器呢? 表急,其實(shí) docker 早已考慮到了這個,我們在終端下輸入:
docker start hellodocker
來啟動名為 hellodocker 的容器,所以啟動 docker 容器的命令就是:
docker start 容器名
來啟動名為 hellodocker 的容器,所以啟動 docker 容器的命令就是:
docker start 容器名
使用 restart 命令來重啟容器
與重啟系統(tǒng)一樣,也可以直接使用如下命令來重啟某個容器:
docker restart hellodocker
使用 attach 命令連接容器
前面我們 start 了一個容器,但是還是默認(rèn)不進(jìn)入容器,我們使用:
docker ps -a
來查看容器的運(yùn)行情況:
可以看到 hellodocker 這個容器已經(jīng)啟動了 4 秒多了,說明容器已經(jīng)在運(yùn)行了,那么我們怎么來連接啟動的 docker 容器呢?終端輸入:
docker attach hellodocker
來連接已經(jīng)在后臺啟動的 docker 容器 :
小提示:這里得 按下 回車 才進(jìn)入容器,不要傻等,幾分鐘內(nèi)都沒有什么反應(yīng)的(不要問我怎么知道的,心酸。。。)
Docker 系統(tǒng)統(tǒng)計(jì)信息
終端下輸入:
docker stats
用來顯示一個或多個容器的統(tǒng)計(jì)信息,可以看到容器的 ID、CPU 占用率、內(nèi)存使用率、網(wǎng)速等信息 :
終止容器
要終止容器的話,首先 docker ps -a 列出后臺正在運(yùn)行的容器,然后終端輸入:
docker stop hellodocker
終止了我們剛啟動不久的 hellodocker 容器
刪除容器
如果容器不再使用可以使用如下命令刪除:
docker rm GG
刪除了 GG 的容器(你要刪除的容器必須已經(jīng)停止運(yùn)行了)
刪除鏡像
如果鏡像不再使用可以使用如下命令刪除:
docker rmi ubuntu
刪除了本地的 ubuntu 鏡像(此刻必須刪除所有運(yùn)行在這個鏡像上的容器) :
OK Docker 的入門命令就教到這里了,下面我們來實(shí)戰(zhàn)一把吧。
Docker 簡約命令
列出下載的鏡像
docker image ls
部署容器
docker run --name hellodocker -d -p 81:80 ubuntu:18.04
創(chuàng)建并使用容器
docker run -i -t --name hellodocker ubuntu /bin/bash
查看容器列表
docker ps -a
使用 start 命令來啟動容器
docker start 容器名
使用 restart 命令來重啟容器
docker restart 容器名
使用 attach 命令連接容器
docker attach 容器名
docker exec -it 容器名 /bin/bash
docker exec -it 容器名 /bin/zsh
Docker 系統(tǒng)統(tǒng)計(jì)信息
docker stats
終止容器
docker stop 容器名
刪除容器
docker rm 容器名
刪除鏡像
docker rmi ubuntu
Dockfile
構(gòu)建鏡像
docker build -t test:v1 .
打造屬于你自己的 Kali
一般我們搞信息安全的難免都會用到 Kali Linux,如果不想安裝累贅的虛擬機(jī)或者不想折騰更新源等那么該腫么辦呢?現(xiàn)在有了 Docker,這一切的問題都不再是問題,使用 Docker 來運(yùn)行 Kali,更加輕便快捷,而且可以 ping 通物理機(jī)的 C 段,用來實(shí)戰(zhàn)的話再合適不過了。 秀個主題先:
安裝了 macOS 的主題后,Ubuntu 也感覺不再那么難用了。(嘿嘿 不扯了 趕緊步入正題了)
首先搜索下可用的 Kali 鏡像
docker search kali
出來了一大堆,根據(jù)名字可以大概判斷出第二個鏡像是帶有 meatsploit 的,所以為了日后配置的方便我們這里直接來下載第二個鏡像。
下載 Kali 鏡像
docker pull linuxkonsult/kali-metasploit
下載帶有 msf 的 kali 鏡像(鏡像不大,我這邊下載完不到 10 分鐘)
創(chuàng)建 Kali 容器
docker run -i -t --name msfkali linuxkonsult/kali-metasploit /bin/bash
用下載的 kali 鏡像創(chuàng)建個名為 msfkali 的容器
進(jìn)入容器查看基本信息
可以看到 kali 使用的是默認(rèn)源,這里我要說一下,kali 2016.X 版本的 kali 使用這個默認(rèn)官方源就好, 這個默認(rèn)的官方源會自動選擇速度最快的鏡像站點(diǎn)來下載。
$ cat /etc/apt/sources.list
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free
終端輸入:
msfconsole
可以看到默認(rèn)是帶 metasploit 的,看來我們之前猜的沒錯 :
除此之外還帶了 nmap、wget、git 等,但是這些工具還不夠我們完成一次滲透測試
安裝自己需要的工具
首先先刷新下更新緩存列表:
apt update
然后就可以直接安裝工具了
apt install 工具名
這里你需要什么工具就安裝什么工具,速度很快的,用什么就安裝什么,沒有什么比這個更 DIY 的了。舉個例子:你想安裝個 aircrack 來破解 WiFi 密碼,那么就直接:
apt-get install aircrack-ng
總之,這個 Kali Docker 就是 Kali 的命令行,和正常是 Kali 一模一樣,該怎么折騰就怎么折騰吧。文章來源:http://www.zghlxwxcb.cn/news/detail-816492.html
其他
Docker 搭建 sqli-labs 環(huán)境
docker pull acgpiano/sqli-labs
docker run --name sqli-labs -d -p 8080:80 acgpiano/sqli-labs
docker exec -it ID /bin/bash
- MySQL 默認(rèn)密碼為 空
- 瀏覽器訪問:127.0.0.1:8080
- 初始化數(shù)據(jù)庫先
Docker 搭建 Portainer 圖形管理工具
$ docker search portainer
$ docker pull portainer/portainer
$ docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
Docker 搭建寶塔面板注意事項(xiàng)
centos7 鏡像,做好端口映射
8080:88 888:888 8888:8888 8081:80
每次重啟的時候得手動啟動服務(wù):文章來源地址http://www.zghlxwxcb.cn/news/detail-816492.html
$ /etc/init.d/bt start
$ /etc/init.d/mysqld start
$ /etc/init.d/nginx start
$ /etc/init.d/php-fpm-54 start
$ /etc/init.d/php-fpm-73 start
到了這里,關(guān)于Docker入門簡明教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!