简介:由于Rocky和Ubuntu底层不同无法使用,所以考虑解决方法使用docker同步Ubuntu仓库(可以用此方式解决其他类型操作系统)
一、安装Docker
1、环境准备
#更新仓库
dnf -y install epel-release
#填下docker仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、安装docker
#查看docker版本
yum list docker-ce.x86_64 --showduplicates
#内容
Last metadata expiration check: 0:47:23 ago on Tue 22 Apr 2025 09:55:26 PM EDT.
Installed Packages
docker-ce.x86_64 3:28.1.0-1.el9 @docker-ce-stable
Available Packages
docker-ce.x86_64 3:20.10.15-3.el9 docker-ce-stable
docker-ce.x86_64 3:20.10.16-3.el9 docker-ce-stable
........
docker-ce.x86_64 3:28.0.0-1.el9 docker-ce-stable
docker-ce.x86_64 3:28.0.1-1.el9 docker-ce-stable
docker-ce.x86_64 3:28.0.2-1.el9 docker-ce-stable
docker-ce.x86_64 3:28.0.3-1.el9 docker-ce-stable
docker-ce.x86_64 3:28.0.4-1.el9 docker-ce-stable
docker-ce.x86_64 3:28.1.0-1.el9 docker-ce-stable
docker-ce.x86_64 3:28.1.1-1.el9 docker-ce-stable
#安装docker(我这选择得是28.1.0-1.el9)
dnf -y install docker-ce-28.1.0-1.el9
3、修改docker数据目录
#创建数据目录
mkdir -p /data/docker/data
#更改数据目录
vim /etc/docker/daemon.json
#内容
{
"data-root": "/data/docker/data"
}
4、启动docker
#修改Selinux安全上下文(或者关闭)
chcon -R system_u:object_r:container_var_lib_t:s0 /data/docker/data
#启动docker
systemctl daemon-reload
systemctl start docker
systemctl enable docker
#查看数据目录是否更换
docker info | grep "Docker Root Dir"
#内容(确认已更改)
Docker Root Dir: /data/docker/data
二、拉去Ubuntu容器并安装相关软件
1、拉去镜像
#拉去ubuntu22.04镜像
docker pull uhub.service.ucloud.cn/ubuntu20/ubuntu:22.04
#修改镜像名(选作)
docker tag uhub.service.ucloud.cn/ubuntu20/ubuntu:22.04 ubuntu:22.04
#查看是否更改成功
docker images
#内容
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 67c845845b7d 10 months ago 77.9MB
uhub.service.ucloud.cn/ubuntu20/ubuntu 22.04 67c845845b7d 10 months ago 77.9MB
2、修改镜像
#创建ubuntu镜像存放目录
mkdir -p /data/repos/ubuntu
#启动容器并将/data/repos/ubuntu挂至容器/var/mirror
docker run -itd --name ubuntu-mirror -v /data/repos/ubuntu:/var/mirror ubuntu:22.04
#进入容器
docker exec -it ubuntu-mirror bash
#安装软件(容器很多软件都没安装这里安装下)
#更新镜像库
apt update
#安装vim
apt -y install vim
#安装apt-mirror(同步软件包工具)
apt -y install apt-mirror
#修改国内镜像源(阿里云)
vim /etc/apt/mirror.list
#内容
############# config ##################
#
set base_path /var/mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
clean http://mirrors.aliyun.com/ubuntu
3、测试同步数据ubuntu仓库
#容器中执行命令
apt-mirror
#容器外执行watch命令查看是否在同步(30s刷新统计一次空间大小)
watch -n 30 -d du -sh /data/repos/ubuntu
容器内拉去包
容器外统计大小(大小变化中耐性等待,大小约700G)
三、验证仓库及部署定时任务
1、验证仓库
注:如何部署仓库得web服务可参考Rocky 9.4安装私有Yum仓库及同步仓库数据(学习笔记)-CSDN博客
#在Ubuntu系统上配置源
vim /etc/apt/sources.list
#内容(根据实际路径进行修改)
deb http://10.100.4.47/yum-repo/ubuntu/mirror/mirrors.aliyun.com/ubuntu jammy main restricted universe multiverse
deb http://10.100.4.47/yum-repo/ubuntu/mirror/mirrors.aliyun.com/ubuntu jammy-updates main restricted universe multiverse
deb http://10.100.4.47/yum-repo/ubuntu/mirror/mirrors.aliyun.com/ubuntu jammy-security main restricted universe multiverse
#更新仓库
apt update
#检测是否安装vsftpd(无返回表示未安装)
dpkg -l | grep vsftpd
#安装vsftpd
apt -y install vsftpd
确认源为本地源
2、容器中定时同步任务
#容器中安装cron服务
apt -y install cron
#编写定时任务(每天三点进行同步)
0 3 * * * /usr/bin/apt-mirror > /var/log/apt-mirror.log
四、将此容器变更为开机自启
1、保存已经修改好得容器镜像
#查看运行中得容器(容器外执行
docker ps
#内容
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
959b4eafdcce ubuntu:22.04 "/bin/bash" 14 hours ago Up 14 hours ubuntu-mirror
#提交容器(提交容器格式:docker commit <CONTAINER_ID> <新镜像名>:<标签>)(需要等待一会)
docker commit ubuntu-mirror ubuntu-repos:v1
#查看镜像
docker images
#结果
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-repos v1 e900aae47071 41 seconds ago 257MB
2、关闭容器及删除原有容器
#关闭现有容器(容器名用 docker ps查询)
docker stop ubuntu-mirror
#删除容器
docker rm ubuntu-mirror
#查看之前同步得仓库是否存在
du -sh /data/repos/ubuntu
#结果(确认数据持久化)
687G /data/repos/ubuntu
3、设置容器开机自启及验证
#启动新容器(开启自启参数--restart=always)
docker run -itd --name ubuntu-repos --restart=always -v /data/repos/ubuntu:/var/mirror ubuntu-repos:v1
#重启服务器测试
reboot
确认开机容器会自启