Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。git
Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。docker
容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。ubuntu
Docker 的架構:vim
原文轉轉來自:https://blog.csdn.net/S_gy_Zetrov/article/details/78161154 架構
鏡像是靜態的、能夠被用戶互相分享的文件。咱們玩過雙系統和虛擬機的人都知道,首先你須要一個.iso鏡像,才能安裝系統。Docker中的鏡像也是這個東西,鏡像是靜態的,你不能對他操做,只能pull別人的鏡像或者push本身的鏡像。app
鏡像是靜態不可操做的,只能被分享和下載,那什麼是能被操做的呢?就是容器裏!容器能夠理解爲鏡像的動態狀態,也就是咱們虛擬機中系統裝好後的狀態,其實這麼說是不對的,容器最符合的描述應該是Linux的iso文件的Live CD模式,好比咱們玩雙系統時都進入過Live CD模式,不安裝系統而直接進入系統,很神奇是吧,Docker的容器就是這個概念,只不過更加輕量更加迅速便捷。可是Live CD的害處就是你關機後做出的修改安裝的軟件所有gg,容器也是同樣,一旦被直接推出,以前安裝的gcc啊vim啊啥的就會所有gg掉。若是要保存修改,就須要將當前容器封裝成一個新的鏡像,這樣下次啓動這個新的鏡像後以前做出的修改還都在。性能
Docker中的倉庫很像git的代碼倉庫,你能夠pull本身以前push到本身倉庫的鏡像到本地,也能夠pull別人push到公共倉庫的鏡像到本身本地。你還能夠下載(pull)別人分享的鏡像到本身的本地,別人也能夠下載(pull)你的鏡像,由於Docker倉庫都是公共的。固然,每一個免費用戶有一個名額把本身的一個鏡像設爲私有,也就是禁止被分享給別人ui
使用命令: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
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