最近在做專案,所有的功能都實作了之后就剩下部署了,而部署的程序便學習到了新的技術——Docker,本文只會講一些理論的知識,因為不同系統的電腦安裝方法可能會有差異,所以就不做介紹,可根據具體的系統版本查找對應的教程官網安裝教程
目錄
- 1、為什么要用Docker
- 2、什么是Docker
- 3、Docker的好處
- 4、三要素
- 5、常用命令
1、為什么要用Docker
一個軟體的實作分為開發和運維兩大部分,在開發階段已經把所有的代碼寫好了,到了運維時就需要進行部署,部署的程序就常常出現更換了設備就運行不了的情況,這就是由于作業系統、運行環境、應用配置可能不相同而導致的結果,如果每次部署都要考慮這么多的情況則太過麻煩,所以Docker應運而生!
2、什么是Docker
Docker的目標是在任何地方構建、發布并運行任何應用,解決了運行環境和配置問題軟體容器,方便做持續集成并有助于整體發布的容器虛擬化技術,
通俗說,Docker就是連帶原始環境一起全部打包安裝,從而省去了配置環境程序的一種工具(類似于虛擬機),消除“在我的電腦上能正常作業,換一臺電腦就不行的現象”
3、Docker的好處
- 在一個高并發、高流量的大專案中,往往部署專案是以集群的方式部署的,通俗說就是在多個設備上進行部署,如果每一個設備都要一遍遍安裝需要的所有環境,那么工程量過于龐大,而使用Docker把所有的內容打包成一個鏡像檔案,那么之后在所有的設備上都只需要安裝這一個鏡像檔案便能快速高效地完成部署作業
- 之前說了Docker類似于虛擬機,但是和虛擬機相比,Docker的加載速度會更快,而且相當于是一個精簡版的作業系統,不需要捆綁一整套作業系統,只需要軟體作業所需的庫資源和設定,

4、三要素
- 鏡像(image):模板,類似于一個類,當我們把代碼、環境打包好之后就叫做鏡像檔案,
- 容器(container):用鏡像創建的運行實列,類似于由類創建出的物件,利用容器便可獨立運行程式,對于每一個容器都可以啟動、開始、停止、洗掉,并保證每個容器都是相互隔離的,可把容器看作一個精簡版的Linux環境,
- 倉庫(repository):集中存放鏡像的地方,用法一般就是先構建一個鏡像然后上傳到遠程倉庫里,等有需要了便從倉庫種下載下來使用,
5、常用命令
幫助命令
| 命令 | 作用 |
|---|---|
| docker version | 查看docker版本 |
| docker info | 查看docker的資訊(比version更詳細) |
| docker help | 查看各種docker命令,類似man |
鏡像命令
| 命令 | 作用 | 選項 |
|---|---|---|
| docker images | 顯示當前本地存在的鏡像 | -a顯示所有鏡像和對應每一層的內容; -q只顯示鏡像ID; --digests顯示鏡像的摘要資訊; --no-trunc顯示鏡像完整的資訊 |
| docker search 鏡像名 | 查詢鏡像 | -s顯示指定星級范圍的鏡像 |
| docker pull 鏡像名:版本 | 下載鏡像,若省略版本則默認下載最新版本 | |
| docker rmi 鏡像名:版本 | 洗掉鏡像,若省略版本則默認洗掉最新版本 | -f強制洗掉 |
| docker commit 容器ID 目標鏡像名 | 提交容器副本使之成為新的鏡像,也就是說假如一個容器做了一些新的修改,通過commit便可以創建出一個最的鏡像 | -m提交的描述資訊;-a作者 |
容器命令
| 命令 | 作用 | 選項 |
|---|---|---|
| docker run 鏡像名字 | 執行容器,先檢查本地有沒有該鏡像,若沒有則從倉庫下載,然后根據鏡像生成容器運行 | –name為容器指定一個新名稱; -d后臺運行容器; -i開啟一個可互動的容器(比如ubuntu); -t 為容器分配一個偽輸入終端-i,-t通常一起使用; -p手動分配一個訪問埠; -P隨機生成一個訪問埠 |
| docker ps | 查看docker正在運行的所有容器 | -a顯示所有正在運行的容器和已停止的容器 |
| exit | 關閉容器 | |
| ctrl + p + q | 暫時離開容器回到宿主機但并沒有關閉 | |
| docker start 容器名 | 啟動容器 | |
| docker restart 容器名 | 重啟容器 | |
| docker stop 容器名 | 停止容器 | |
| docker kill 容器名 | 強制關閉容器 | |
| docker rm 容器名 | 洗掉容器 | -f強制洗掉 |
| docker logs 容器ID | 查看容器日志 | -t顯示時間; -f一直追加列印最新的日志; --tail數字 顯示最新的多少條日志 |
| docker top 容器ID | 查看容器內部正在運行的行程 | |
| docker inspect 容器ID | 查看容器內部結構細節 | |
| docker exec -it 容器ID 命令 | 創建正在運行的容器的子行程執行指定的命令并回傳結果(只要結果不進去) | |
| docker attach 容器ID | 進入正在運行容器并通過命令進行互動(先進去再得到結果) | |
| docker cp 容器ID:容器內路徑 目的主機路徑 | 從容器將檔案拷貝到宿主機 |
總結:
- 以往寫代碼都只考慮能運行就可以,從來不考慮程式運行的環境是什么樣的,更不會在意更換環境后代碼還好不好使,以后要學會除了考慮代碼之外,還要考慮配置環境、運行環境、依賴包等共同參與到程式正常運行的各種因素,
- 正常來說使用的遠程倉庫是來自hub.docker.com,這是國外的網站,下載鏡像會比較慢,所以需要更換國內的遠程倉庫來實作加速下載的目的,這種技巧不只適用于此,也適用于Linux下載軟體、pip下載第三方庫檔案等等都是有類似的方式
- Docker也是目前很流行的一個技術,很多大型的企業都在使用,所以學習這樣的主流技術也是很有必要的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265653.html
標籤:其他
