Docker 是一個開源的應用容器引擎,基於 Go 語言開發,Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的系統。
Docker 是世界領先的軟體容器平臺,Docker 官方的口號是」調試你的應用,而不是調試環境「。在進行多人協作開發時,開發者可以使用 Docker 來消除所謂「我這裡運行是好的」(works on my machine)問題,運維人員使用 Docker 來並行的運行和管理應用來獲得更優計算密度,基於各自獨立的容器,不會因為環境原因導致應用運行錯誤。
如下圖所示,在工作當中,如果我們面對這樣多的服務、多個伺服器,以及多種環境,我們應該如何處理呢?如果還繼續用傳統的方式打包部署,我們會浪費多少時間?
所以在 Docker 橫空出世之前,應用打包一直是大部分研發團隊的痛點,在 Docker 出現後,它以更高效的利用系統資源、更高效的利用系統資源、一致的運行環境、持續交付和部署、更輕鬆的遷移、更輕鬆的維護和拓展,6大優點迅速火了起來。
是一個包含有文件系統的面向 Docker 引擎的只讀模板。任何應用程式運行都需要環境,而鏡像就是用來提供這種運行環境的。例如一個 Ubuntu 鏡像就是一個包含 Ubuntu 作業系統環境的模板。
類似於一個輕量級的沙盒,可以將其看作一個極簡的 Linux 系統環境(包括 root 權限、進程空間、用戶空間和網絡空間等),以及運行在其中的應用程式。Docker 引擎利用容器來運行、隔離各個應用。
容器是鏡像創建的應用實例,可以創建、啟動、停止、刪除容器,各個容器之間是是相互隔離的,互不影響。
注意:鏡像本身是只讀的,容器從鏡像啟動時,Docker 在鏡像的上層創建一個可寫層,鏡像本身不變。
鏡像倉庫,是 Docker 用來集中存放鏡像文件的地方。
Docker 是開源的商業產品,有兩種版本:社區版(Community Edition,縮寫為 CE)和企業版(Enterprise Edition,縮寫為 EE)。企業版包含了一些收費服務,一般用不到。我們下面將會演示 Docker CE 版本的使用方法。
Docker 支持很多作業系統平臺,有大家常用的 Microsoft Windows 系列作業系統(Docker 不支持 Windows 10 家庭版系統),Linux 發行版和 MacOS 系統。
Windows 上有兩種安裝 Docker 方式:
第一種:訪問 Docker 網站下載 Docker Desktop 軟體的 exe 文件,下載地址:https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe
第二種:使用 Chocolatey 包管理工具安裝 Docker。(包管理工具需自行下載安裝)
choco install docker-for-windows
1.切換到管理員權限
su root
2.安裝必要的一些系統工具
apt-get updateapt-get -y install apt-transport-https ca-certificates curl \software-properties-common
3.安裝 GPG 證書
curl -fsSL \http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \| sudo apt-key add -
4.寫入軟體源信息
add-apt-repository &34;
5.更新並安裝 Docker-CE
apt-get -y updateapt-get -y install docker-ce
1.切換到管理員權限
su root
2.安裝必要的一些系統工具
yum install -y yum-utils device-mapper-persistent-data lvm2
3.添加軟體源信息
yum-config-manager --add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新並安裝 Docker-CE
yum makecache fastyum -y install docker-ce
macOS 上有兩種安裝 Docker 方式:
第一種:訪問 Docker 網站下載 Docker Desktop 的 dmg 安裝包,下載地址:https://download.docker.com/mac/stable/Docker.dmg
第二種:使用包管理工具方式來安裝 Docker,使用 Homebrew 工具安裝 Docker。(包管理工具需自行下載安裝)
brew cask install docker
systemctl start docker
systemctl retart docker
bash systemctl enable docker ¨G2G bash systemctl status docker
我們下載 Docker 鏡像的時候,默認會訪問 Docker 網站,而 Docker 網站是在國外部署的,距離比較遠下載速度特別慢。我們可以通過設置加速器的方式來加速 Docker 鏡像下載的速度。下面將描述一下使用加速器的步驟:
1.我們這裡選擇的是阿里雲提供的 Docker 鏡像加速器服務,首先訪問阿里雲的鏡像倉庫(如果沒有阿里雲帳號則需要註冊):
https://cr.console.aliyun.com/
2.選擇「鏡像加速器「
3.根據個人的系統平臺,選擇運行 Docker 的 OS,並按照操作文檔的要求修改 Docker 配置文件,然後重啟 Docker 服務即可完成加速器的配置。
Docker 的常用命令一般分為:鏡像管理、容器管理。
查看 Docker 版本
docker version
下面使用 busybox 軟體作為示例,busybox 軟體是一個集成了非常多最常用的 Linux 命令和工具的軟體集合。
docker images
docker pull busybox:latest
備註:latest 表示使用 busybox 軟體的最新版本,所以軟體默認下載都是 latest 版本。
docker save busybox > busybox.tar
備註:把 busybox 鏡像導出為 busybox.tar 文件,可以把 busybox.tar 文件複製到別的作業系統上使用,免除下載時網絡慢的問題。
docker rmi busybox:latest
備註:鏡像一般都會根據版本打包,如果有下載一個軟體的多個版本就需要指定具體版本信息。如 busybox:1.26 就會刪除 busybox 軟體的 1.26 版本的鏡像,不會刪除latest 版本的鏡像。
docker load < busybox.tar
備註:使用導出命令導出的鏡像,可以通過此命令導入到沒有下載此軟體的作業系統,方便網絡條件差的情況使用。
docker tag busybox:latest busybox:test
備註:busybox:latest原鏡像名,busybox:test要改成的鏡像名
docker run -d --name=busybox busybox:latest ping 114.114.114.114
- `run`:run參數代表啟動容器- `-d`:以後臺daemon的方式運行- `--name`:指定一個容器的名字,此後操作都需要使用這個名字來定位容器。- `busybox:latest`:容器所使用的鏡像名字- `ping 114.114.114.114`:啟動容器執行的命令
docker ps
docker ps -a
- `CONTAINER ID`:容器啟動的id- `IMAGE`:使用哪個鏡像啟動的容器- `COMMAND`:啟動容器的命令 - `CREATED`:創建容器的時間- `STATUS`:容器啟動時間- `PORTS`:容器映射到宿主機的埠- `NAMES`:容器啟動的名字
docker start busybox
docker restart busybox
docker stop busybox
docker kill busybox
docker rm -f busybox
docker exec -it busybox ls
備註:-it 交互終端
docker cp busybox:/etc/hosts hosts
docker logs -f busybox
以上,更多進階內容後續進一步探討。