Docker 的點點滴滴

Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。git

Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。docker

容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。ubuntu

Docker 的架構:vim

原文轉轉來自:https://blog.csdn.net/S_gy_Zetrov/article/details/78161154 架構

一.鏡像(Image)

鏡像是靜態的、能夠被用戶互相分享的文件。咱們玩過雙系統和虛擬機的人都知道,首先你須要一個.iso鏡像,才能安裝系統。Docker中的鏡像也是這個東西,鏡像是靜態的,你不能對他操做,只能pull別人的鏡像或者push本身的鏡像。app

二.容器(Container)

鏡像是靜態不可操做的,只能被分享和下載,那什麼是能被操做的呢?就是容器裏!容器能夠理解爲鏡像的動態狀態,也就是咱們虛擬機中系統裝好後的狀態,其實這麼說是不對的,容器最符合的描述應該是Linux的iso文件的Live CD模式,好比咱們玩雙系統時都進入過Live CD模式,不安裝系統而直接進入系統,很神奇是吧,Docker的容器就是這個概念,只不過更加輕量更加迅速便捷。可是Live CD的害處就是你關機後做出的修改安裝的軟件所有gg,容器也是同樣,一旦被直接推出,以前安裝的gcc啊vim啊啥的就會所有gg掉。若是要保存修改,就須要將當前容器封裝成一個新的鏡像,這樣下次啓動這個新的鏡像後以前做出的修改還都在。性能

三.倉庫(Repository)

Docker中的倉庫很像git的代碼倉庫,你能夠pull本身以前push到本身倉庫的鏡像到本地,也能夠pull別人push到公共倉庫的鏡像到本身本地。你還能夠下載(pull)別人分享的鏡像到本身的本地,別人也能夠下載(pull)你的鏡像,由於Docker倉庫都是公共的。固然,每一個免費用戶有一個名額把本身的一個鏡像設爲私有,也就是禁止被分享給別人ui

安裝docker

使用命令:spa

sudo apt install docker.io

查看docker的版本.net

docker -v

獲取鏡像

sudo docker search ubuntu

pull 拉去到本地,默認是latest版本 (:lastes)=tag

sudo docker pull ubuntu

查看本地鏡像

sudo docker images

運行本地鏡像

-it 表示運行在交互模式

sudo docker run -it ubuntu
root@8f0fb5bd974f:/#

此處已是root用戶狀態,

運行的鏡像就是咱們本地的容器,在本地容器環境中安裝軟件

apt install vim

提示:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package vim

由於當前系統是精簡鏡像,因此必須先apt update一次才能夠。

apt update
.....
apt install vim

退出容器

使用 exit命令

exit

保存容器環境

exit退出容器後,在運行鏡像發現,vim 或安裝的軟件不存在,已經還原了,由於退出容器的時候沒有保存環境,要保存容器,就要把容器轉換爲鏡像。使用commit 命令

先獲取容器ID

sudo docker ps -a

 其實,在docker run 以後就能夠看到container的id了

 

執行commit命令

-m指定說明信息

-a指定用戶信息

a50efd41c14d容器的id

my_repo:vvim指定目標鏡像的用戶名、倉庫名和 tag 信息

sudo docker commit -m "ubuntu with vim " -a "dxb8888" a50efd41c14d my_repo:vvim

 

刪除鏡像、容器

sudo docker rm container_id  # 刪除容器
sudo docker rmi image_id    # 刪除鏡像

刪除鏡像的時候必需要刪除屬於鏡像下的容器,不然回報錯誤:Error response from daemon: conflict: unable to remove repository reference "ubuntu" (must force) - container 718c03f5fd16 is using its referenced image 94e814e2efa8 

若是刪除鏡像提示 Error: No such image: my_repo,表示tag不惟一,   就要帶上鏡像的tag

sudo docker rmi image_id:tag

 

將本地鏡像保存到hub

1:註冊hub https://hub.docker.com

2:終端登錄hub帳戶

docker login

輸入用戶名與密碼

3:使用tag命令將本地鏡像添加到新的標籤(與hub上新建的倉庫同樣)

sudo docker tag my_repo:vvim dxb8888/ubuntu_env:vvim

此時,本地有了另一個鏡像 dxb8888/ubuntu_env

4:將鏡像push到hub

sudo docker push dxb8888/ubuntu_env:vvim

相關文章
相關標籤/搜索