在Ubuntu運行Docker

30 July 2015 — Written by Sky Chang
#Azure#Docker#Linux#Ubuntu#VM

首先,在開始前,小弟一定要推薦一下這個網站和這個網站,這個兩個網站寫了很多,而且由淺入深的教學,而這篇文章,一開始會先練習這個網站的前篇教學,並且搭配此網站網站的說明,下一篇,則會使用 Microsoft 提供的 ASP.NET 5 Preview Docker Image 來完成 ASP.NET MVC 應用程式。

安裝 Docker

基本上,Ubuntu 已經有內建了 Docker,或是使用 apt-get 來安裝也是可以的,但是既然神人大大推薦用 curl 的方式取得,那我們這邊就使用 curl 來取得 Docker吧!!

curl -sSL https://get.docker.com/ubuntu/ | sudo sh

enter image description here

完成之後,我們就可以啟動 Docker了!!

sudo service docker start

enter image description here

Hello Docker

接下來,我們先採用另外一位神人大的教學,來簡單的輸出一下 Hello Docker.

sudo docker run ubuntu:12.04 echo ‘Hello Docker’

enter image description here

是的,就是這樣簡單,我們就可以看到Hello Docker!!,但是大家可能會想,啥?不就是只是輸出一個 Hello Docker 啊…這和虛擬化,容器技術有啥關係。

沒錯,別懷疑,這個 Hello Docker 其實是從虛擬化出來的 Ubuntu 12.04 版本 echo 出來的!!!

也就是說,那短短的幾秒鐘時間,Docker 就已經把虛擬的 OS 準備完成,並且執行,且輸出了!!

所以,上面那行指令的意思,就是說,我們要 Run 一個 ubuntu:12.04 版本,並且 run 完成之後,於 Sehll 執行 echo ‘Hello Docker’ . 而在執行的過程中,他就會自動地把 ubuntu 12.04 的 image 載下來,結果如下圖。

enter image description here

完成後,我們就可以透過以下指令,來看看目前這台機器有多少個 image,從下圖就可以看到 Ubuntu 已經安裝上去了。

sudo docker images

enter image description here

登入終端機

但是,我們不可能每次都把一整串的字串,串到 run 後面吧…我們需要可以登入,登入!!登入啊啊啊!!

當然,這也可以做到,我們可以下以下的指令,這個指令的意思就是,建立容器的時候,順便建立一個終端機( -t ),並且建立與容器標準輸入的互動進行連結 ( -i ),這樣你就可以在裡面下指令操作了~~

sudo docker run -t -i ubuntu:12.04

但是,請注意,雖然我們從終端機離開,並不會關掉容器,但如果我們把容器 Kill 或是 移除,那你裡面做的所有事情都會不見…如果你在裡面做了些事情,而希望把裡面的東西存下來,就必須使用 commit 指令,其中7ce430e7c072是表示目前的容器ID ( 可以透過 docker ps 來查看目前執行的容器 ),而aspmvc/text:ver1 代表的是容器的名稱和Tag名稱。

(此指令要在容器外面下喔!)

sudo docker commit -m=’簽入描述’ -a=’簽入者’ 7ce430e7c072 aspmvc/test:ver1

重新登入容器

另外,如果你登出了,想要在登入進去那一個容器,我們可以先用

sudo docker ps -a 來查到所有目前執行的容器。

然後再用以下指令登入( 後面是id ),下面兩個的差異,一個是直接回到容器裡,另外一個則會開另外一個終端機,目前建議使用第二種方式。

sudo docker attach 665b4a1e17b6

sudo docker exec -i -t a66289aeefa6 bash

停止與刪除背景執行的容器

若有執行中的容器,想要停止,可以透過底下的指令來完成。

sudo docker ps -a

sudo docker stop 9162a162f840

停止後,就可以用 rm 指令來移除容器。 ( 或是直接用 rm -f 來強制停止)

sudo docker rm 9162a162f840

如果有太多容器,想要一次全部移除,可以下以下指令

sudo docker rm $(sudo docker ps -a)

enter image description here

基本上,初步就到這篇,下一篇我們會透過 Microsoft 提供的容器,來建立 ASP.NET MVC 應用程式。

參考資料

Sky & Study4.TW