Docker 安裝基礎教程

Docker 是什麼


我們常常說,“在我電腦上跑的好好的啊!怎麼你這就不行了?”

由於各式各樣的環境配置,總是能導致我們辛辛苦苦寫出來的代碼,遇到各種問題。

虛擬機是個不錯的解決方案。然而虛擬機是一個完整的操作系統,需要為它開闢指定的內存和磁盤,這些系統資源並不會因為你的服務沒有佔用而釋放,同時,也因為是一個完整的操作系統,啟動必然很慢。

後來 linux 開發出了 LXC(Linux Containers) 技術,所謂的內核容器虛擬化技術。它通過 linux 內核提供的 cgroups 和 namespace 特性,能很好的實現容器虛擬化。

那麼 cgroups 和 namespace 又是什麼東西呢?這裡先不說。

Docker 的早期版本中,LXC 作為底層架構的一個模塊,用來創建容器,現在用的則是自己開發的 libcontainer 。無論是 LXC 還是 libcontainer ,都離不開 cgroup 和 namespace。

Docker 的主旨是 BUILD,SHIP,RUN ,即構建鏡像,裝進倉庫,啟動鏡像。通常對應三個命令:

<code>docker build 
docker push
docker run/<code>

Docker 相比傳統的虛機,能用更少的資源、更小的體積

、更方便的操作以及更快的速度啟動我們的服務。

Docker 單機版安裝(Linux 版)


內核版本及硬件平臺(hardware-platform)

<code>➜  ~ uname -ir
4.18.0-147.5.1.el8_1.x86_64 x86_64/<code>

操作系統發行版本

<code>➜  ~ lsb_release -a
LSB Version:   :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:   CentOS Linux release 8.1.1911 (Core)
Release:        8.1.1911
Codename:       Core/<code>

Docker 提供社區版和 pro 版本,分別叫做 CE(Community Edition) 和 EE(Enterprise Edition),我們肯定選 CE,畢竟 EE 可是要收費的。

0. 卸載 Docker

如果之前沒有安裝過 Docker ,這一步可直接忽略。我會先卸載,再重新安裝一次。

ps:如果只有 yum ,需要將下述命令的 dnf 改成 yum

<code># 官方給的刪除方案
sudo dnf remove docker \\
                docker-client \\
                docker-client-latest \\
                docker-common \\
                docker-latest \\

                docker-latest-logrotate \\
                docker-logrotate \\
                docker-ce/<code>

這個時候,我們需要再看下還有沒有未刪除的:

<code>➜  ~ sudo dnf list installed  | grep docker
Repository epel is listed more than once in the configuration
docker-ce-cli.x86_64                        1:19.03.8-3.el7                                 @docker-ce-stable/<code>

可以看到,還有 cli (當然你可以不刪除),這裡我把它也刪掉:

<code>sudo dnf -y remove docker-ce-cli/<code>

如果你想刪除的十分徹底,你甚至可以這樣做(請務必保證你知道你在幹什麼

<code># 這會把你之前下載的鏡像、容器、網絡、卷等等,一起幹掉,請務必小心!!!
sudo rm -rf /var/lib/docker
# 有關 docker 的一些配置,如 registry mirror, 登錄信息等
sudo rm -fr /etc/docker
sudo rm -fr ~/.docker/<code>

到這裡, 你機器上有關 docker 的東西就都刪除完畢了。

1. 設置 docker 源(非必須)

我們為什麼要設置源,因為這能讓我們安裝的更加快速。

<code># yum 用戶請安裝 yum-utils , 可以提供 yum-config-manager 

sudo yum install -y yum-utils/<code>

這裡我們使用 阿里雲 docker-ce.repo

<code>sudo dnf config-manager \\
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum 用戶這樣操作:
sudo yum-config-manager \\
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo dnf makecache && sudo yum makecache

# 查看安裝的源
dnf repolist
# 或者
yum repolist/<code>


2. 安裝 Docker

Docker 官方提供了三種安裝方式:

  • 通過 docker repo 安裝(推薦)
  • 下載 RPM package 安裝
  • 通過腳本安裝

這裡我們使用第一種安裝方式,後兩種請參考 這裡


查看 Dokcer 版本

<code>➜  ~ dnf list docker-ce --showduplicates | sort -r | head -n 3
docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable

docker-ce.x86_64            3:19.03.7-3.el7                     docker-ce-stable

➜ ~ dnf list docker-ce-cli --showduplicates | sort -r | head -n 3
docker-ce-cli.x86_64              1:19.03.8-3.el7               docker-ce-stable
docker-ce-cli.x86_64              1:19.03.7-3.el7               docker-ce-stable/<code>

安裝 Docker 的指定版本

我們先按照官網給的步驟走一遍:

<code># 這裡注意下 docker ce 和 cli 的版本,去冒號 : 和中劃線 - 之間的部分, 我這裡選的 19.03.8
sudo dnf -y install docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
...
Installed:
docker-ce-3:19.03.8-3.el7.x86_64 docker-ce-cli-1:19.03.8-3.el7.x86_64   libcgroup-0.41-19.el8.x86_64/<code>

使用了阿里雲的 repo 後,安裝一下子快樂起來,很開心。

可以看到,我們安裝了

  • docker-ce-3:19.03.8-3.el7.x86_64
  • docker-ce-cli-1:19.03.8-3.el7.x86_64
  • libcgroup-0.41-19.el8.x86_64

3. Docker 開機自啟動

這個時候,如果我們運行 docker version ,會提示 docker daemon 無法連接。因為 Docker 是 CS 架構,docker daemon 此時還未啟動。

<code># 啟動 docker daemon
sudo systemctl start docker
sudo systemctl status docker # 此時可以看到 docker 處於 active(running) 狀態

# 設置開機自啟動
sudo systemctl enable docker/<code>

Docker 驗證

<code>sudo docker run hello-world/<code>

輸出了一大堆東西,可是我們還是看到了 Hello from Docker! 字樣,說明我們 Docker 已經可以正常工作了。

docker run 這個命令,事實上做了兩個動作

  • docker pull : 發現沒有 hello-world 鏡像時,先 pull 鏡像,然後再 run
  • docker run : 運行 hello-world 鏡像



4. 非 root 賬號使用 Docker

docker 會創建 docker group,我們可以把自己加入到該用戶組,以避免通過 root 來使用 docker

<code># 當前所在組
groups
dylan wheel nginx

# 查看 docker 用戶組是否已存在
sudo cat /etc/group | grep docker

# 把當前用戶加入 docker 組
sudo usermod -aG docker $USER

# 更新用戶組

newgrp docker

# 再次查看,已經計入了 docker 用戶組
groups
docker wheel nginx dylan/<code>

通過 docker version 查看,版本為 19.03.8 ,完美。

<code>➜  ~ docker version
Client: Docker Engine - Community
Version:           19.03.8

Server: Docker Engine - Community
Engine:
Version:          19.03.8/<code>

至此,Docker 安裝就結束了。


5. 鏡像加速

如果你使用阿里雲,可以在 這裡 找到你的鏡像加速專屬地址:

Docker 安裝基礎教程

其他鏡像加速地址:

  • 七牛雲: https://reg-mirror.qiniu.com
  • 中科大: https://docker.mirrors.ustc.edu.cn
  • 網易雲: https://hub-mirror.c.163.com
  • 騰訊雲: https://mirror.ccs.tencentyun.com


Links

阿里雲開源鏡像站 : 這個可以說很良心了,基本上涵蓋了國外的很多軟件,更新也很及時,deserve it。



分享到:


相關文章: