Docker 筆記(一)

今天總算有時間花了個下午摸一下『Docker』:一個強大的 container,然後做了一個node(.js)的實作,在這裡記錄一下。

Q-000:docker是什麼?(from良葛格部落格
英文是容器,光看名字但仍然是霧裡看花。其實就類似早先使用的vmware或virtual box的概念。主要是提供一個 lightweight virtual box,讓使用者能透過 cmd tool 針對 applications 的作業環境的管理及維護,另外加入了 git 的觀念,把  os 當作是一個 repository 管理。
所以,個人的認知是 docker = lightweight Virtual Box + github。
接下來就要多搞懂 images, container 及 data management 了,當然 container hub 的重要性就看有沒有要備份了。
這裏我也弄了一下簡單的 node app on Docker , 原碼放在 github 及 hub上的 image 。

*也不只能透過cmd tool,官方有釋出 Kitematic 作為圖形介面的管理。


目前我用的版本是 v1.6.0 (2015/04/25)。安裝時主要包含四個元件:
 - boot2docker
 - boot2docker management tool v1.6.0
 - docker client v1.6.0
 - virtual box v4.3.26-

執行方式可透過 /application 或是 cmd tool 執行 boot2docker。
最初安裝時會在 $(home)/.boot2docker 放置 image檔,然後要設置環境變數到 .bash file。
像安裝完 virtualbox 一樣,下一件事就是安裝 OS,可透過 cmd 安裝。
docker pull debain:latest
*debain 最新是 7.4 (wheezy)
常用的 docker 參數:
-t: tty to container
-i: interactive mode
-v: mount a host directory as a data volume
-d: run container in background
-P: map port in container to host, default 5000:5000
-p: select port mapping

Q-001:哪裡可以找到image?
因為他是 virtualbox,所以所有檔案就是一個 iso 檔。

Q-002:container跟image的不同?
image 應該就是各自的 os,但 container 則是對應到 service。這概念還不是很確定。像是不同 os上的 folder 能否互通之類的,以及一個 image 上跑 n 個 services 是否等同於 n 個 containers?

Q-003:tags是什麼?跟ID有什麼不同?
tags 似乎只是作標式,教學文件說就像 os有不同個 distribution version,但為什麼 image id是一樣的?目前還不清楚。

Q-004:如何移除/改變tag?
docker tag [USERNAME/REPOSITORY:TAG]  [NEWUSERNAME/NEWREPOSITORY:NEWTAG]

Q-005:刪除.boot2docker 對daemon有什麼影響?
docker client 會找不到 iso 檔案一直在等待。

Q-006:怎麼更新 linux 版本?
這裡我本要把 debian 6 -> debain 7,得先確認幾個步驟:
1. 更新系統套件
apt-get update & apt-get upgrade --show upgrade
2. 備份
3. 確認 kernel  (kernel update)
4. stop service
5. start Screen
6. upgrade to Debian 7 (How-to-Upgrade)

Q-007:如何移除 Docker
(ㄅ)How-to-fully-uninstall-Docker
(ㄆ )uninstall-script
這裏主要是想知道 Docker 究竟安裝了什麼東西在主機,以及他們的路徑。

Q-008:遇到 Error 如下
 FATA[0032] An error occurred trying to connect: Get https://4.3.1.0:2376/v1.18/images/json: dial tcp 4.3.1.0:2376: i/o timeout   

檢查一下 boot2docker 這隻程式有沒有正常作用或是執行 boot2docker restart.

Q-009: 如何進入 image.
參考指令
 docker -d 1ttt9/docker-node-hello:latest  
 docker run -d 1ttt9/docker-node-hello:latest  
 docker ps  
 docker exec -ti kickass_sammet bash  

Q-010:

參考:
1. Dockerizing a nodejs application
2. Dockerfile tutorial
3. Docker 中文教學文件

Comments

Popular posts from this blog

股票評價(Stock Valuation) - 股利折現模型

openwrt feed的使用

How to convert Markdown into HTML