02 docker的基本用法
本章內(nèi)容
1、OCI
2、docker核心組件--Cgroup與runC
3、docker的架構(gòu)
4、docker的基本操作
5、安裝docker環(huán)境
6、創(chuàng)建第一個容器
6、docker容器的狀態(tài)變換
----------------------------------------
上一節(jié)中,我了解的docker的由來,和容器技術(shù)的基礎內(nèi)容。這一節(jié)我具體了解docker具體如何實現(xiàn),以及相關(guān)的基礎概念,和我們需要掌握的內(nèi)容;
?
1、OCI
OCI -- open container initative
由Linux基金會主導與2015年6月創(chuàng)立,目的在于為榮容器格式和運行時指定一個開放的容器技術(shù)的工業(yè)標準;
容器的兩個規(guī)范:
1、運行規(guī)范(the runtime specificaiton(runtime-spec)) 它定義了如何在磁盤進行解壓縮的“文件系統(tǒng)包”;
2、鏡像規(guī)范(the image specification(image-spec)) ? 在高級別的OCI實現(xiàn)中,OCI映像然后將該映像解壓縮到OCI運行時文件系統(tǒng)包中;dockerhub.com 為官方鏡像下載站點(使用該docker鏡像站點,需要進行加速才行);
?
2、docker核心組件--Cgroup與runC
docker的核心組件包含兩個:
1、Cgroup--用于對容器進行6中namespaces隔離資源分配;
2、內(nèi)核引擎
docker最早的內(nèi)核環(huán)境為LXC,因為它天生的缺陷(無法滿足批量化的容器處理),所以docker公司,自行開發(fā)了libcontains來替代LXC;
libcontains則是分裝了更多的Linux內(nèi)核功能,其中包括Cgroups,namespaces,netlink以及netfilter等功能;
之后為了讓docker容器更好的兼容到其他操作系統(tǒng),則將libcontains進一步更新為runC的內(nèi)核引擎,而OCI則是最早維護runC內(nèi)核引擎的公有組織;
runC
它是一種開放的容器格式--OCF(Open Container Format)
同時,runC是一個CLI工具,是根據(jù)OCI規(guī)范生成和運行容器,特點如下:
1、容器作為runC的子進程啟動,可以嵌入到其他各種系統(tǒng)中,而無需運行守護進程(就是不要內(nèi)核進程);
2、且runC建立在libcontainer之上,它同樣可以為數(shù)百萬的docker引擎安裝提供動力;
?
3、docker的架構(gòu)
docker的架構(gòu)為C/S架構(gòu),但是一般情況下,我將客戶端與服務器端(daemon端)放置于同一臺服務器上面;
docker的架構(gòu)如下:
docker 有兩個版本:一個ce社區(qū)版本,一個ee企業(yè)版本;(還有一個開源版本,叫做Moby(這是因為了商業(yè)競爭的原因))
docker_host 是真正運行容器的主機:containers 容器 和 images; images 來自于registry,這些鏡像可以在dockerhub.com上面去下載; registry 是docker的鏡像表,鏡像是可以共享的;registry 倉庫通過https協(xié)議去網(wǎng)上指定即可;但是,這些鏡像一般在國外服務器上,我們需要指定鏡像加速,才能更好的下載這些鏡像文件,其中最常用的兩種加速方式為:官網(wǎng)直接加速(docker.cn)和第三方加速器(ali云的加速方式(阿里的加速方式需要賬號密碼)); 【docker的核心就是是去創(chuàng)建這些鏡像文件,這點,我們在后面的文章中繼續(xù)做介紹!】同時,一般如果不想在公網(wǎng)倉庫下下載鏡像,也可以搭建自己的倉庫;
?
4、docker支持的基本操作
docker的操作對象只有:1、鏡像文件? 2、containers容器 3、網(wǎng)絡 4、卷 5、插件 6、其他objects;
所以,docker下的所有命令都是圍繞這六個內(nèi)容來進行;其中最主要的是鏡像文件和容器;
images
1、鏡像是一個只讀模板,其中包含用于創(chuàng)建docker容器的說明;
2、通常,上層鏡像是基于下層鏡像的,還有一些額外的自定義參數(shù),來關(guān)聯(lián)上下層鏡像文件;
3、您可以創(chuàng)建自己的鏡像,也可以只使用其他人創(chuàng)建的圖像并在注冊表中發(fā)布;
containers
1、我們基于鏡像來運行容器;
2、您可以使用docker API或CLI create,run,stop,move或delete容器;
3、您可以將容器連接到一個或多個網(wǎng)絡,將存儲連接起來,甚至可以根據(jù)其當前狀態(tài)創(chuàng)建新映像;
?
5、安裝docker環(huán)境
安裝環(huán)境:CPU必須是64位支持虛擬化技術(shù);Linux內(nèi)核kernel 內(nèi)核必須為 3.10+以上版本(支持namespaces與Cgroup);所以,我們最好使用centos7來搭建docker環(huán)境;
a\安裝dockers的yum倉庫;
cd /etc/yum.repo.d/wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
修改yum倉庫,將地址 docker-ce.repo 中的 https://download.docker.com/ 修改為 https://mirrosrs.tuna.tsinghua.edu.cn/docker/
vim /etc/yum.repo.d/docker-ce.repo :%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@:wq //保存并退出
b\安裝docker-ce
yum install docker-ce -yc\配置docker倉庫加速
因為docker鏡像倉庫處于美國,我們需要安裝鏡像倉庫加速,使用在中國的鏡像源;
有兩種:1、使用美國倉庫在中國的鏡像源?? 2、使用阿里的倉庫(需要賬號密碼)
我們這里使用第一方式,docker倉庫在中國的倉庫鏡像:
mkdir /etc/docker/vim /etc/docker/daemon.json
{"registry-mirrors":["https://reistry.docker-cn.com"] }
:wq
d\啟動docker服務
systemctl start docker此時就可以使用docker命令
此時,就可以使用docker命令,來進行容器管理;(包括鏡像、卷、網(wǎng)絡等等一系列資源)
查看鏡像加速功能: docker info
此時,我們能看到倉庫加速為中國的鏡像點,則表示為中國地區(qū)的鏡像加速方式;
自此,docker環(huán)境安裝成功;
【除了docker-cn的加速點外,還有很多的加速點,例如阿里云加速器,中國科技大學等】
?
docker的常見子命令:
docker search 查找容器Hub從鏡像中
docker pull 推送一個鏡像或者倉庫從默認指定的倉庫中
docker images 顯示鏡像
docker create 創(chuàng)建一個新的容器
docker start 開啟一個或者多個停止著的容器
docker run 運行一個新的容器
docker attach 連接到運行著的容器
docker ps 顯示容器
docker logs 讀取容器的log信息
docker restart 重啟容器
docker stop 停止一個或者多個容器
docker kill 關(guān)閉一個或多個運行著的容器
docker rm 移除掉一個或多個容器
【具體用法在后面實驗中具體介紹】
查看對應的鏡像文件:
?
6、創(chuàng)建第一個容器
有了docker的容器環(huán)境以后,我們只需要去官方指定的倉庫中去下載你需要的容器即可(當然,也可以是第三方倉庫地址);
a\下載鏡像
我們這里就去dockerhub.com下載鏡像,這里我們選擇一個alpine的小型Linux系統(tǒng);
docker pull alpine? 查看鏡像:
b\創(chuàng)建容器
docker run --name a1 -it alpine:latest其中 -it 創(chuàng)建一個交互窗口,和一個tty的虛擬通道,并連接上來;命名為a1;
c\網(wǎng)絡配置
從新連接一個會話,通過 ifconfig 可以查看到 宿主機產(chǎn)生了一個端口,如下:
查看網(wǎng)橋情況:
yum install bridge-utils -y此時,該網(wǎng)卡則則加入到了docker0中(docker0是默認網(wǎng)橋)
同時,我們進入到容器 a1 中可以看到,這里生成了一個172.17.0.2的虛擬網(wǎng)卡設備
? 通過本地,可以ping通,容器的網(wǎng)卡地址,就類似于虛擬機一樣;
到此,我們第一個容器就創(chuàng)建成功!!
?
6、docker容器的狀態(tài)變換
? 和命令相關(guān)的狀態(tài)變化如下圖:
【這里包含裝換容器狀態(tài)的命令,需要自己去嘗試】
轉(zhuǎn)載于:https://www.cnblogs.com/BurnovBlog/p/11141632.html
總結(jié)
以上是生活随笔為你收集整理的02 docker的基本用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse 常用快捷键-java
- 下一篇: 面试经常提问