Docker 的安裝配置與經常使用命令

什麼是Docker ?

基本概念

簡單來講就是一個裝應用的容器,能夠把你想裝的通通打包丟進去。Docker 在容器的基礎上,又進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的建立和維護,這使得 Docker 技術比虛擬機技術更爲輕便、快捷。linux

Docker 與傳統虛擬化方式的不一樣之處在於,傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整的操做系統,再在該系統上運行所需的應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有本身的內核,並且也沒有進行硬件虛擬。所以容器要比傳統的虛擬機更爲輕便。 nginx

Docker三要素

鏡像 :docker

Docker 鏡像,至關於一個特殊的文件系統,能夠提供用戶提供空間支持。除了提供容器運行時所需的程序、庫、資源配置等文件外,還包含了一些爲運行時準備的配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建後也不會改變。json

嚴格來講,鏡像是一個分層存儲的架構。它在構建時,會一層一層構建,前一層是後一層的基礎。每層構建完成後就不會再發生改變,後一層上的任何改動僅發生在這一層。好比,刪除前一層文件的操做,實際上只是在當前層作一個「上層已刪除」的標記,而不會真正把上層文件刪掉。在最終容器運行的時候,雖然不會看到這個文件,但實際上它將一直跟隨着鏡像。所以,在構建鏡像時應該額外當心,不要把無用的數據留到下一層去清理。bash

容器 :網絡

鏡像容器 的關係,就像 Java 中 實例 的關係。鏡像是靜態的定義,容器是鏡像運行時的實體。容器的本質是一個進程,是真正跑項目程序、消耗機器資源、提供服務的部分,至關於一個小虛擬機,爲鏡像提供隔離的運行環境。架構

和鏡像相同,容器採用的也是分層存儲架構,每個容器運行時,是以鏡像爲基礎層,在其上建立一個當前容器的存儲層,即容器存儲層。容器存儲層的生命週期和容器同樣,當容器消亡時,該存儲層將隨之消亡,保存於其中的信息也一同丟失。性能

按照 Docker 最佳實踐的要求,容器不該該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。全部的文件寫入操做,都應該使用 數據卷,或綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高。ui

數據卷的生存週期獨立於容器,容器消亡,數據卷不會消亡。所以,使用數據卷後,容器刪除或者從新運行以後,數據卻不會丟失。spa

倉庫 :

Docker 的倉庫用來存放鏡像。與 Git 相似,它提供一個集中存儲、分發鏡像的服務,使得咱們能夠從中心倉庫或我的倉庫自由拉取鏡像,也能夠將製做好的鏡像提交到遠程倉庫。

Docker的安裝、換源、與擴權

安裝

deepin 下直接安裝就好啦,其餘版本能夠參考 官方文檔

出現這個就說明安裝成功 :

換源

由於docker的默認鏡像源下載比較慢,因此通常會換成國內的鏡像源。以阿里爲例,進入它的 容器鏡像服務,找到本身的鏡像加速器。

而後將它添入 /etc/docker/daemon.json(沒有就本身建立一個)。

最後重啓一下,就能夠正常使用了 :

擴權

默認狀況下docker是隻能經過root權限訪問的,就像下圖,或者是 sudo -s 以後再進行操做。

經過放大 docker.sock( Docker 守護進程 ( Docker daemon ) 默認監聽的 Unix 域套接字,容器中的進程能夠經過它與 Docker 守護進程進行通訊 )的訪問權限,可使普通用戶也能直接使用 docker 命令 :

經常使用的Docker命令

拉取鏡像

docker pull [OPTIONS] IMAGE [:TAG]
複製代碼
  • OPTIONS :可選參數,-xx 這種
  • IMAGE :須要拉取的鏡像的名稱
  • TAG :可選項,能夠指定鏡像的某一個版本,不選就是默認版本

查看鏡像

docker images [OPTIONS] [REPOSITORY[:TAG]]
複製代碼
  • REPOSITORY :能夠指定查看某一個鏡像的版本
  • 不過通常用 docker images 就夠啦

運行鏡像

docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG..]
複製代碼
  • IMAGE :鏡像名稱
  • COMMAND :鏡像運行時可執行的命令
  • ARG :執行命令時可選的參數

在一個運行的容器中運行某些命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG..]
複製代碼
  • CONTAINER :容器名稱或容器id
  • COMMAND :要運行的終端指令

命令補充

查看目前正在運行的容器

docker ps
複製代碼

前臺運行與後臺運行

docker run (-d) IMAGE
複製代碼
  • 好比說前臺 :docker run nginx
  • 對應的後臺 :docker run -d nginx
  • 注 :後臺運行成功後返回的字符串是這個容器的 id

進入一個容器

docker exec -it [容器id] bash
複製代碼
  • -i :保證咱們的輸入有效
  • -t :分配一個僞終端
  • 而後就能夠獲得一個 linux 了!(大概

綁定端口

docker run -d -p [主機端口:容器端口] [容器名或id]
複製代碼
  • -p :開放一個容器的端口到主機上
  • 好比這樣 :docker run -d -p 8080:8080 nginx

重啓容器

docker restart [容器id]
複製代碼

中止容器

docker stop [容器id]
複製代碼

中止後再次運行容器

docker start [容器id]
複製代碼

刪除容器

docker rm [容器id]
複製代碼

刪除鏡像

docker rmi [鏡像id]
複製代碼

注意刪除鏡像前要先刪除容器,而刪除容器前要先中止容器。

刪除所有容器

首先中止所有容器 :

docker stop $(docker ps -a -q)
複製代碼

而後進行刪除 :

docker rm $(docker ps -a -q)
複製代碼

-- tbc --

相關文章
相關標籤/搜索