一、使用方法:docker 镜像方式构建离线源,方便在不同环境启动本地镜像源,启动方式可以是docker 也可以是 kubernetes
镜像地址:registry.baidubce.com/tools/yum:centos7u8-epel7
镜像大小:17GB
1、准备基础包和构建镜像工作目录
mkdir ~/build-epel7
mkdir /etc/yum.repos.d/bak/
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum -y makecache
reposync -p ./
cd /epel/Packages/
tar -zcvf epel7-1.tar.gz 0 2 3 4 9 a b c d e f g h i j k l m n o
tar -zcvf epel7-2.tar.gz p q r s t u v w x y z
mv epel7-1.tar.gz epel7-2.tar.gz ~/build-epel7
2、准备nginx安装包
wget https://nginx.org/download/nginx-1.19.1.tar.gz
3、准备nginx.conf配置问题
cat ~/build-epel7/nginx.conf
#user nobody;
worker_processes auto;
worker_rlimit_nofile 65535;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 20480;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /opt/repo;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
location /opt/repo/epel-7 {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
4、准备docker-env.sh脚本
cat ~/build-epel7/docker-env.sh
#!/bin/sh
init_config(){
yum -y update
yum -y install make gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel createrepo reposync
}
install_sf(){
cd /opt/repo/nginx-1.19.1
./configure --prefix=/usr/local/nginx
make -j 16 && make install
wait
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
cat /tmp/nginx.conf >/usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
createrepo /opt/repo/epel-7
}
clean_env(){
rm -rf /opt/repo/nginx-1.19.1
rm -rf /tmp/
rm -rf /root/anaconda-ks.cfg
echo > /var/log/wtmp
echo > /var/log/btmp
echo>/var/log/lastlog
echo > /var/log/secure
echo > /var/log/messages
echo>/var/log/syslog
echo>/var/log/yum.log
echo > ~/.bash_history
yum clean all
}
main(){
init_config && \
install_sf && \
clean_env
}
main
5、准备epel-7.repo
cat ~/build-epel7/epel-7.repo
[epel-7]
name=epel-7
baseurl=http://ip:port/epel-7
gpgcheck=0
enabled=1
6、准备Dockerfile
cat ~/build-epel7/Dockerfile
FROM centos:centos7.8.2003
MAINTAINER duanshuaixing "duanshuaixing@gmail.com"
ADD ./epel7-1.tar.gz /opt/repo/epel-7/Packages/
ADD ./epel7-2.tar.gz /opt/repo/epel-7/Packages/
ADD ./nginx-1.19.1.tar.gz /opt/repo/
ADD epel-7.repo /opt/repo/
ADD ./nginx.conf /tmp/
ADD ./docker-env.sh /tmp/
RUN /tmp/docker-env.sh
WORKDIR /opt/repo
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
7、给脚本添加执行权限并构建镜像
cd ~/build-epel7/
chmod a+x docker-env.sh
docker build -t registry.baidubce.com/tools/yum:centos7u8-epel7 .
docker push registry.baidubce.com/tools/yum:centos7u8-epel7