前二天主要是在介紹 Docker 的一些基本概念,今天要介紹如何把 Docker 安裝並且執行起來。
一.安裝前準備
安裝 Docker 使用的作業系統是 CentOS 7.3, Kernel 使用預設的 3.10.0-514
這裡要注意的一點是 Docker 會呼叫到 Linux Kernel 的 Namespace 和 Cgroup 所以需要選擇正確版本的 Linux Kerenel,不然 Docker 的 service 會啟動不起來。像是之前我就用 CentOS 6.1 的作業系統,預設 Kerenel 版本是 2.6.32-131,安裝 Docker結果Docker 的 service一直都沒辦法啟動,後來換了 CentOS 7 才成功的把 Docker service執行起來。
- 查看作業系統版本指令如下:
$ lsb_release -a
如果找不到 lsb_release 指令,就需要使用以下指令安裝套件
# yum install -y redhat-lsb-core
- 查看 Kernel 版本指令如下:
$ uname -a
執行結果如下圖:
二. 安裝 Docker
方法一: 直接使用CentOS 7 預設的 yum 安裝
- 使用的指令如下(需要切換到 root 權限的使用者):
# yum install -y docker
- 啟動 docker 的 service 指令如下
# systemctl start docker
安裝完 docker 之後使用 docker version
,確認安裝的版本
方法二: 如果要使用較新版本的Docker,就需要從網路上找 Docker rpm 安裝檔,來安裝
- 還是一樣使用 yum 指令,如下
# yum install https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm
可以到以下網站去選擇符合自已需求的 docker 版本:
https://yum.dockerproject.org/repo/main/centos/7/Packages/
- 啟動 Docker 的 service 指令如下
# systemctl start docker
- 使用
docker version
查看版本,是否正確畫面如下
三. 如何把安裝完的 Docker 解安裝
- 使用 rpm 查看安裝的 docker 有哪些東西,指令如下
# rpm -qa|grep docker
如下圖
- 執行解安裝指令如下
# yum remove docker-client
# yum remove docker-common
# cd /etc
# rm –rf docker
# cd /var/lib
# rm –rf docker
四. 啟動 Docker service 指令如下
啟動 docker service 的指令上面已經有介紹到了,如下
# systemctl start docker
如果下次重新開機,需要能自動啟動 docker service,使用以下指令設定
# systemctl enable docker
五. 遇到的問題
在使用 root 使用者權限時可以順利的執行 docker images
指令,但是換到一般的使用者執行 docker images
指令時就會收到錯誤訊息,如下圖:
這個問題主要是在執行 docker service 時,會有一個檔案 /var/run/docker.sock,它的權限不能給一般使用者執行,如下圖:
要解決這個問題,主要有二個方法:
方法一: 使用偷吃步的方式,直接把 /var/run/docker.sock 檔案的權限開到最大,如下指令:
# chmod 777 /var/run/docker.sock
但是使用這種方式會有一種缺點,就是下一次重新啟動 docker service 時,這個檔案的權限要會被改回之前的狀態,所以還是會沒有把問題撤底解決。
方法二: 做以下幾個步驟的設定
- 修改 /etc/docker/daemon.json 的檔案,如果沒有此檔案直接建立新的檔案,指令如下:
Vi /etc/docker/daemon.json
檔案內容如下:
{
“live-restore”: true,
“group”: “dockerroot”
}
JSON的逗號要記得加不然重新啟動 Docker Service 會啟動不起來
- 使用 root 權限把 user1 指令加入到 dockerroot 的 group,指令如下
# usermod -aG dockerroot user1
- 重新啟動 docker service,指令如下
# systemctl restart docker
- 再一次使用一般使用者(user1)執行
docker images
指令,確認是否解決了問題
之後我所介紹使用的 docker 版本如果沒有特別說明,都是使用 1.12.6。今天已經把docker 安裝完成了,明天就可以開始把 docker image pull 下來使用。