原文鏈接:Part 1: Orientation and setup
預(yù)計閱讀時間:4分鐘
Hello!我們非常高興你能夠選擇學(xué)習(xí)Docker,本模塊將引導(dǎo)你如何:
1.配置你的Docker環(huán)境(本篇)
2.創(chuàng)建鏡像(image)并作為一個容器運行它
3.應(yīng)用擴容來運行多個容器
4.在集群中部署你的應(yīng)用
5.添加一個后臺數(shù)據(jù)庫為對戰(zhàn)服務(wù)
6.以產(chǎn)品的形式部署你的應(yīng)用
Docker 概念(Docker concepts)
Docker是一個為開發(fā)者與系統(tǒng)管理員提供開發(fā),部署和運行包含應(yīng)用的容器功能的平臺。在Linux容器中部署應(yīng)用的用法叫做容器化(containerization)。容器并不一個很新的概念,但他們可以用來更簡單的部署應(yīng)用。
容器化日漸流行是因為容器:
- 靈活性:甚至最復(fù)雜的應(yīng)用也可以被容器化
- 輕量級:容器可以利用并分享主機的內(nèi)核
- 可互換性:可以動態(tài)部署更新和升級
- 便攜性:可以在本地build,在云服務(wù)部署,并可以再任何地方運行
- 可擴容性:可以增加和動態(tài)分發(fā)到?jīng)]個容器的副本中(
replicas) - 可堆疊行:可以垂直和動態(tài)的堆疊服務(wù)
鏡像和容器(Images and containers)
運行一個鏡像來啟動一個容器。鏡像(image)是一個包含了所有運行需要的東西的可運行包--代碼,運行時,庫,環(huán)境變量和配置文件。
容器(container)則是一個鏡像運行的實例--鏡像運行時在內(nèi)存中會變成的樣子(可能是一個帶有狀態(tài)的鏡像,或是一個用戶線程)。你可以用命令docker ps看到當(dāng)前正在運行的容器列表,就想在Linux中一樣。
容器與虛擬機(Containers and virtual machines)
容器在Linux本地運行并與其他容器分享使用主機的內(nèi)核。它的運行一個獨立的進程,不會比其他可執(zhí)行應(yīng)用占用更多內(nèi)存,這使得它更輕量級。
相比之下,虛擬機(virtual machine VM)通過超級管理員虛擬訪問 virtual access主機資源來運行一個完整的“guest”操作系統(tǒng)。通常的,虛擬機提供了超出大多應(yīng)用所需要的資源環(huán)境。

準(zhǔn)備你的Docker環(huán)境
在支持平臺 supported platform安裝Docker Community Edition (CE) 或 Enterprise Edition (EE) 的維護版本 maintained version
完成Kubernetes集成
- Kubernetes on Docker for Mac適用于17.12 Edge (mac45) 或 17.12 Stable (mac46) 和更高版本。
- Kubernetes on Docker for Windows 適用于 18.02 Edge (win50) 和更高的edge版本。
測試Docker版本(Test Docker version)
1.運行docker --version并確認已經(jīng)有Docker的支持版本
docker --version
Docker version 18.03.1-ce, build 9ee9f40
2.運行docker info(或者docker version 沒有--)來查看更多docker的信息
localhost:~ yichen$ docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 9
Server Version: 18.03.1-ce
Storage Driver: overlay2
...
測試Docker安裝
1.運行一個簡單的Docker鏡像來測試你的安裝是否奏效, hello-world:
localhost:~ yichen$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
2.列出已經(jīng)下載到你的機器中的hello-world鏡像
docker image ls
3.列出在顯示消息后退出的hello-world的容器container(因image而產(chǎn)生的),如果他依舊在運行,則不需要添加--all選項
localhost:~ yichen$ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
482e93ce5196 hello-world "/hello" Less than a second ago Exited (0) 31 seconds ago focused_varahamihira
作弊表???秘籍??(Recap and cheat sheet)
## 列出Docker CLI 命令
docker
docker container --help
## 顯示Docker版本與信息
docker --version
docker version
docker info
## 運行Docker鏡像
docker run hello-world
## 列出Docker鏡像
docker image ls
## 列出Docker容器 (正在運行, 所有, 所有處在靜默模式)
docker container ls
docker container ls --all
docker container ls -aq
總了個結(jié)(Conclusion of part one)
容器化使得持續(xù)集成/持續(xù)部署無縫化,舉幾個例子:
- 應(yīng)用沒有系統(tǒng)依賴
- 更新可以被推送到分布式應(yīng)用的任意一個部分
- 資源可以被充分利用
使用Docker,擴展應(yīng)用程序的問題在于啟動新的可執(zhí)行文件,而不是運行繁重的VM主機。