寫在前面
細數當前最流行的技術莫過於容器化和人工智能了,而容器化技術能有今天的熱度,Docker可謂功不可沒。
讓我們一起來回顧一下Docker
是什么?
- 是一種虛擬化技術
- 能夠將應用程序自動部署到容器
- 使用Go語言開源引擎
- 能夠非常方便的將我們的應用程序以及運行所以來的環境部署到開發,測試及生產環境。一次編譯,隨處可用
有什么優勢?
- 提供了簡單輕量的建模方式
- 職責的邏輯分離
- 快速高效的開發生命周期
- 讓應用部署具備了高可移植性
- 更方便的使用面向服務的架構
Docker的使用場景?
- 使用Docker容器開發,測試,部署服務
- 創建隔離的運行環境
- 搭建測試環境
- 構建多用戶的平台即服務(PaaS)基礎設施
- 提供軟件即服務(SaaS)應用程序
- 高性能,超大規模的宿主機部署
常用命令
查看已安裝的Docker版本
docker version
我們知道docker采用的是C/S架構的方式,所以我們可以看到一個是client端,一個是server端(守護進程)。
查看docker是否在運行以及所有狀態的容器實例
docker ps // 列出目前正在運行的containers docker ps -a //列出所有的docker containers,包括沒有運行的
我們用下面的命令來嘗試運行一個容器化的web server
docker run -d -p 80:80 --name webserver nginx
如果nginx這個鏡像在本地沒有找到,docker就會自動從docker hub 上下載到本地並且運行在80端口,我們輸入 http://localhost 就可以看到已經運行成功
如果我們不手動停止剛才的container的話,它就一直會運行。
docker stop webserver docker start webserver
在docker安裝成功之后會在機器上啟動客戶端,可以進行一些基礎的設置
Docker命令從功能上來說分為下面幾個部分:
容器生命周期管理
包含 run ,start/stop/restart , kill , rm , pause/unpause , create , exec ,以run命令舉例,用它來創建並運行一個容器,語法如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明:
-
-a stdin: 指定標准輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
-
-d: 后台運行容器,並返回容器ID;
-
-i: 以交互模式運行容器,通常與 -t 同時使用;
-
-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
-
--name="nginx-lb": 為容器指定一個名稱;
-
--dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
-
--dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
-
-h "mars": 指定容器的hostname;
-
-e username="ritchie": 設置環境變量;
-
--env-file=[]: 從指定文件讀入環境變量;
-
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
-
-m :設置容器使用內存最大值;
-
--net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container:<name|id> 四種類型;
-
--link=[]: 添加鏈接到另一個容器;
-
--expose=[]: 開放一個端口或一組端口;
容器操作
包含 ps , inspect ,top , attach , events , logs , wait , export , port
docker ps [OPTIONS]
OPTIONS說明:
-
-a :顯示所有的容器,包括未運行的。
-
-f :根據條件過濾顯示的內容
-
--format :指定返回值的模板文件。
-
-l :顯示最近創建的容器。
-
-n :列出最近創建的n個容器。
-
--no-trunc :不截斷輸出。
-
-q :靜默模式,只顯示容器編號。
-
-s :顯示總的文件大小。
容器rootfs命令
包含 commit ,cp , diff
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] //從容器創建一個新的鏡像。
OPTIONS說明:
-
-a :提交的鏡像作者;
-
-c :使用Dockerfile指令來創建鏡像;
-
-m :提交時的說明文字;
-
-p :在commit時,將容器暫停。
鏡像倉庫
包含 login , pull , push , search
docker login [OPTIONS] [SERVER] //登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
OPTIONS說明:
-
-u :登陸的用戶名
-
-p :登陸的密碼
本地鏡像管理
包含 images , rmi , tag , build , history , save , import
docker images [OPTIONS] [REPOSITORY[:TAG]] //列出本地鏡像
OPTIONS說明:
-
-a :列出本地所有的鏡像(含中間映像層,默認情況下,過濾掉中間映像層)
-
--digests :顯示鏡像的摘要信息
-
-f :顯示滿足條件的鏡像;
-
--format :指定返回值的模板文件;
-
--no-trunc :顯示完整的鏡像信息;
-
-q :只顯示鏡像ID。
info|version
顯示docker系統相關信息
以上列出的只是其中的幾個命令,詳細命令可參考官網或者 docker --help 來查看
https://docs.docker.com/edge/engine/reference/commandline/docker/
寫在最后
docker官方提供了很好的文檔支持,社區也非常的活躍,非常易於學習。
容器虛擬化技術已然是未來的主流,應該是每個coder都需要去了解和學習的。