Docker安装和配置

Docker安装和配置

​ Docker由go语言编写,不依赖任何动态库,仅依赖一些linux内核提供的功能,因此只要linux内核达到一定版本即可使用,无须担心依赖。

网络源安装

(此处的网络源为清华大学开源软件镜像站,可手动替换为其他源。2024-6-10:docker所有官方网站无法访问)


CentOS/RHEL

以下内容根据 官方文档 修改而来。

如果你之前安装过 docker,请先删掉

yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine

系统可能预装podman,其中containerd和runc可能存在版本冲突,请先删掉

yum remove podman containerd runc -y

安装依赖,下载 repo 文件,并把软件仓库地址替换为镜像站:

CentOS:

yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+http://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

(以下方法更简单)

curl http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo
sed -i 's+https://download.docker.com+http://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

对于RHEL系统:将地址中的centos替换为rhel即可。

最后安装:

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Debian/Ubuntu/Raspbian

以下内容根据 官方文档 修改而来。

如果你过去安装过 docker,先删掉:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done

首先安装依赖:

apt-get update
apt-get install ca-certificates curl gnupg

信任 Docker 的 GPG 公钥并添加仓库:

Ubuntu:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

Debian/Raspbian:将地址中的ubuntu替换为debian/raspbian即可。

最后安装

apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

二进制包安装

​ docker没有其他依赖,从仓库中下载二进制包,包中只有几个必要的二进制程序和脚本。

# tar --list -f docker-26.1.4.tgz
docker/
docker/docker-init
docker/docker-proxy
docker/docker
docker/containerd-shim-runc-v2
docker/runc
docker/ctr
docker/dockerd
docker/containerd

仓库路径(网易镜像站为例):

http://mirrors.163.com/docker-ce/linux/static/stable/x86_64/

配置 优化

/etc/docker/daemon.json

{
# 官方镜像加速站点
"registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "docker.m.daocloud.io",
    "https://si7y70hh.mirror.aliyuncs.com/"
],


# 信任不安全的注册中心
"insecure-registries": ["harbor.wang.org"],


# 开启远程控制,设置hosts数组以监听指定端口和IP地址
"hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"], 
# 如果通过systemd启动docker,请参考该文档最下面的-H选项修改service文件。
# 如果在daemon.json和service文件都修改了监听选项,可能会产生冲突导致docker无法启动


# cgroup模式(旧版本默认cgroupfs,新版本默认systemd)
"exec-opts": ["native.cgroupdriver=systemd"],


# 指定docker数据目录,默认为/var/lib/docker
"data-root": "/mnt/docker-data",
# 旧版本中使用graph选项(24.0.0开始弃用)
"graph": "/data/docker",


# docker守护进程停止时,容器保持运行。减少计划外停止/计划内升级导致容器停止
"live-restore": true,
# 修改该选项不用重启docker守护进程,发送SIGHUP信号即可,具体参考下链接
# https://docs.docker.com/reference/cli/dockerd/#configuration-reload-behavior


# 提供metrics,指定监听的地址和端口
"metrics-addr": "127.0.0.1:9323",
# 具体查看 https://docs.docker.com/engine/daemon/prometheus/


# 镜像-最高并行下载和并行上传(1个layer占1个)
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,


"log-opts": {
# 指定容器日志文件的最大值
   "max-size": "300m",
# 指定容器日志文件的个数,循环写入日志文件,即一个日志满,会写入第二个文件
   "max-file": "2"
 },


# 以下是疑似在旧版的代理
# 代理 https://docs.docker.com/network/proxy/
 "proxies": {
   "default": {
     "httpProxy": "http://proxy.example.com:3128",
     "httpsProxy": "https://proxy.example.com:3129",
     "noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
   }
   "tcp://docker-daemon1.example.com": {
     "noProxy": "*.internal.example.net"
   }
 }

# 以下是新版
# https://docs.docker.com/engine/daemon/proxy/
  {
    "proxies": {
      "http-proxy": "http://proxy.example.com:3128",
      "https-proxy": "https://proxy.example.com:3129",
      "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
    }
  }
}
# 开启远程:
# 参照文档:https://docs.docker.com/config/daemon/remote-access/
sudo systemctl edit docker.service
# 添加或修改如下行,替换为自己的值
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
# 重载systemctl配置文件,并重新启动dockerd
sudo systemctl daemon-reload
sudo systemctl restart docker.service

官方文档:

https://docs.docker.com/engine/daemon/

https://docs.docker.com/reference/cli/dockerd/

posted @ 2025-03-09 16:07  好坏会红平个  阅读(45)  评论(0)    收藏  举报