最近更新docker镜像时,需要从alpine的安装源上拉取些包,但是服务器down掉了,而且找不到相应的维护人员,于是决定准备自己搭建一套
首先从网上拉取3.5版本的apk包,脚本如下:
wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/main/x86_64/
wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/community/x86_64/
拉取这两个目录(main路径下为官方提供的apk包,community路径下为社区提供的包)大致需要1天多,拉取完成之后,拷贝到待安装的服务器(为了便于区分,我们叫它新服务器)上,为了提高效率,可以压缩之后再上传到新服务器。
剩下的工作就是安装服务,并将其挂载到服务器下,因所有的文件都是静态资源,用NGINX作为服务器更具有优势,因此选取NGINX作为服务器容器,需要配置本地资源;配置NGINX的conf文件;挂载本地资源到容器上。
配置本地资源:
在nginx根目录下创建conf、conf.d、html文件夹,将alpine文件包放到html文件夹下面,创建启动脚本start.sh
在conf下,创建nginx.conf文件,脚本详情如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events{
worker_connections 1024;
}
http{
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$stream_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
' "$http_user_agent "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
server {
listen 80;
server_name locahost;
charset utf-8;
root /usr/share/nginx/html;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
我在nginx.conf里的配置已经能满足要求,因此未在conf.d下配置任何东西,
然后是启动脚本,使用镜像 nginx:1.11.5-alpine,启动脚本如下(命名为start.sh)
#!/bin/bash
path=/home/nginx
docker run -d --name alpine-repo-src \
-v $path/html:/usr/share/nginx/html \
-v $path/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v $path/conf.d:/etc/nginx/conf.d \
nginx:1.11.5-alpine
将start.sh修改为可执行文件、并执行
chmod +x start.sh && sh start.sh
然后打开浏览器、输入新服务器的IP,便可以查看所有的apk包了
接下来是验证是否能够正常工作
创建一个dockerfile,如下
FROM alpine:3.7
MAINTAINER HEZS "[email protected]"
RUN echo "http://myhostip/alpine/v3.5.main" > /etc/apk/repositories && \
apk update && apk upgrade && apk add openssh
如果构建成功,则表示源能正常使用