Docker
Docker 簡介
什麼是 Docker?
Docker is the world’s leading software container platform.
”
官方給 Docker 的定位是一個 應用容器平臺。
爲什麼是 Docker?
-
合作開發的時候,在本機可以跑,別人的電腦跑不起來?
我們拿 Java Web 應用程序舉例,我們一個 Java Web 應用程序涉及很多東西,比如 Jdk、Tomcat、Spring 等等。當這些其中某一項版本不一致的時候,可能就會導致應用程序跑不起來這種情況。Docker 則將程序直接打包成鏡像,直接運行在容器中即可。 -
服務器自己的程序掛了,結果發現是別人程序出了問題把內存喫完了,自己程序因爲內存不夠就掛了
這種也是一種比較常見的情況,如果你的程序重要性不是特別高的話,公司基本上不可能讓你的程序獨享一臺服務器的,這時候你的服務器就會跟公司其他人的程序共享一臺服務器,所以不可避免地就會受到其他程序的干擾,導致自己的程序出現問題。Docker 就很好解決了環境隔離的問題,別人程序不會影響到自己的程序。 -
公司要弄一個活動,可能會有大量的流量進來,公司需要再多部署幾十臺服務器
在沒有 Docker 的情況下,要在幾天內部署幾十臺服務器,這對運維來說是一件非常折磨人的事,而且每臺服務器的環境還不一定一樣,就會出現各種問題,最後部署地頭皮發麻。用 Docker 的話,我只需要將程序打包到鏡像,你要多少臺服務,我就給力跑多少容器,極大地提高了部署效率。
Docker 和 虛擬機 的區別
比較上面兩張圖,我們發現:
- 虛擬機 攜帶操作系統,本身很小的應用程序卻因爲攜帶了操作系統而變得非常大,很笨重;
- Docker 不攜帶操作系統,所以 Docker 的應用就非常的輕巧;
- 在調用宿主機的CPU、磁盤等等這些資源的時候,兩者也是不一樣的,拿內存舉例:
虛擬機利用 Hypervisor 虛擬化內存,調用過程是 虛擬內存->虛擬物理內存->真正物理內存,
Docker 利用 Docker Engine 調用宿主的的資源,調用過程是 虛擬內存->真正物理內存。
傳統虛擬機與 Docker容器 的對比:
傳統虛擬機 | Docker容器 | |
---|---|---|
磁盤佔用 | 幾個GB到幾十個GB左右 | 幾十MB到幾百MB左右 |
CPU內存佔用 | 虛擬操作系統非常佔用CPU和內存 | Docker引擎佔用極低 |
啓動速度 | (從開機到運行項目)幾分鐘 | (從開啓容器到運行項目)幾秒 |
安裝管理 | 需要專門的運維技術 | 安裝、管理方便 |
應用部署 | 每次部署都費時費力 | 從第二次部署開始輕鬆簡捷 |
耦合性 | 多個應用服務安裝到一起,容易互相影響 | 每個應用服務一個容器,達成隔離 |
系統依賴 | 無 | 需求相同或相似的內核,目前推薦是Linux |
Docker 的核心
- 鏡像(Image):一個鏡像代表一個 應用環境,它是隻讀文件,如 mysql鏡像、tomcat鏡像等;
- 容器: 鏡像每次運行就是產生一個容器,容器就是正在運行的鏡像,特點就是可讀可寫;
- 倉庫:用來存放鏡像的位置,類似於maven倉庫,也是鏡像下載和上傳的位置;
- dockerFile:docker生成鏡像配置文件,用來書寫自定義鏡像的一些配置;
- tar:對鏡像打包的文件,日後可以還原成鏡像;
Docker 安裝
Docker 的安裝(centos7.x)
Docker 安裝官網教程:https://docs.docker.com/engine/install/centos/
Play With Docker 在線虛擬機:https://labs.play-with-docker.com/
卸載原有 docker:沒安裝過也建議執行一下,它會自動檢測,沒什麼影響。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安裝 docker 依賴:
- yum-utils 提供一個 yum-config-manager 單元
- device-mapper-persistent-data 和 lvm2 用於儲存設備映射(devicemapper)
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
設置 docker 的 yum源:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
也可以安裝指定版本的 docker,我們一般用前面的方法安裝最新版即可。
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
sudo yum install docker-ce-18.09.5-3.el7 docker-ce-cli-18.09.5-3.el7 containerd.io
啓動 docker:
sudo systemctl start docker
查看 docker 運行狀態: 看到 Active 爲 active(running) 說明 docker 已啓動;
sudo systemctl status docker
關閉 docker:
sudo systemctl start docker
測試安裝,docker 運行第一個項目!
sudo docker run hello-world
Docker 配置阿里鏡像加速服務
docker 運行流程:
docker配置阿里雲鏡像加速:
訪問阿里雲查看 docker 鏡像加速服務:https://account.aliyun.com/
阿里雲控制檯搜索:容器鏡像,點擊進入;
點擊左側的鏡像加速器,查看自己的加速地址(每個人不一樣),按文檔操作 即可;
驗證 docker 的鏡像加速是否生效:
docker info
顯示信息中的 Registry Mirrors 如果爲阿里雲提供的加速地址,即配置成功。