什麼是docker
你到市場上買了一堆菜和肉:鹹魚,雞蛋,青菜,蘿蔔,熟食,水果等。這些菜都要裝在一個冰箱裡,不同的菜保質期不一樣,味道也不一樣,如果你將鹹魚和水果放在一起,水果就成了黑暗料理了。如果將雞蛋隨便丟,那很可能只要一開冰箱找食材,就會碰碎幾個雞蛋。聰明如你,肯定會將這些食材分門別類用不同的容器隔離存放。讓一切都井然有序。
類似的,如果我們想在一臺電腦上搭建各種開發環境:lnmp環境,java環境,nodejs,redis叢集,python開發環境。顯然,這些多的開發環境,如果集中在一臺機器上構建,會讓系統顯得複雜,可能還會出現各種版本或依賴之間的不相容。如果能將這些開發環境都獨立開來,各個環境互相獨立隔離,但又能互相通訊互動,相當於每個環境都是一個容器,這些容器可以獨立提供服務,也能通訊互動。
docker就是這樣的容器技術。
用官方術語描述docker: Docker是基於Go語言實現的開源容器專案,有效地將由單個作業系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有衝突的資源使用需求。
通俗地理解:docker能讓你在一臺物理機上構建出很多個輕量極的開發環境。
為什麼要用docker
傳統的虛擬機器也能實現環境的隔離,但虛擬機器過於笨重,啟動也慢,消耗的資源多。如果一臺普通的個人電腦同時執行5個虛擬機器例項,估計記憶體和CPU就扛不住了。
而docker不一樣,docker很輕量級,對系統資源的需求很少。
-
docker容器的啟動和停止可以在秒級實現,個人普通電腦同時執行上百個docker容器也沒問題(在IBM伺服器上可以同時實現執行10k量級的容器例項)
-
docker通過類似Git設計理念的操作來方便使用者獲取、分發和更新應用映象。使用者可以很方便地獲取全球開發者共享的映象
-
通過Dockfile支援靈活的自動化建立和部署機器,使流程標準化,很方便移植
如何安裝docker
官方文件 有詳細的安裝說明,本文以 macos 和 centos7 為例進行演示
macos
macos 和 windows 都有相應的桌面版安裝包,下載後即可一鍵安裝
centos
詳細操作:
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce -y
$ sudo systemctl start docker # 啟動docker
更換docker安裝源
預設的docker安裝源很慢,建議換成國內源,以阿里雲的源為例:
需要先註冊阿里雲賬號
macos
centos
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的映象地址"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
第一個docker映象
檢視版本資訊
$ docker --version
Docker version 19.03.1, build 74b1e89
按照慣例,第一個程式以 hello world 開始,執行以下命令即可執行一個輸出 hello world 的容器
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:451ce787d12369c5df2a32c85e5a03d52cbcef6eb3586dd03075f3034f10adcd
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
以上指令表示你從docker映象拉到了一個名為'hello world'映象並執行成功。到此表示你的docker已經安裝成功且正常執行
關於什麼是docker的映象,請關注我的後續更新