docker簡單實用教程

weixin_33724059發表於2018-09-25

本文為原創文章,轉載請註明出處!


docker是什麼?

docker是一個開源的容器引擎,其核心部件docker映象,docker映象可以理解為預裝了一些應

用程式的作業系統映象(也有沒有搭建任何環境的初始映象)

docker能幹什麼?

docker可以用來快速部署應用程式需要執行的環境以及各種依賴

比如如果我們要執行一個依賴於lamp環境的web應用,那麼我們只需要直接pull一個lamp的鏡

像,然後用此映象建立一個容器來執行我們的web應用,而不需要我們自己再搭建lamp環境。

docker技術的優點是什麼?

快速搭建環境,體積小(一個docker映象的體積可能只是虛擬機器映象的十分之一),跨平臺執行。

作為安全人員,我們可能會經常搭建一些web環境,傳統的搭建方法都很繁瑣低效,而docker的應用可以大大提高我們搭建環境的效率。這篇文章會介紹一些docker在搭建web環境中的一些簡單應用,如果讀者想要深入的學習docker,可以自行查閱官方文件。

部署基於lamp環境的web應用

第一步:用dockersearch命令搜尋lamp映象

dockersearch image_name

48820-e2988aad6f17a363

第二步:選擇一個docker映象,將他pull下來預設的tag是latest(相當於版本號),我們選擇tutum/lamp映象

dockerpull image:tag

然後我們檢視一下我們docker已經有哪些映象了

dockerimages

48820-2a6a707681d98685

我們可以看到,tutum/lamp已經在我們的本地映象列表了,tag是latest,還顯示了映象的ID,以及該映象的創造時間

第三步:用該映象建立並執行一個容器,並通過埠對映將容器的80埠對映到主機的8080埠

dockerrun -d --name=container_name -p 8080:80 tutum/lamp

然後用如下命令進入容器的命令列

dockerexec -it container_name /bin/bash

48820-065a612ccadba402

我們可以看到root@後面的使用者名稱已經改變了,成功進入容器內部

然後切換到/var/ww/html目錄

cd/var/www/html

然後把我們的web應用程式放在html目錄下,然後執行如下命令啟動apache

serviceapache2 start

我們可以用ctrl+p+ctrl+q退出容器,並後臺執行容器,,然後再訪問主機的8080埠

48820-380898d6410a6e4d

我們可以看到,web服務已經成功執行了

除了這種在容器內部部署web應用程式的方法,docker還提供了一種掛載目錄的方法,通過-v引數,將主機目錄掛載到容器的某個目錄。

一個小小的demo來展示-v引數的用法

首先,在主機建立一個目錄,然後用tutum/lamp映象建立一個容器,並通過-v引數來將主機目錄掛載到容器然後在執行容器的lamp環境

dockerrun -d --name=test -p 9090:80 -v /var/test/:/var/www/html tutum/lamp

/var/test/目錄下index.html檔案內容如下:

<h1>

helloworld

</h1>

現在訪問一下9090埠

48820-de78ab2e0b193593

掛載成功,如果需要修改檔案就只用修改在主機上掛載的檔案就可以了

有些時候,我們pull下來的映象並不能滿足我們的要求,那麼我們可以在其基礎上在進行改動,然後把改動後的容器打包成映象方便我們後面使用。舉個例子:比如我們pull下來的tutum/lamp映象沒有安裝vim,那麼我們可以在裡面安裝好vim,然後將其打包為一個新的映象,以後用這個映象建立的容器就有vim了。

把容器打包為映象需要使用dockercommit命令:

dockercommit -a "Drac0nids" -m "lamp base"container_name

image_namedockercommit命令的具體用法如下:

48820-13da3ac441708d4c

docker倉庫的使用

首先去https://hub.docker.com/註冊一個賬號(需要科學上網,不然有個谷歌的人機驗證看不到導致不能註冊

48820-8f8fbe6dfed4ee95

有了賬號以後可以用dockerlogin命令來登入我們的賬號(退出登入使用dockerlogout)

48820-5d4d105dab266806

我們使用docker倉庫的主要目的是上傳儲存我們的映象,以便以後使用的時候可以直接拉取下來用,首先我們用dockerimages檢視我們有哪些image

48820-36c7eb8da2d49caa

我們用如下命令將映象上傳到docker倉庫

dockerpush image_name:tag

48820-12d4dcdc0202f1a8

這裡會出現如下錯誤資訊

denied:requestedaccesstothe resource isdenied

解決辦法是用dockertag命令將原映象映象名命名為使用者名稱/映象名

dockertag lamp_base:latest drac0nids/lamp_base:latest

然後再執行dockerpush命令(只有一個tag的時候可以省略)

dockerpush drac0nids/lamp_base

48820-3cbe751cc38d1ec7

要檢視我們上傳的的映象可以登入 https://hub.docker.com/ 檢視

48820-ac2efd9889996822

然後要用的時候就直接pull下來就可以了docker pull drac0nids/lamp_base

使用docker倉庫的好處就是方便在不同的機器上共享image




文章僅用於普及網路安全知識,提高小夥伴的安全意識的同時介紹常見漏洞的特徵等,若讀者因此做出危害網路安全的行為後果自負,與合天智匯以及原作者無關,特此宣告。

相關文章