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. 鏡像加速
如果你使用阿里雲,可以在 這裡 找到你的鏡像加速專屬地址:
其他鏡像加速地址:
- 七牛雲: 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。
閱讀更多 iyuhp 的文章