菜鸟系列docker——docker基本概念(1)
docker基本概念
1.準備
這里先介紹容器技術,后續再介紹docker。docker是容器的一種,除docker以外,還存在coreos。不過在當前趨勢下容器和docker基本上可以劃為等號了。
1.1 容器是什么?
談到容器,大家可能很熟悉,就和大家在工地看到的集裝箱房子一樣,里面基本設施都有,多個集裝箱房互不干擾,公用一些水電基本設施,當需要換個地方是時候,把集裝箱搬過去就行。而這里的容器就是這樣的一種技術,可以把我們開發的一些程序,所需要的環境進行打包,使得我們的應用程序可以在虛擬機、服務器、云服務等平臺跑,而不需要在各個平臺搭環境,在運行程序。容器是一種輕量級、可移植等軟件打包技術。
容器一般由2部分組成,應用程序和依賴庫或依賴的其他程序。可能說到這里,就有人問這和虛擬機有啥區別,都是需要一臺宿主機運行,虛擬化出自己的環境跑自己的代碼。這里我們就進行簡單的分析:
- 虛擬機:需要宿主機上虛擬硬件,在此基礎上再部署系統,再部署應用。
- 容器:直接在宿主機運行,就和一個進程差不多
1.2 容器有哪些優點?
各位是否存在本地跑的好好的,在交付的時候發現問題一大堆,不是缺這個就是缺那個。最后來了句“在本地跑的好好的”。此時,由于環境問題,你可能就涼了。
這個時候,容器就可以大顯神威,容器就把集裝箱的思維用在IT上,我們可以將環境、依賴及程序全部打包成一個容器,在其他環境直接運行這個容器就好,就可以不考慮什么環境問題,缺庫問題來。通過容器可以將任何應用及其依賴打包成一個輕量級、可移植、自包含的容器。容器可以運行在幾乎所有的操作系統上。
2.docker技術
上面簡單介紹來下容器是什么?容器能干啥?接下來肯定就是怎么干了?后續對容器的操作本系列將逐步進行講解,主要是對docker技術進行學習。
2.1 docker架構
Docker 采用的是 Client/Server 架構。客戶端向服務器發送請求,服務器負責構建、運行和分發容器。客戶端和服務器可以運行在同一個 Host 上,客戶端也可以通過 socket 或 REST API 與遠程的服務器通信。其中,docker客戶端我們一般就是直接通過命令操作,通過docker命令在宿主機進行容器、鏡像等一系列操作。而docker服務器以linux后臺的方式運行,執行我們操作的命令,例如容器的創建、運行,打鏡像等操作。
2.2 docker學習核心
主要是以下3點,鏡像、容器和倉庫。
- 倉庫Registry
Registry 是存放 Docker 鏡像的倉庫,Registry 分私有和公有兩種。 Docker Hub(https://hub.docker.com/) 是默認的 Registry,由 Docker 公司維護,上面有數以萬計的鏡像,用戶可以自由下載和使用。當然,我們也可以搭建自己的私有倉庫。 - 鏡像image
鏡像就是我們創建容器的一系列操作的集合,通過這個鏡像創建容器。我們一般寫一個Dockerfile文件構建鏡像。這里鏡像就和我們的程序安裝包類似,安裝后就可以運行程序了。 - 容器container
容器就是鏡像運行后的實例,類似于安裝包安裝后的程序,可以運行和退出。
2.3 docker安裝
“工欲善其事,必先利其器”,在正式學習之前,先安裝docker,這里筆者是在centos環境下進行操作,其他環境下各位大佬自行度娘哈。
安裝docker
因為一般docker操作時都需要root用戶權限,這里建議把當前用戶加入docker用戶組
# 添加 docker 用戶組 groupadd docker # 把需要執行的 docker 用戶添加進該組,這里是 eggsy gpasswd -a eggsy docker # 重啟 docker systemctl restart docker如果普通用戶執行docker命令,如果提示get …… dial unix /var/run/docker.sock權限不夠,則修改/var/run/docker.sock權限 使用root用戶執行如下命令,即可
sudo chmod a+rw /var/run/docker.sock # docker服務開機自啟動 systemctl enable docker刪除docker
yum list installed|grep docker sudo yum -y remove docker-ce.x86_64 docker-ce-cli.x86_64 sudo rm -rf /var/lib/docker轉載于:https://www.cnblogs.com/jiliguo/p/10740687.html
總結
以上是生活随笔為你收集整理的菜鸟系列docker——docker基本概念(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 错误:java.lang.ClassNo
- 下一篇: Windows 下使用 工具修改文件的