SlideNow 建立記錄 - (1) Docker

什麼是Docker


簡單解釋就是一個container base的virtualization framework. 他需要的資源非常少(不像vm),檔案系統也是獨立的,不需要與其他系統共享,你可以寫自己的Dockerfile來建立自己的container,甚至可以像github一樣commit到docker.io上面去,其實我想我有說等於沒說

為什麼要使用Docker

這個可能比較實際,我要使用它的原因如下

  • 不用把系統裝得一團亂
  • 能夠迅速的架設環境
  • 希望沒有Downtime的更新

通常在安裝系統的時候常常會有版本更新的問題,或者很多相依性的問題,比如我寫的一個舊的app用的是node.js 0.8,但是我新寫的App用了0.22,這時候我想要維持新舊的App都可以用,這時如果用Docker,我就可以分成兩個的container執行,非常的方便。
Docker可以透過Dockerfile寫script,所以我可以迅速的重建自己的測試或正式環境
如果系統都是透過container運行,我可以迅速地切換container,甚至可以rollback到之前的container版本

Docker 安裝 in ubuntu 14.04 LTS

我的系統環境為ubuntu 14.04 LTS版本,官方安裝如下:

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

不過我發現這樣裝的版本不會是最新的(目前為0.11.1),所以我覺得還是直接安裝lxc-docker就好了,如下:

$ sudo apt-get update
$ sudo apt-get install lxc-docker
$ sudo ln -sf /usr/bin/docker /usr/local/bin/docker

之後可以使用下列指令,確定安裝是否成功

$ sudo docker version
Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99
Server version: 0.11.1
Server API version: 1.11
Git commit (server): fb99f99
Go version (server): go1.2.1
Last stable version: 0.11.1

不需要用sudo

安裝完為了避免每次都要下sudo,你可以把自己加入docker這個group

$ sudo usermod -a -G docker #account# 

登出在登入即可使用

介紹指令

docker ps

$ sudo docker ps
CONTAINER ID    IMAGE          COMMAND         CREATED        STATUS        PORTS            NAMES

這個指令可以顯示目前正在run的container
你可以在後面加下列參數:
-a : 可以顯示所有的docker包括沒有在運作的container(預設只顯示正在跑的container)
-q : 只顯示container id
-s : 顯示container的size
-l : 顯示最後一個被created的container
-n : n是數字,顯示最後n個被created的container
--before = "" : 把id或name之前的container顯示出來
--since = "" : 把id或name之後的container顯示出來

docker pull

$ sudo docker pull ubuntu

把docker.io上面有人已經建立好的image抓下來

docker search

$ sudo docker search ubuntu
NAME                        DESCRIPTION                      STARS     OFFICIAL   TRUSTED
ubuntu                      Official Ubuntu base image       168       
stackbrew/ubuntu            Barebone ubuntu images           36                   
crashsystems/gitlab-docker  A trusted, regularly updated...  19                   [OK]

搜尋docker.io上面有人已經建立好的image

docker run

$ sudo docker run -i -t ubuntu /bin/bash
root@8fdf10f34490:/# 

可以run container的bash

指令部分在慢慢介紹,大家可以先試用看看

額外有用的指令(5.30 持續會更新)

如果你想要清空所有的正在跑的的container,請使用以下指令

$ sudo docker stop $(docker ps -a -q)
$ sudo docker rm $(docker ps -a -q)
comments powered by Disqus