Docker 基礎筆記

使用 Docker 的目的

對我在使用上有三點很重要的幫助分別為:

- Infrastructure as code

系統越來越大,安裝的套件越來越多,如果要重新建立起一個新的測試環境,是非常痛苦的一件事,要一步步回想。Docker file 記錄著所需要的套件與安裝的步驟,所以不論是建立測試環境或是在團隊內進行溝通與交接,會減少很多的成本。很多組態設定工具也都是相同的想法(ex. Ansible)。

- 獨立於環境,不會讓系統變髒

在建置測試系統時,很怕因為安裝或升級某些套件,導致作業系統或其它原有的應用程式無法正常運作,所以保持系統環境的穩定是很重要的一件事。Docker Container 在作業系統的使用者空間獨立執行,與作業系統隔離,所以在開發上不受作業系統套件或版本的影響。

- 方便測試各版本系統

Docker 快速建立與獨立執行的關係,所以可以很快速的建立各種版本的測試環境。

安裝

若系統內己經存在有 Docker,要 update 到最新的版本

1
2
3
4
5
6
$ sudo apt-get install apt-transport-https
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get purge lxc-docker*
$ sudo apt-get install lxc-docker

問題

- 啟動docker daemon 問題

在 Ubuntu 作業環境下,docker 由 v1.6 更新到 v1.9 時,在啟動docker daemon 發生

Failed to start docker.service: Unit docker.service is masked.

解法:

1
2
3
$ systemctl unmask docker.service
$ systemctl unmask docker.socket
$ systemctl start docker.service

Reference

Install Docker
Ubuntu 系列安装 Docker
How Do I upgrade Docker

ubuntu - docker service not starting