博主最新再學習docker,分享一下安裝的心得,同步會更新到CSDN上
-
環境准備
虛擬機 |
1台 |
系統版本 |
CentOS Linux release 7.8.2003 (Core) |
內核版本 |
5.16.2-1.el7.elrepo.x86_64 |
訪問外網 |
放通 |
源 |
阿里源 |
-
卸載docker
-
參考:
卸載 Docker :https://docs.docker.com/engine/install/centos/#uninstall-docker-engine
-
查看是否安裝docker
docker info
rpm -qa | grep docker
-
卸載 Docker 引擎、CLI 和 Containerd 軟件包:
yum remove docker-ce docker-ce-cli containerd.io
#或者使用 rpm -e docker-ce docker-ce-cli containerd.io
-
手動清理刪除所有映像、容器和卷:
#查找出docker的相關文件夾
find -name 'docker'
#rm -rf 刪除這些文件夾
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
-
方式一:yum在線安裝
-
更新docker相關的yum源
適用於:在線安裝:適用於學習,測試,有外網的機器
#安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils device-mapper-persistent-data lvm2
#設置倉庫為阿里源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
或者
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cp docker-ce.repo /etc/yum.repos.d
#更新源
yum clean all && yum mackecache
#檢查版本
yum list docker-ce --showduplicates | sort -r
yum list docker-ce-cli --showduplicates | sort -r
#注意overlay2可能需要升級內核,它需要內核4.0以上支持:https://blog.51cto.com/daibaiyang119/2160923
-
安裝:
#默認安裝
yum install docker-ce docker-ce-cli containerd.io
#指定版本
yum install docker-ce-20.10.9-3.el7 \
docker-ce-cli-20.10.9-3.el7 \
containerd.io
#啟動和查看
systemctl start docker
systemctl status docker
docker --version
docker info
-
方式二:手動下載rpm包安裝
適用於生產環境或者內網環境離線安裝
-
瀏覽器進入官網的下載地址,選擇自己 需要的包
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
導出需要下載的地址,比如下載20版本
docker-ce:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-20.10.0-3.el7.x86_64.rpm
docker-ce-cli:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-20.10.3-3.el7.x86_64.rpm
docker-ce-rootless-extras:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-rootless-extras-20.10.3-3.el7.x86_64.rpm
containerd.io:
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.4.9-3.1.el7.x86_64.rpm
-
rpm安裝和啟動
需要依賴:
下載依賴后再安裝:https://pkgs.org/download/
rpm -ivh *.rpm
#啟動和查看
systemctl start docker
systemctl status docker
docker --version
docker info
-
方式三:二進制安裝
二進制安裝多用於企業的生產環境,安裝也不復雜,生產環境可用此環境
-
官方文檔:
https://docs.docker.com/engine/install/binaries/
https://docs.docker.com/engine/install/linux-postinstall/
-
創建docker用戶組
sudo groupadd docker
sudo usermod -aG docker $USER
sudo newgrp docker
-
下載二進制安裝包
https://download.docker.com/linux/static/stable/x86_64/
版本:18.06-3
https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz
#下載相關的安裝包,上傳至/home目錄
cd /home
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz
#解壓安裝包
tar -zxvf docker-18.06.3-ce.tgz
cd /home/docker
#復制命令到相關目錄
cp docker* /usr/bin
cp docker* /usr/local/bin
-
修改docker默認工作目錄
#先在/data創建docker目錄
mkdir /data/docker
方法1:使用命令/usr/bin/dockerd -g /自己想設置的目錄
/usr/bin/dockerd -g /data/docker
#--設置到/data/docker目錄
方法2:在服務啟動時,加上參數,使其自動運行到自己相應的目錄
ExecStart=/usr/bin/dockerd -g /data/docker
或者ExecStart=/usr/bin/dockerd --data-root=/data/docker
#這個參數下面開機自啟添加
-
准備兩個文件daemon.json和docker.socket
-
添加一個daemon.json文件,添加一個鏡像獲取地址或者加速地址,添加私有harbor也是這里添加,后面會提到
相關參考:https://www.cnblogs.com/bulh/articles/12523099.html
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://hub.dockerhub.docker.com"]
}
-
添加一個docker.socket的文件,給服務監聽使用
cat << 'EOF' > /usr/lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
-
配置開機自啟
創建一個在/usr/lib/systemd/system/docker.service的文件
復制參數docker.service里面:
vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H unix://var/run/docker.sock -H tcp://0.0.0.0:2375 --data-root=/data/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
賦予權限和重啟服務:
chmod +x /usr/lib/systemd/system/docker.service
重啟服務:
systemctl daemon-reload
systemctl restart docker
systemctl enable docker.service
-
配置命令補全
參考:https://www.cnblogs.com/morgan363/p/11772851.html
#安裝補全工具
yum -y install bash-completion
#查看補全目錄是否存在docker相關
ls /usr/share/bash-completion/completions/docker*
#復制docker文件進去
由於是二進制安裝,需要復制補全的文件進去,需要符合版本號
推薦去github上下載或者手動安裝一個相同版本的機器上復制文件
cd /usr/share/bash-completion/completions
wget https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
#mv 改名下載文件名為docker
#使其生效
source /usr/share/bash-completion/bash_completion
source /usr/share/bash-completion/completions/docker
-
添加harbor倉庫
1:修改啟動服務的配置文件,添加地址
vim /usr/lib/systemd/system/docker.service
ExecStart= --graph /app/software --insecure-registry=hub.docker.com
2:在daemon.json配合地址,如果是企業自建harbor,建議把registry-mirrors和insecure-registries都設置成私有harbor地址
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://hub.docker.com"]
,"insecure-registries": ["https://hub.docker.com"]
}
3:使用docker login 登錄,輸入賬號密碼測試驗證
-
可選:使容器默認跟隨服務啟動
docker container update --restart=always 容器名字
#更新所有容器隨服務啟動
docker container update --restart always $(docker ps -a -q)