docker介紹
實際項目中,由于各種原因,我更推薦離線安裝
離線安裝(以centos x86_64為例)
1. 下載下傳docker二進制檔案
官方二進制docker檔案下載下傳位址:https://download.docker.com/linux/static/stable
按要求選擇版本,例如:https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
2. 離線安裝docker
- 将下載下傳檔案拷貝檔案到 /opt 目錄下 ,或者直接cd到opt下進行下載下傳,例如:
使用wget:
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
使用curl:
curl -O https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz
- 解壓 docker-20.10.9.tgz
cd /opt
tar -zxvf docker-20.10.9.tgz
- 移動檔案
sudo mv docker/* /usr/bin/
- 建立 docker.service: vim /etc/systemd/system/docker.service
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
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
- 授權docker.service
sudo chmod +x /etc/systemd/system/docker.service
- 重新加載配置: systemctl daemon-reload
- 啟動docker:systemctl start docker
- 設定開機啟動:systemctl enable docker
- 檢視docker狀态:systemctl status docker
- 檢視docker版本:docker -v
- 檢視配置是否生效:docker info
3. 建立docker配置檔案,更新鏡像源
更新鏡像源成國内的,這樣下載下傳docker鏡像時速度更快
順序不要變
mkdir /etc/docker
vim /etc/docker/daemon.json
Docker中國區官方鏡像: https://registry.docker-cn.com
網易: http://hub-mirror.c.163.com
docker預設安裝目錄:/var/lib/docker
檢視docker安裝目錄:docker info | grep "Docker Root Dir"
内容如下:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
- 重新開機docker:systemctl restart docker
- 檢視配置是否生效:docker info
4. Docker Compose安裝
docker-compose
下載下傳相應平台的相應版本:https://github.com/docker/compose/releases
cp docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v
線上安裝
1. 解除安裝原docker
由于CentOS8預設安裝了podman,是以在CentOS8中安裝docker會導緻沖突引發如下異常。
在podman下:docker run --restart=always 參數不起作用
解除安裝指令: yum -y erase podman buildah
2. 更新yum源
1. 備份
cd /etc/yum.repos.d && mkdir bak && mv *.repo ./bak
2. 下載下傳新的 CentOS-Base.repo 到 /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
3. 運作 yum makecache 生成緩存
4. 非阿裡雲ECS使用者會出現 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 資訊,不影響使用。使用者也可自行修改相關配置: eg:
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
3. 安裝docker
# 安裝docker:yum install -y docker,通過curl 安裝 docker-ce
測試docker安裝:docker version
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
設定開機啟動
systemctl enable docker
啟動docker
systemctl start docker
4. 設定docker國内鏡像源
1. 建立或編輯daemon.json: vi /etc/docker/daemon.json
2. 填入以下内容:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
3. 重新開機docker: systemctl restart docker.service
4. 執行docker info檢視是否修改成功: docker info
附錄
1. yum install失敗問題
參考:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11UI0VFE
dnf install 失敗,提示:
Failed to synchronize cache for repo 'AppStream', ignoring this repo.
No match for argument: wget
Error: Unable to find a match
1. 備份
cd /etc/yum.repos.d && mkdir bak && mv *.repo ./bak
2. 下載下傳新的 CentOS-Base.repo 到 /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
3. 運作 yum makecache 生成緩存
4. 非阿裡雲ECS使用者會出現 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 資訊,不影響使用。使用者也可自行修改相關配置: eg:
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo