Ubuntu22.04 搭建自己的镜像及软件堆栈

打印 上一主题 下一主题

主题 769|帖子 769|积分 2307

前言

搭建自己的镜像堆栈,目前使用过的有两种方式:

  • 使用nginx来搭建私有堆栈,这种方式搭建的堆栈需要自己手动上传全部的软件包,目前测试过用来做apt源和yum源

  • 使用nexus3来做缓存加速。其原理重要是通过在本地堆栈进行缓存,来做的堆栈,有点类似常用的阿里云镜像加速。使用nexus3可以做yum、apt、docker、pip等的源。既可以自建本地堆栈,又可以创建为署理其他源的署理堆栈。较为机动。

1 使用Nginx 搭建 apt源

1.1 nginx下载安装

  1. # Ubuntu
  2. sudo useradd -s /sbin/nologin www -M
  3. sudo apt update
  4. # 通过以下命令安装编译器和调试器
  5. sudo apt install build-essential
  6. sudo apt-get install manpages-dev
  7. gcc --version
  8. # 安装依赖
  9. sudo apt install openssl libssl-dev -y
  10. sudo apt install libpcre3 libpcre3-dev -y
  11. sudo apt install zlib1g-dev -y
  12. sudo apt -y install make
  13. cd /usr/local/src
  14. sudo wget https://nginx.org/download/nginx-1.22.1.tar.gz
  15. sudo tar -zxf nginx-1.22.1.tar.gz
  16. cd /usr/local/src/nginx-1.22.1
  17. sudo ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
  18. sudo make
  19. sudo make install
  20. sudo vim /etc/profile
  21. export PATH=$PATH:/usr/local/nginx/sbin/
  22. # 刷新
  23. sudo source /etc/profile
复制代码
1.2 软件存放目次的创建和设置

  1. # 新建软件存放的目录
  2. mkdir /mirrors/{windows,ubuntu,centos}
  3. mkdir /mirrors/ubuntu/22.04
  4. # 修改nginx配置文件
  5. # 把该目录暴露出去,以列表的形式显示
  6. worker_processes  1;
  7. events {
  8.     worker_connections  1024;
  9. }
  10. http {
  11.     include       mime.types;
  12.     default_type  application/octet-stream;
  13.     sendfile        on;
  14.     keepalive_timeout  65;
  15.     server {
  16.         listen       9009;
  17.         server_name  192.168.92.100;
  18.         root /mirrors/;    # 此处直接指定到simple的父级目录,这样我们可以使用http://example.com/simple来作为源的链接
  19.         location / {
  20.             # root   /mirrors/;
  21.             autoindex on;
  22.             autoindex_exact_size off;    #显示文件的大小
  23.             autoindex_localtime on;    #显示文件时间
  24.             # limit_rate_after 5m; #5分钟后下载速度限制为200k
  25.             # limit_rate 200k;
  26.             #index  index.html index.htm;
  27.         }
  28.         error_page   500 502 503 504  /50x.html;
  29.         location = /50x.html {
  30.             root   html;
  31.         }
  32.     }
  33. }
  34. # 重启nginx
  35. nginx -s stop
  36. nginx
  37. # 登录前台查看
复制代码

1.3 验证

1、上传文件

上传文件到/mirrors/ubuntu/22.04目次下
  1. # 在自己的Ubuntu目录下执行该命令:
  2. # 一定要执行该命令,否则apt源不识别,配置会出错
  3. sudo dpkg-scanpackages .|gzip -c9>Packages.gz
复制代码

2、设置apt源

  1. echo "deb [trusted=yes] http://172.16.1.53:9009/ubuntu/ 22.04/" | sudo tee -a /etc/apt/sources.list > /dev/null
  2. # 因为是我们自建的源,不被信任,所以需要添加参数:trusted=yes,否则会报错
  3. apt update
复制代码
检察输出已经加载到:

2 使用Nexus3部署

参考地址:https://help.sonatype.com/repomanager3/product-information/download
2.1 docker-compose安装

1、docker安装

  1. # 更新
  2. sudo apt update
  3. # 安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库:
  4. sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
  5. # 运行下列命令添加 Docker 的官方 GPG 密钥:
  6. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  7. # 添加 Docker 官方库:
  8. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  9. # 更新 Ubuntu 源列表:
  10. sudo apt update
  11. # 安装指定版本的docker
  12. # 检查可以安装的docker版本库
  13. apt-cache madison docker-ce
  14. # 挑选上面列表中的任何版本进行安装
  15. sudo apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io
  16. # 查看docker是否运行
  17. systemctl status docker
  18. # 查看版本
  19. docker version
  20. # 测试
  21. docker run -it ubuntu bash
复制代码
2、添加阿里镜像加速

  1. cat > /etc/docker/daemon.json <<EOF
  2. {
  3.   "exec-opts": ["native.cgroupdriver=systemd"],
  4.   "log-driver": "json-file",
  5.   "log-opts": {
  6.     "max-size": "100m"
  7.   },
  8.   "storage-driver": "overlay2",
  9.   "storage-opts": [
  10.     "overlay2.override_kernel_check=true"
  11.   ],
  12.   "registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
  13. }
  14. EOF
  15. systemctl restart docker
  16. systemctl status docker
复制代码
3、安装Docker-compose

地址:https://github.com/docker/compose/releases
  1. sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose
  3. docker-compose version
复制代码
2.2 Nexus3安装

  1. mkdir nexus3 && cd nexus3
  2. #  sonatype/nexus3 此处版本一定要注意
  3. # 我之前测试时,如果此处默认为latest版本,很可能会出现Nexus3无法缓存软件包的情况,暂时不知道原因
  4. # 创建yml文件
  5. vim docker-compose.yml
  6. version: '3.1'
  7. services:
  8.   nexus3:
  9.     image: sonatype/nexus3:3.38.1
  10.     ports:
  11.       - 8081:8081
  12.     volumes:
  13.       - nexus-data:/nexus-data
  14.     restart: always
  15. volumes:
  16.   nexus-data:
  17.       driver: local
  18.       
  19.       
  20. # 启动
  21. docker-compose up -d
复制代码
从浏览器访问:http://192.168.172.10:8081/
2.3 获取Nexus3管理员初始密码

  1. # 进入容器
  2. docker-compose exec nexus3 /bin/bash
  3. # 获取密码
  4. cat /opt/sonatype/sonatype-work/nexus3/admin.password
  5. 481852a2-be4f-4daf-857b-4b24cd180149
  6. # 默认用户名是admin
  7. # 修改后的用户名密码admin/admin123
复制代码
2.4 Ubuntu的apt镜像堆栈设置

1、创建存储



2、创建堆栈

bionic,focal,jammy


留意:


  • bionic:18.04
  • focal:20.04
  • jammy:22.04
    创建完成可以看到

    下方是该堆栈的url

    在首页的Browse中检察对应堆栈,是空的

3、验证

  1. vim Dockerfile
  2. FROM ubuntu:22.04
  3. RUN sed -i 's/archive.ubuntu.com/192.168.172.10:8081\/repository\/ubuntu/g' /etc/apt/sources.list && sed -i 's/security.ubuntu.com/192.168.172.10:8081\/repository\/ubuntu/g' /etc/apt/sources.list
  4. RUN apt-get update -yq \
  5.         && apt-get install -yq build-essential
  6. vim Makefile
  7. build:
  8.         docker build -t mirroris-demo:apt .
  9. # 执行构建
  10. make build
  11. # 再次执行速度会比之前快很多
复制代码
构建完成后,堆栈中则可以看到镜像:

  1. # 删除镜像后再次构建
  2. docker rmi mirroris-demo:apt
  3. # 把不需要的镜像清理掉
  4. docker image prune -f
  5. # 再次执行构建
  6. make build
  7. # 可以看到执行速度很快
复制代码
2.5 Docker本地镜像署理源的搭建

1、创建blob

2、创建docker proxy


3、创建docker group


4、启用docker realms


5、暴露8082端口

  1. vim docker-compose.yml
  2. version: '3.1'
  3. services:
  4.   nexus3:
  5.     image: sonatype/nexus3:3.38.1
  6.     ports:
  7.       - 8081:8081
  8.       - 8082:8082
  9.     volumes:
  10.       - nexus-data:/nexus-data
  11.     restart: always
  12. volumes:
  13.   nexus-data:
  14.       driver: local
  15. docker-compose up -d;docker-compose ps
  16. # 查看是否有8082端口映射
复制代码
6、修改/etc/docker/daemon.json 文件

  1. cat /etc/docker/daemon.json
  2. {
  3.   "registry-mirrors": ["http://192.168.172.10:8082"],
  4.   "insecure-registries": ["192.168.172.10:8082"]
  5. }
  6. systemctl daemon-reload
  7. systemctl restart docker.service
  8. systemctl status docker
复制代码
7、测试

  1. docker pull nginx:1.16.0
  2. docker pull busybox
  3. docker pull 192.168.172.10:8082/openstack.kolla/mariadb-server:zed-ubuntu-jammy
  4. docker pull 192.168.172.10:8082/ceph/ceph:v17
  5. docker pull 192.168.172.10:8082/ceph/ceph:v17
复制代码
检察docker-registory有缓存

3 源地址设置方式

  1. # docker源,需要配置daemon.json
  2. cat /etc/docker/daemon.json
  3. {
  4.   "registry-mirrors": ["http://192.168.172.10:8082"],
  5.   "insecure-registries": ["192.168.172.10:8082"]
  6. }
  7. 在下载镜像时,地址换成我们的192.168.172.10:8082
  8. 例子:
  9. docker pull 192.168.172.10:8082/openstack.kolla/mariadb-server:zed-ubuntu-jammy
  10. docker pull 192.168.172.10:8082/ceph/ceph:v17
  11. # ubuntu源
  12. http://192.168.172.10:8081/repository/ubuntu-qinghua/
  13. 把 archive.ubuntu.com 换成 192.168.172.10:8081/repository/ubuntu-qinghua
  14. # yum源
  15. [nexusrepo]
  16. name=Nexus Repository
  17. baseurl=http://mirrors.local/repository/yum/$releasever/os/$basearch/
  18. enabled=1
  19. gpgcheck=1
  20. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Cent0S-7
  21. repo_gpgcheck=0
  22. priority=1
复制代码
总结

Nginx堆栈:

  • 目前我测试过的只有Windows、yum、apt
  • 全部软件包都需要手动下载,手动上传,略麻烦
  • 差别版本的软件需要重新上传
Nexus堆栈:

  • 目前我测过的有apt、yum、docker,别的没有测过的尚有pip。maven等,均可以使用
  • 只要设置成功,全部通过该堆栈下载的软件,或者镜像都会有缓存
  • 每次下载都会默认访问源地址,下载最新软件或镜像。比方:quay的openstack镜像的zed-ubuntu-jammy版本,如今还在持续更新,你一个月之前安装的版本和一个月后装的版本是不完全一样的,但是如果你就是需要一个月前的版本这个是不支持的,除非把源地址改错。这样的话,其他软件也没法继续更新了
所以在使用时根据自己的需要进行选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表