在Docker的主導下,又有了OCI和OCF的格式和標準。其中OCI表示的是Open Container Initiative,由Linux基金會主導於2015年6月創立,旨在圍繞容器格式和運行時制定一個開放的工業化標準,其中這個標準包含runtime-spec運行時標準和image-spec鏡像格式標準。因此後來就有了OCF即Open Container Format,runC是這個開放式容器標準的實現之一。
對於docker來講,他們專門提供了一個容納容器鏡像的站點https://hub.docker.com/ ,在這裏能夠找到大多數的容器鏡像。
(1)Docker的架構
整個docker包含一個Client端,還包含一個Docker_HOST即爲server端,因此docker是一個C/S架構的應用程序,docker有不少子程序、子命令,其中有一個是Docker daemon表示運行爲守護進程,它能夠監聽在某個套接字之上,它支持3種套接字類型:第一種是IPv4套接字,第二種是IPv6套接字,第三種是Unix Socket file套接字。Docker_HOST是真正運行容器的主機,主要包含Containers容器和Images鏡像。而鏡像來自於Registry即docker的鏡像倉庫,默認本地是沒有的,鏡像是分層構建的,全部鏡像都是隻讀的,因此啓動容器時是基於鏡像啓動容器的,在鏡像的基礎之上爲每一個容器建立一個專用的可寫層,從而來啓動一個容器,因此鏡像也須要在docker服務器的本地存儲,可是在主機上具體會運行哪些容器,咱們事先也是沒法評估的,因此會在專門的公共倉庫放置鏡像,咱們在須要使用的時候須要把鏡像加載到本地,這裏使用的是http或https協議。
對於docker來講,它主要由三個部分組成:Docker daemon,Docker client和Docker registries,而Docker registries目前事實上的位置默認是Docker Hub,但儘管如此,互聯網上能提供鏡像倉庫的地方還有不少,甚至咱們用戶本身還能夠建立本身的私有帳戶。
其中docker的對象主要包括:images鏡像、containers容器、networks網絡、volumes存儲卷、plugins插件等其餘對象。安裝docker依賴的基礎環境:64bits位CPU,Linux Kernel 3.10+及其以上的版本,Linux Kernel cgroups and namespaces
(2)Docker的鏡像文件
對於CentOS7系統來講,docker存在於它的Extras repository當中,它的版本咱們能夠經過訪問清華大學鏡像https://mirrors.tuna.tsinghua.edu.cn/ 來了解一下,咱們發如今CentOS系統自帶的docker軟件時1.13的版本,版本比較老舊,因此咱們不建議你們使用CentOS本身自帶的docker版本,由於如今不少應用程序要求咱們使用的docker版本都比較新。
咱們能夠找到鏡像文件Index of /docker-ce/linux/centos/目錄下的docker-ce.repo文件(圖2-4),而後下載到咱們的node01服務器上(圖2-5和圖2-6)
而後咱們編輯/etc/yum.repos.d目錄下的docker-ce.repo文件,把清華大學站點鏡像(圖2-7和圖2-8)的linux標識以前的地址替換repo文件中linux標識以前的地址(圖2-6-1和圖2-6-2)
此時咱們便發現docker-ce的程序包便已經顯示在yum倉庫中了。
(3)安裝docker-ce
咱們在node01服務器上使用yum直接安裝docker-ce(圖2-10),須要知道的是咱們安裝好docker後不用作任何的修改,直接啓動docker的服務。
# yum install docker-ce
docker服務在啓動的時候默認會加載一個daemon.json的配置文件,它主要存放在/etc/docker目錄下。爲了讓鏡像下載的速度快一些,咱們能夠定義一個鏡像加速器,鏡像加速器主要來自於三類:docker cn的官方站點,還有阿里雲加速器,同時中國科技大學的鏡像加速器也很是不錯。
# mkdir /etc/docker
# vim /etc/docker/daemon.json
#鏡像加速器
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
(4)運行docker經常使用命令(登陸網址:https://hub.docker.com/)
(4.1)
# systemctl start docker.service
啓動docker服務
# docker version
查看docker的版本
# docker info
查看docker更詳細的環境信息(能夠看到docker使用的是overlay2的存儲後端文件系統)
# docker search nginx
搜索nginx鏡像
# docker pull nginx:1.19.6-alpine
下載nginx的1.19.6-alpine版本的鏡像
# docker image ls
列出鏡像文件
(4.2)
# docker pull busybox
將busybox鏡像拖下來
# docker image rm busybox:latest
把busybox的鏡像刪除
# docker image ls --help
查看鏡像查看的使用幫助信息
# docker image ls --no-trunc
顯示鏡像的完整校驗信息
(4.3)基本命令模型
# docker container --help
docker容器命令幫助
# docker container create --name b1 busybox:latest
建立一個容器可是不啓動
# docker container start -i -a b1
啓動一個或多個處於中止狀態的busybox容器,其中i表示交互,a表示附加到終端上
# docker container stop b1
中止運行的容器
# docker container kill b1
強制中止運行的busybox容器
# docker container run --name b1 -it busybox:latest
建立完容器後直接運行
# docker container rm b1
刪除busybox容器
# docker container pause b1
暫停容器
# docker container unpause b1
取消暫停的容器
# docker container top 1b7a98d0bc3f
根據容器ID資源消耗比例排序運行的狀況
# docker container ls
顯示運行的容器,此命令和docker ps的效果同樣
# docker container ls -a
顯示全部狀態的容器,包括已經中止的
# docker network ls
顯示docker本地的全部網絡
(4.4)建立busybox容器
# docker run --name b1 -it busybox:latest
# docker container run --name b1 -it busybox:latest
啓動一個busybox的容器,其中name爲b1,使用i交互式,使用t終端啓動
在busybox中建立一個index.html文件,並寫上相應的歡迎語,而後把容器中的httpd服務啓動起來
此時咱們發現一個容器已經啓動起來了,而且新開一個終端能夠訪問到httpd服務提供的頁面。
# docker container ls
顯示當前運行的全部容器
# docker inspect b1
顯示b1容器的詳細信息
# docker container ls -a
顯示全部狀態的容器,包括已經中止的
# docker container start -i -a b1
啓動一個或多個處於中止狀態的busybox容器,其中i表示交互,a表示附加到終端上
# docker container kill b1
強制中止運行的busybox容器
# docker container rm b1
在容器中止運行後,刪除建立的b1容器
(4.5)建立nginx容器
# docker image ls
查看當前系統的鏡像文件
# docker run --name web1 -d nginx:1.19.6-alpine
啓動一個nginx的容器,其中名字叫web1,使用d參數到後臺運行
# docker ps
查看容器運行的狀態
# docker inspect web1
查看web1容器運行的詳細信息
# curl 172.17.0.2
使用curl命令能夠正常的訪問nginx服務
(4.6)建立redis容器
# docker serach redis
查看redis的鏡像版本
# docker run --name kvstor1 -d redis:4-alpine
建立一個redis鏡像,name爲kvstor,而後使用d到後臺運行
# docker ps
查看當前容器運行的狀態
# docker exec --help
查看使用交互式命令的幫助
# docker exec -it kvstor1 /bin/sh
繞過容器的邊界進入到kvstor1的容器,使用it的交互參數,使用的命令是/bin/sh
# docker container logs web1
直接在控制檯上查看web1容器產生的全部日誌
(5)備註:
alpine是一個專門用於構建很是小的發行版的文件的微型發行版,它可以爲你的程序運行提供基礎環境,可是體積很是小,這樣構建測試環境會很是方便。
以下表示的docker容器運行過程當中經歷的全部狀態一個容器建立完後會經歷running,paused,stopped以及deleted狀態,運行的流程以下所示html
—————— 本文至此結束,感謝閱讀 ——————node