搭建局域网内的APT源

本文档详述如何在局域网内搭建一个本地的Docker环境来试验OpenStack。首先,通过Apache搭建局域网内的APT源以解决网络问题,接着介绍如何本地编译DEB包,最后探讨建立OpenStack特定的局域网APT源并解决遇到的问题,如locale错误、keystone依赖问题和chronyd/nptd权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新手轻喷,不定期更新… …
这里是用docker搭建openstack实验环境的手工记录,是一步步实际操作而来,因此不会用到script来进行自动化处理。等我实际搭建成功后会写一个自动化的搭建脚本。

一,需求及基础环境

  • 需求:博主现正进行openstack相关的开发,刚开始接触这个项目,但苦于其规模庞大,同时其部署非常麻烦且易出错,对新手极其不友好。博主现在只使用mirantis在虚拟机上搭建成功过一次,部署一次非常麻烦且耗时很长,因此想利用docker的便捷性快速搭建openstack的实验环境。当然博主考察过kolla项目,它就是使用docker来部署openstack的,但限于网络问题,如果不将其docker的repo的地址更改到国内一些镜像源,则实际上是无法使用的,但这个项目也非常庞大,对新手而言还是很不友好,还不如自己动手,丰衣足食 >_<
  • 基础环境:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial

$ uname -a
Linux docker 4.4.0-157-generic #185-Ubuntu SMP Tue Jul 23 09:17:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ docker --version
Docker version 18.09.7, build 2d0083d

这里由于博主的工作笔记本用的是windows,但是WSL毕竟不是linux,而且windows对docker的支持也面临许多权限的限定,特别是关于网络设备这类比较底层的问题,WSL是没有权限操作的。综合各方面因素考虑博主是使用虚拟机作为主机的,可以选择ubuntu14/16版本的,至于debian,redhat,suse等也可以,但博主没有试过,其可以调整内存、磁盘、cpu等参数,比较方便。因为openstack的节点多的时候对计算机资源的要求是很大的,最好能选用大一些的内存和磁盘空间。具体多少等博主实际测过后再说。

二,搭建过程

1,搭建局域网内的apt源

因为在openstack的搭建过程中,非常容易出问题,这时网速就成为最令人头疼的问题,如果能在本地的局域网内搭建一个apt源,则可以大大减轻由网络异常带来的问题,甚至可以说已成功了一半。

搭建apt源的局域网拓扑
上图是使用container搭建局域网内apt源的网络拓扑,使用的网络是docker的默认网桥,因为该网桥可以连通外部网络,同时每个container默认都连接这个网桥,所以非常合适。

(1) 安装http server

http server可以有很多选择,我这里就简单地使用Apache。

## 进入container
$ docker run -it ubuntu:16.04.3 /bin/bash
## 使用这个container作为apt server
$ apt update
$ apt install -y apache2
## 启动apache
$ service apache2 start
## 检查apache是否正常启动
$ service apache2 status

为了检查apt server是否正常启动http的服务,可以在docker所在的主机或任何能连上局域网(172.17.0.2/16)的主机向它发送http的请求

# 在apt server的container中
$ cd /var/www/html
$ echo "apache run successfully!" > test.txt

# 然后在另一个在该局域网内的主机上
$ curl -g -i -X GET http://172.17.0.2/test.txt
HTTP/1.1 200 OK
Date: Thu, 26 Sep 2019 01:34:40 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Thu, 26 Sep 2019 01:21:31 GMT
ETag: "1a-5936a96ef8426"
Accept-Ranges: bytes
Content-Length: 26
Content-Type: text/plain

apache run successfully!

## 显示成功,说明http服务已开启

(2) 搭建apt源

参考资料:
How to create a local APT repository?: 这是stackflow中的问题,里面的讨论很详细,由apt本地源拓展到局域网,以及认证问题。

## 准备好工具
$ sudo apt-get install dpkg-dev
## 准备好apt库的位置,因为使用apache2做为http服务,为了简单起见,直接使用其默认的路径
$ cd /var/www/html
$ ls
index.html
## index.html是apache的主页面,这个路径就是apache的默认主路径
## 在这个路径下设置离线库
$ mkdir -p debs/amd64 && cd debs/amd64
## 通过外网下载需要的离线包,同时保证依赖的库也能一起下载下来
$ apt-cache depends <packagename> -i --recurse | awk '/^[a-z]/ {print $0}' | xargs apt-get download
## 当下载完成后需要扫描生成包的信息文件
$ cd .. ## -> debs
$ dpkg-scanpackages amd64 /dev/null | gzip -9c > amd64/Packages.gz

(3) 添加apt源

当apt server搭建好之后,需要认局域网内的其它主机能够使用这个源,因为本文主要服务于openstack基于docker的搭建,因此让所有其它的container都使用这个apt源

## 进入另外一个新的container中,首先确定其能连接到apt server的http服务,
## 这一步参考[(1)安装http server]的验证操作
$ cd /etc/apt/
$ mv sources.list sources.list.backup
$ echo "deb http://172.17.0.2/debs amd64/" > sources.list
## 更新及下载
## 注意,由于这里为了简便没有建权的步骤,
## 关于建权的部分,可以参考[(2) 搭建apt源]的资料
$ sudo apt-get --allow-unauthenticated update
Ign:1 http://172.17.0.2/debs amd64/ InRelease
......
Fetched 49.8 kB in 1s (30.8 kB/s)
Reading package lists... Done
$ sudo apt-get --allow-unauthenticated install <packagename>

(4) 验证apt源 --> 实例

按照上面两步可以在局域网内搭建好一个apt源,现在以安装ping为例来验证这个局域网内的apt源是否正常工作

搭建本地apt镜像是为了提高软件包下载速度并减轻网络流量,特别是在网络状况较差或者需要频繁更新的环境中。以下是搭建本地apt镜像的步骤: 1. 确保已经安装了一个可用的Linux发行版,如Ubuntu,Debian等,并且已经连接到互联网。 2. 打开终端,在命令行下执行以下命令以安装所需的软件包: ``` $ sudo apt-get install apt-mirror ``` 3. 编辑`/etc/apt/mirror.list`文件,创建一个新的镜像配置文件。配置文件中的注释提供了每个设置的说明,根据自己的需求进行相应的修改。确保设置`mirror_dir`为要存储镜像的本地目录。 4. 运行以下命令以启动apt-mirror并开始下载软件包: ``` $ sudo apt-mirror ``` apt-mirror将根据配置文件中的设置下载软件包并保存到本地目录。这可能需要一些时间,具体的时间取决于镜像的大小以及当前的网络速度。 5. 当下载完成后,你可以通过将本地镜像添加为apt来使用它。编辑`/etc/apt/sources.list`文件,并将以下行添加到文件中: ``` deb file:/path/to/local/mirror ``` 将`/path/to/local/mirror`替换为实际镜像存储目录的路径。 6. 最后,执行以下命令以更新apt缓存并开始使用本地镜像: ``` $ sudo apt-get update ``` 现在,你可以使用本地apt镜像来安装软件包,它将从本地目录中读取软件包,而不是从互联网上下载。 通过搭建本地apt镜像,你可以显著提高软件包下载速度,减轻网络负载,并获得更好的软件包管理体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值