天天看點

Docker與Docker-compose安裝

作者:魔法小木瓜
Docker與Docker-compose安裝

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與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