您好,登錄后才能下訂單哦!
Docker是基于Go語言實現的開源容器項目,誕生于2013年年初,由dotCloud公司發起,此公司后改名為Docker Inc.Docker項目已加入Linux基金會,并遵循Apache2.0協議,代碼托管在Github:Docker源碼地址
各大操作系統現都支持Docker,并且最新的Linux發行版RedHat、CentOS、Ubuntu中均已默認帶有Docker軟件包.
Docker的構想是要實現“Build,Ship and Run Any App, Anywhere”,即通過對應用的封 裝( Packaging)、分發( Distribution)、部署( Deployment)、運行( Runtime)生命周期進行管 理,達到應用組件級別的“ 一次封裝 ,到處運行” 。 這里的應用組件, 既可以 是一個 Web 應 用、一個編譯環境,也可以是一套數據庫平臺服務,甚至是一個操作系統或集群。
基于 Linux 平 臺上的多項開源技術, Docker 提供了高效、敏捷和輕量級的容器方案,并 支持部署到本地環境和多種主流云平臺 。 可以說 , Docker首次為應用 的開發 、運行和部署提 供了“一站式”的實用解決方案。
早期Docker代碼實現是基于LXC(Linux Containers,即Linux容器),自0.9版本開始,Docker開發了libcontainer項目作為更廣泛的容器驅動實現.
簡單地講,讀者可以將 Docker 容器理解為一種輕量級的沙盒( sandbox)。 每個容器內 運行著一個應用,不同的容器相互隔離,容器之間也可以通過網絡互相通信。 容器的創建和 停止十分快速,幾乎跟創建和終止原生應用 -致;另外,容器自身對系統資源的額外需求也十分有限,遠遠低于傳統虛擬機 。 很多時候,甚至直接把容器當作應用本身也沒有任何 問題。
Docker 運行基本命令和模式:
Docker Engine:
Docker architecture:
虛擬化 (virtualization)技術是一個通用的概念,在不同領域有不同的理解。 在計算領 域,一般指的是計算虛擬化 (computingvirtualization),或通常說的服務器虛擬化。 維基百科 上的定義如下:
“在計 算機技 術中,虛擬化 是 一種資 源管理技術,是將 計 算機 的各種實 體資 源,如服務器 、 網絡、 內存及存儲等,予以抽 象、轉換后呈現出來,打破實體 結 構間的不可切割的障礙,使用戶可以用比原本的紐態更好的方式來應用這些資源 。”
可見,虛擬化的核心是對資源的抽象,目標往往是為了在同一個主機上同時運行多個系
統或應用,從而提高系統資源的利用率,并且帶來降低成本、方便管理和容錯容災等好處 。
Docker 和常見的虛擬機方式的不同之處:
用戶可以訪問 Docker 官網的 Get Docker Docker 官網頁面,查看獲取 Docker 的方式,以及 Docker 支持的平臺類型目前 Docker 支持 Docker 引 擎、 Docker Hub、 Docker Cloud 等多種服務 。
Linux安裝
$sudo apt-get update
$sudo apt-get install docker-ce docker-ce-cli containerd.io
Mac安裝
$brew cask install docker
或者:
手動下載安裝 :Docker Mac傳送門
運行:
安裝完成后啟動Docker服務,然后嘗試運行如下命名:
$docker run -d -p 80:80 --name webserver_test nginx
# 然后在瀏覽器訪問:http://127.0.0.1 看看效果,一個nginx服務器已經搭建完成了,是不是很香
鏡像是Docker三大核心概念中最重要的,是創建 Docker容器的基礎。本質上是一個文件,通過版本管理和增量的文件系統, Docker 提供了一套十分簡單的機制來創建和更新現有的鏡像,用戶甚至可以從網上下載一個已經做好的應用鏡像,并直接使用.
Docker 運行容器前需要本地存在對應的鏡像, 如果鏡像不存在, Docker 會嘗試先從默 認鏡像倉庫下載(默認使用 Docker Hub 公共注冊服務器中的倉庫), 用戶也可以通過配置, 使用自定義的鏡像倉庫。
$docker pull NAME [:TAG]
$docker pull ubuntu:18.04
命令相當于
docker pull registry.hub.docker.com/ubuntu:18.04
如果從非官方的倉庫下載,則需要在倉庫名稱前指定完整的倉庫地址
NAME:鏡像倉庫名稱
TAG:鏡像標簽,如果不指定默認為latest,即會下載倉庫中最新版本的鏡像
注意:
一般來說,鏡像的latest 標簽意味著該鏡像的內容會跟蹤最新版本的變更而變化,內容是不穩定的。因此,從穩定性上考慮,不要在生產環境中忽略鏡像的標簽信息或使 用默認的latest 標記的鏡像。
$docker images
或者
$docker image ls
# 參數
> --digests=true|false: 列出鏡像的數字摘要值,默認為否;
> -f, --filter=[] : 過濾列出的鏡像, 如dangling=true 只顯示沒有被使用的
鏡像;也可指定帶有特定標注的鏡像等;
> --format="TEMPLATE" : 控制輸出格式,如: .ID代表ID信息,.Repository
代表倉庫信息等;
> -q, --quiet=true|false: 僅輸出ID信息, 默認為否
更多子命令選項還可以通過man docker-images來查看
顯示如圖:
為了方便在后續工作中使用特定鏡像,還可以使用docker tag
命令來為本地鏡像任 意添加新的標簽。 例如,添加一個新的myubuntu: latest鏡像標簽:
$docker tag ubuntu:latest myubuntu:latest
使用 docker inspect
命令可以獲取該鏡像的詳細信息,包括制作者、適應架構、各層的數字摘要等:
$docker inspect ubuntu:18.04
# 上面代碼返回的是一個JSON格式的消息,如果我們只要其中一項內容時,可以使用 -f 來指定,例如,獲取鏡像的ContainerConfig:
$docker inspect -f {{".ContainerConfig"}} ubuntu:18.04
history
命令查看鏡像歷史history
子命令,該命令將列出各層的創建信息。$ docker search nginx
參數:
-f, --filter filter: 過濾輸出內容
--format string: 格式化輸出內容
--limit int: 顯示個數,默認25
--no-trunc: 不截斷輸出結果
$ docker search --filter=is-official=true nginx
使用 docker rmi
或 docker image rm
命令可以刪除鏡像, 命令格式為 docker<br/>rmi IMAGE [IMAGE ... ]
, 其中 IMAGE 可以為標簽或 ID。
$docker rmi myubuntu:latest
參數:
-f, -force: 強制刪除鏡像, 即使有容器依賴它;
-no-prune: 不要清理未帶標簽的父鏡像。
注意:
當同 一 個鏡像擁有多個標簽的時候,docker rmi 命令只是刪除了該鏡像多個標簽中的指定 標簽而巳, 并不影響鏡像文件
# 刪除所有鏡像
$docker rmi $(docker ps -a) # 慎用啊!!!!
使用Docker一段時間后, 系統中可能會遺留一些臨時的鏡像文件, 以及一些沒有被使 用的鏡像, 可以通過docker image prune
命令來進行清理。
創建鏡像的方法主要有三種:
Dockerfile是一個文本格式的配置文件,用戶可以使用Dockerfile來快速創建自定義的鏡像。由一行行命令語句組成,并且支持以#開頭的注釋行。一般而言,Dockerfile主體內容分為四部分:
未完待續......
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。