通過dockerfile制作基於centos8系統的nginx鏡像


通過dockerfile制作基於centos8系統的nginx鏡像


在拉取docker默認的nginx鏡像后發現是debian系統,每次更新軟件都非常痛苦,於是想制作一個自定義的nginx系統作為替代默認的nginx鏡像

國內centos使用的人更多,yum源更加穩定,浪費一些空間和性能是可以接受的

1.拉取centos最新鏡像
docker pull centos

2.交互式運行該鏡像並在里面安裝常用的工具軟件
docker run -it --name=mycentos centos

a.安裝aliyun的yum源
地址:
https://developer.aliyun.com/mirror/

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

b.安裝epel源
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

c.設置網絡
vim /etc/profile

export http_proxy=http://10.11.0.148:808
export https_proxy="https://10.11.0.148:808"
export ftp_proxy=http://10.11.0.148:808
export socks_proxy="socks://10.11.0.148:808/"
export http_proxy=http://10.11.0.148:808
export https_proxy=https://10.11.0.148:808

# 讓配置生效

# source /etc/profile


# 設置yum的網絡,方便安裝軟件
# vim /etc/yum.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
proxy=http://10.11.0.148:808


d.安裝常用軟件
yum install -y telnet tree net-tools bind-utils screen nginx

3.制作鏡像
# 在centos鏡像中安裝好需要的軟件后需要提交容器名為 mynginx
[root@server05 ~]# docker commit mycentos mynginx

# 命名mynginx 這個鏡像為符合我們本地 docker 倉庫的命名規范
[root@server05 ~]# docker tag mynginx harbor.chinasoft.com/public/mynginx

# 編輯dockerfile
[root@server05 dockerfile]# more /data/dockerfile/entrypoint.sh
#!/bin/bash
/usr/sbin/nginx -g "daemon off;"

[root@server05 dockerfile]# more /data/dockerfile/Dockerfile
FROM harbor.chinasoft.com/public/mynginx
ADD entrypoint.sh /entrypoint.sh
ENV WWW /usr/share/nginx/html
ENV CONF /etc/nginx/conf.d
RUN /usr/bin/ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
    echo 'Asia/Shanghai' >/etc/timezone
WORKDIR $WWW
ENTRYPOINT /entrypoint.sh

# 制作鏡像
[root@server05 dockerfile]# docker build . -t harbor.chinasoft.com/public/mynginx
Sending build context to Docker daemon  2.048kB
Step 1/8 : FROM harbor.chinasoft.com/public/mynginx
 ---> 9295f7029377
Step 2/8 : USER root
 ---> Running in fe3934f06944
Removing intermediate container fe3934f06944
 ---> 45cc4be244a5
Step 3/8 : ENV WWW /usr/share/nginx/html
 ---> Running in 6cb17d4cab7c
Removing intermediate container 6cb17d4cab7c
 ---> fa759741583e
Step 4/8 : ENV CONF /etc/nginx/conf.d
 ---> Running in 8afa0d30e5f1
Removing intermediate container 8afa0d30e5f1
 ---> 7f0a150d5d0f
Step 5/8 : RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&    echo 'Asia/Shanghai' >/etc/timezone
 ---> Running in 8e2594b80656
Removing intermediate container 8e2594b80656
 ---> a25d5f97272d
Step 6/8 : WORKDIR $WWW
 ---> Running in 043eaf56d32c
Removing intermediate container 043eaf56d32c
 ---> 4fc08640ac6a
Step 7/8 : EXPOSE 80
 ---> Running in f7d30addfc42
Removing intermediate container f7d30addfc42
 ---> 150142c55f81
Step 8/8 : CMD ["nginx","-g","daemon off;"]
 ---> Running in 1dd362d3ae84
Removing intermediate container 1dd362d3ae84
 ---> ce3a233d57f7
Successfully built ce3a233d57f7
Successfully tagged harbor.chinasoft.com/public/mynginx:latest

# Dockerfile也可以自定義首頁和虛擬主機,此處我們不需要就略過了
FROM harbor.chinasoft.com/public/mynginx
USER root
ENV WWW /usr/share/nginx/html
ENV CONF /etc/nginx/conf.d
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
    echo 'Asia/Shanghai' >/etc/timezone
WORKDIR $WWW
ADD index.html $WWW/index.html
ADD demo.od.com.conf $CONF/demo.od.com.conf
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

# 推送鏡像到harbor倉庫中
[root@server05 ~]# docker push harbor.chinasoft.com/public/mynginx

# 運行容器,將容器映射到宿主機的8888端口
docker run -d --name=mynginx01 -p8888:80 harbor.chinasoft.com/public/mynginx:latest

harbor崩潰后需要執行./install.sh即可,之前的配置和已經制作的鏡像不受影響


測試剛才制作的鏡像是否成功,運行docker后nginx是否會正常運行

拉取鏡像

運行鏡像,進入容器中,並測試nginx

 

通過kubectl創建基於mycentos的pod

 

centos7的環境初始化

# yummv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# socks代理
http_proxy=http://10.11.0.150:808
https_proxy="https://10.11.0.150:808"
export ftp_proxy=http://10.11.0.150:808
export socks_proxy="socks://10.11.0.150:808/"
export http_proxy=http://10.11.0.150:808
export https_proxy=https://10.11.0.150:808


# wget命令代理
[root@node03 ~]# cat ~/.wgetrc 
http_proxy = http://10.11.0.150:808
ftp_proxy = http://10.11.0.150:808


# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新並安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務
sudo service docker start

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM