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