【我的Linux,我做主!】Docker基礎用法

在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協議。
【我的Linux,我做主!】Docker基礎用法
對於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版本都比較新。
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
我們可以找到鏡像文件Index of /docker-ce/linux/centos/目錄下的docker-ce.repo文件(圖2-4),然後下載到我們的node01服務器上(圖2-5和圖2-6)
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
然後我們編輯/etc/yum.repos.d目錄下的docker-ce.repo文件,把清華大學站點鏡像(圖2-7和圖2-8)的linux標識之前的地址替換repo文件中linux標識之前的地址(圖2-6-1和圖2-6-2)
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
此時我們便發現docker-ce的程序包便已經顯示在yum倉庫中了。
【我的Linux,我做主!】Docker基礎用法
(3)安裝docker-ce
我們在node01服務器上使用yum直接安裝docker-ce(圖2-10),需要知道的是我們安裝好docker後不用做任何的修改,直接啓動docker的服務。
# yum install docker-ce
【我的Linux,我做主!】Docker基礎用法
docker服務在啓動的時候默認會加載一個daemon.json的配置文件,它主要存放在/etc/docker目錄下。爲了讓鏡像下載的速度快一些,我們可以定義一個鏡像加速器,鏡像加速器主要來自於三類:docker cn的官方站點,還有阿里雲加速器,同時中國科技大學的鏡像加速器也非常不錯。
# mkdir /etc/docker
# vim /etc/docker/daemon.json
#鏡像加速器
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
(4)運行docker常用命令(登錄網址:https://hub.docker.com/
(4.1)
# systemctl start docker.service
啓動docker服務
# docker version
查看docker的版本
【我的Linux,我做主!】Docker基礎用法
# docker info
查看docker更詳細的環境信息(可以看到docker使用的是overlay2的存儲後端文件系統)
【我的Linux,我做主!】Docker基礎用法
# docker search nginx
搜索nginx鏡像
【我的Linux,我做主!】Docker基礎用法
# docker pull nginx:1.19.6-alpine
下載nginx的1.19.6-alpine版本的鏡像
【我的Linux,我做主!】Docker基礎用法
# docker image ls
列出鏡像文件
【我的Linux,我做主!】Docker基礎用法
(4.2)
# docker pull busybox
將busybox鏡像拖下來
# docker image rm busybox:latest
把busybox的鏡像刪除
# docker image ls --help
查看鏡像查看的使用幫助信息
【我的Linux,我做主!】Docker基礎用法
# docker image ls --no-trunc
顯示鏡像的完整校驗信息
【我的Linux,我做主!】Docker基礎用法
(4.3)基本命令模型
# docker container --help
docker容器命令幫助
【我的Linux,我做主!】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本地的所有網絡
【我的Linux,我做主!】Docker基礎用法
(4.4)創建busybox容器
# docker run --name b1 -it busybox:latest
# docker container run --name b1 -it busybox:latest
啓動一個busybox的容器,其中name爲b1,使用i交互式,使用t終端啓動
【我的Linux,我做主!】Docker基礎用法
在busybox中創建一個index.html文件,並寫上相應的歡迎語,然後把容器中的httpd服務啓動起來
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
此時我們發現一個容器已經啓動起來了,並且新開一個終端可以訪問到httpd服務提供的頁面。
# docker container ls
顯示當前運行的所有容器
# docker inspect b1
顯示b1容器的詳細信息
【我的Linux,我做主!】Docker基礎用法
【我的Linux,我做主!】Docker基礎用法
# docker container ls -a
顯示所有狀態的容器,包括已經停止的
【我的Linux,我做主!】Docker基礎用法
# docker container start -i -a b1
啓動一個或多個處於停止狀態的busybox容器,其中i表示交互,a表示附加到終端上
【我的Linux,我做主!】Docker基礎用法
# 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
查看容器運行的狀態
【我的Linux,我做主!】Docker基礎用法
# docker inspect web1
查看web1容器運行的詳細信息
# curl 172.17.0.2
使用curl命令可以正常的訪問nginx服務
【我的Linux,我做主!】Docker基礎用法
(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
【我的Linux,我做主!】Docker基礎用法
# docker container logs web1
直接在控制檯上查看web1容器產生的所有日誌
【我的Linux,我做主!】Docker基礎用法
(5)備註:
alpine是一個專門用於構建非常小的發行版的文件的微型發行版,它能夠爲你的程序運行提供基礎環境,但是體積非常小,這樣構建測試環境會非常方便。
如下表示的docker容器運行過程中經歷的所有狀態一個容器創建完後會經歷running,paused,stopped以及deleted狀態,運行的流程如下所示
【我的Linux,我做主!】Docker基礎用法





















































































































































—————— 本文至此結束,感謝閱讀 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章