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
官方文档:

浙公网安备 33010602011771号