国内 centos 7.9 ubuntu 22.04 安装Docker和Docker Compose

目录

在国内安装Docker和Docker Compose需要使用国内的镜像源,因为直接访问官方源可能会出现连接速度慢或无法连接的情况。以下是针对国内网络环境的安装方法:

CentOS 7.9 安装 Docker 和 Docker Compose

安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

配置国内 Docker 源

# 阿里云
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 或者腾讯云
yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo

安装 Docker 和 Docker Compose

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

启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker

配置国内 Docker 镜像加速

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://mirror.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com",
    "https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
  ]
}
EOF

重启 Docker 使其生效:
systemctl daemon-reload
systemctl restart docker
验证 Docker 和 Docker Compose 插件:
docker version
docker compose version
验证加速器是否生效:
docker info
在输出的信息中查找 Registry Mirrors: 部分,应该能看到你配置的加速器地址列表

Ubuntu 22.04 安装 Docker 和 Docker Compose

更新软件包:
sudo apt update -y
sudo apt install -y ca-certificates curl gnupg lsb-release

配置国内 Docker 源:

# 创建 keyring 目录
sudo mkdir -p /etc/apt/keyrings
# 阿里云 Docker GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc
# 添加 Docker 阿里云仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker 和 Docker Compose:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

配置国内 Docker 镜像加速:
创建或修改 /etc/docker/daemon.json

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://mirror.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com",
    "https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
  ]
}
EOF

重启 Docker 使其生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证 Docker 和 Docker Compose 插件:
docker version
docker compose version
验证加速器是否生效:
docker info
在输出的信息中查找 Registry Mirrors: 部分,应该能看到你配置的加速器地址列表

………………………………

Docker 默认将镜像、容器、卷等数据存储在 /var/lib/docker 目录下。如果你想将其更改为 /home/docker(或其他路径),可以按照以下步骤操作:
方法 1:修改 Docker 配置文件(推荐)
停止 Docker 服务
sudo systemctl stop docker
复制现有 Docker 数据到新路径
sudo mv /var/lib/docker /home/docker
如果 /home 在不同的磁盘分区,建议使用 rsync 进行复制:
sudo rsync -aP /var/lib/docker /home/
sudo rm -rf /var/lib/docker
修改 Docker 配置
编辑 daemon.json(如果不存在就新建):
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
添加或修改以下内容:

{
  "data-root": "/home/docker"
}

注意:data-root 指定 Docker 的数据存储路径。
重新加载并启动 Docker
sudo systemctl daemon-reload
sudo systemctl start docker
验证是否修改成功
docker info | grep "Docker Root Dir"
Docker Root Dir: /home/docker
说明已经成功修改。

方法 2:使用 systemd 配置覆盖 如果你不想修改 daemon.json,也可以使用 systemd 方式修改 Docker 的存储路径。
创建 systemd 配置覆盖
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/override.conf

内容如下:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root=/home/docker -H fd://

重新加载 systemd 并重启 Docker
sudo systemctl daemon-reload
`sudo systemctl restart docker

………………………………..

查看docker 镜像的存储路径
sudo docker info | grep "Storage Driver"
镜像文件默认存放在 /var/lib/docker/<存储驱动>/ 目录下,其中 <存储驱动> 取决于 Docker 使用的存储驱动,常见的有 overlay2、aufs、btrfs、zfs 等
ec2876a1dc8a58b039677df201fef63f.png
sudo ls /var/lib/docker/
763038afcee59d44567b582014018a5c.png
进入目录:
需要切换成root用户
cd /var/lib/docker/overlay2
或者
sudo bash -c "cd /var/lib/docker/overlay2 && bash"
788a6ff66d2fa7c3b828195de5c03088.png
这里会自动切换成root用户查看

查看某个镜像的具体存储位置:
列出所有镜像
sudo docker images
c7ba57281162a9aacade85f2d4d815b6.png
用 docker inspect 命令获取某个镜像的详细信息
sudo docker inspect cb1febb7d8ae 6a3698f92274b18436dda01779250f7f.png
其中找到 GraphDriver.Data.LowerDir 和 GraphDriver.Data.UpperDir,这些路径就是该镜像的存储位置