当前位置: 首页 > news >正文

Docker实战:从基础镜像到Nginx定制

实战案例:Dockerfile 制作基于基础镜像的Base镜像

准备目录结构,下载镜像并初始化系统

root@ubuntu2404:~# #mkdir /data/dockerfile/{web/{nginx,apache,tomcat,jdk},system/{centos,ubuntu,alpine,debian}} -p
root@ubuntu2404:~# docker pull centos:7
root@ubuntu2404:~# docker images centos
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       7         eeb6ee3f44bd   3 years ago   204MB

先制作基于基础镜像的系统Base镜像

root@ubuntu2404:~# cd /data/dockerfile/system/centos/
root@ubuntu2404:/data/dockerfile/system/centos# vim Dockerfile 
root@ubuntu2404:/data/dockerfile/system/centos# cat Dockerfile
FROM centos:7
LABEL maintainer="caoge <ywxe@aliyun.com>"
RUN sed -i 's|mirrorlist=http://mirrorlist.centos.org|#mirrorlist=http://mirrorlist.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo && sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo 
&& yum makecache 
&& yum -y install vim-enhanced tcpdump lrzsz tree telnet bash completion net-tools wget bzip2 lsof tmux man-pages zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel
root@ubuntu2404:/data/dockerfile/system/centos# vim build.sh 
root@ubuntu2404:/data/dockerfile/system/centos# cat build.sh 
#!/bin/bash
docker build -t centos7-base:v1 .
root@ubuntu2404:/data/dockerfile/system/centos# chmod +x build.sh 
root@ubuntu2404:/data/dockerfile/system/centos# ./build.sh
root@ubuntu2404:/data/dockerfile/system/centos# docker images
REPOSITORY     TAG             IMAGE ID       CREATED        SIZE
centos7-base   v1              46549083b7ee   4 hours ago    804MB
centos         7               eeb6ee3f44bd   3 years ago    204MB
root@ubuntu2404:/data/dockerfile/system/centos# docker image history centos7-base:v1 
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
46549083b7ee   4 hours ago   RUN /bin/sh -c sed -i 's|mirrorlist=http://m…   600MB     buildkit.dockerfile.v0
<missing>      4 hours ago   LABEL maintainer=caoge <ywxe@aliyun.com>        0B        buildkit.dockerfile.v0
<missing>      3 years ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      3 years ago   /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
<missing>      3 years ago   /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB     

实战案例:Dockerfile 制作基于Base镜像的 nginx 镜像

在Dockerfile目录下准备编译安装的相关文件

root@ubuntu2404:~# mkdir -p /data/dockerfile/web/nginx/1.26/
root@ubuntu2404:~# cd /data/dockerfile/web/nginx/1.26/
root@ubuntu2404:/data/dockerfile/web/nginx/1.26# wget https://nginx.org/download/nginx-1.26.3.tar.gz
root@ubuntu2404:/data/dockerfile/web/nginx/1.26# mkdir app
root@ubuntu2404:/data/dockerfile/web/nginx/1.26# echo hello nginx >app/index.html
root@ubuntu2404:/data/dockerfile/web/nginx/1.26# tar zcf app.tar.gz app
root@ubuntu2404:/data/dockerfile/web/nginx/1.26# ls
app  app.tar.gz  nginx-1.26.3.tar.gz

在一台测试机进行编译安装同一版本的nginx 生成模版配置文件

[root@rocky8 ~]# yum -y install gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl-devel systemd-devel zlib-devel
[root@rocky8 ~]# wget -P /usr/local/src/ https://nginx.org/download/nginx-1.26.3.tar.gz
[root@rocky8 ~]# cd /usr/local/src/
[root@rocky8 ~]# tar xvf nginx-1.26.3.tar.gz 
[root@rocky8 ~]# cd nginx-1.26.3/
[root@rocky8 ~]#  ./configure --prefix=/apps/nginx && make && make install 
#将配置文件复制到nginx镜像的服务器相应目录下
[root@rocky8 ~]# scp /apps/nginx/conf/nginx.conf 192.168.1.30:/data/dockerfile/web/nginx/1.26root@ubuntu2404:/data/dockerfile/web/nginx/1.26# vim nginx.conf 
user  nginx;
worker_processes  1;
daemon off;				#增加此行,前台运行nginx

编写Dockerfile文件

root@ubuntu2404:~# cd /data/dockerfile/web/nginx/1.26
[root@ubuntu2404 1.26]#vim Dockerfile 
FROM centos7-base:v1.2
LABEL maintainer="caoge.com<ywxr@aliyun.com>"
ADD nginx-1.26.3.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.26.3 && ./configure --prefix=/apps/nginx && make && make install && rm -rf /usr/local/src/nginx* && useradd -r nginx
COPY nginx.conf /apps/nginx/conf
ADD app.tar.gz /apps/nginx/html
EXPOSE 80 443
CMD ["/apps/nginx/sbin/nginx"]#第二种方法不推荐
FROM centos7-base:v1.2
LABEL maintainer="caoge.com<ywxr@aliyun.com>"
ADD nginx-1.26.3.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.26.3 && ./configure --prefix=/apps/nginx 
RUN cd /usr/local/src/nginx-1.26.3 && make 
RUN cd /usr/local/src/nginx-1.26.3 && make install  
run cd /root/ && rm -rf /usr/local/src/nginx* && useradd -r nginx
COPY nginx.conf /apps/nginx/conf
ADD app.tar.gz /apps/nginx/html
EXPOSE 80 443
CMD ["/apps/nginx/sbin/nginx"]
[root@ubuntu2404 nginx]#

生成 nginx 镜像

[root@ubuntu2404 ~]#cd /data/dockerfile/web/nginx/1.26/
[root@ubuntu2404 1.26]#ls
app  app.tar.gz  nginx-1.26.3.tar.gz  nginx.conf Dockerfile
[root@ubuntu2404 1.26]#vim build.sh
#!/bin/bash
docker build -t nginx-centos7:v1.0 .
[root@ubuntu2404 1.26]#chmod +x build.sh 
[root@ubuntu2404 1.26]#./build.sh
[root@ubuntu2404 1.26]#docker images
REPOSITORY      TAG             IMAGE ID       CREATED          SIZE
nginx-centos7   v1.0            7f0907c0f8f4   2 minutes ago    967MB

生成的容器测试镜像

[root@ubuntu2404 1.26]#docker run -d -p 80:80 nginx-centos7:v1.0 
37b882a1ce79f08bdb6f527191e9ac7a9465f498003521decba3ce1094ed4401
[root@ubuntu2404 1.26]#docker ps -a
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                                          NAMES
37b882a1ce79   nginx-centos7:v1.0   "/apps/nginx/sbin/ng…"   22 seconds ago   Up 21 seconds   0.0.0.0:80->80/tcp, [::]:80->80/tcp, 443/tcp   adoring_kalam
hello nginx
[root@ubuntu2404 1.26]#docker exec -it 37b882a1ce79 bash
[root@37b882a1ce79 /]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  20604  2688 ?        Ss   07:09   0:00 nginx: master process /apps/nginx/sbin/nginx
nginx          7  0.0  0.0  21048  2928 ?        S    07:09   0:00 nginx: worker process
root           8  0.2  0.0  11844  2688 pts/0    Ss   07:13   0:00 bash
root          24  0.0  0.0  51748  3328 pts/0    R+   07:13   0:00 ps aux
[root@37b882a1ce79 /]# exit
exit
[root@ubuntu2404 1.26]#docker port 37b882a1ce79
80/tcp -> 0.0.0.0:80
80/tcp -> [::]:80
[root@ubuntu2404 1.26]#curl 127.0.0.1/app/
hello nginx
[root@ubuntu2404 1.26]#curl 172.17.0.2/app/
hello nginx

实战案例:Dockerfile 直接制作 nginx 镜像

在Dockerfile目录下准备编译安装的相关文件

[root@ubuntu2404 ~]# mkdir /data/dockerfile/web/nginx/1.26
[root@ubuntu2404 ~]# cd /data/dockerfile/web/nginx/1.26
[root@ubuntu2404 1.26]#vim nginx.conf
user  nginx;
worker_processes  1;
#daemon off;
[root@ubuntu2404 1.26]# wget https://nginx.org/download/nginx-1.26.3.tar.gz

编写 Dockerfile 文件

[root@ubuntu2404 1.26]#vim Dockerfile 
FROM centos:7
LABEL maintainer="caoge.com<ywxr@aliyun.com>"RUN sed -i 's|mirrorlist=http://mirrorlist.centos.org|#mirrorlist=http://mirrorlist.centos.org|g' /etc/yum.repos.d/CentOS-Base.repo && sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo && yum install -y gcc gcc-c++  pcre pcre-devel zlib zlib-devel openssl openssl-devel && useradd -r -s /sbin/nologin nginx && yum clean all
ADD nginx-1.26.3.tar.gz /usr/local/srcRUN cd /usr/local/src/nginx-1.26.3 && ./configure --prefix=/apps/nginx && make && make install && rm -rf /usr/local/src/nginx* 
ADD index.html /apps/nginx/html/
RUN ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]
[root@ubuntu2404 1.26]#

生成 nginx 镜像

[root@ubuntu2404 1.26]#vim build.sh 
#!/bin/bash
docker build -t nginx-centos7:v1.2 .
[root@ubuntu2404 1.26]#chmod +x build.sh
[root@ubuntu2404 1.26]#./build.sh 
[+] Building 57.7s (11/11) FINISHED                                                                                               docker:default=> [internal] load build definition from Dockerfile                                                                                        0.0s=> => transferring dockerfile: 784B                                                                                                        0.0s=> [internal] load metadata for docker.io/library/centos:7                                                                                 0.0s=> [internal] load .dockerignore                                                                                                           0.0s=> => transferring context: 2B                                                                                                             0.0s=> CACHED [1/6] FROM docker.io/library/centos:7                                                                                            0.0s=> [internal] load build context                                                                                                           0.0s=> => transferring context: 89B                                                                                                            0.0s=> [2/6] RUN sed -i 's|mirrorlist=http://mirrorlist.centos.org|#mirrorlist=http://mirrorlist.centos.org|g' /etc/yum.repos.d/CentOS-Base.  41.5s=> [3/6] ADD nginx-1.26.3.tar.gz /usr/local/src                                                                                            0.1s => [4/6] RUN cd /usr/local/src/nginx-1.26.3 && ./configure --prefix=/apps/nginx && make && make install && rm -rf /usr/local/src/nginx*   15.3s => [5/6] COPY index.html /apps/nginx/html/                                                                                                 0.0s => [6/6] RUN ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx                                                                                  0.2s => exporting to image                                                                                                                      0.4s => => exporting layers                                                                                                                     0.4s => => writing image sha256:d36538f56f0661bc726d57c6567f72c736ec05b13a553f08dbfe2c49a4b3b7b7                                                0.0s => => naming to docker.io/library/nginx-centos7:v1.2                                                                                       0.0s 
[root@ubuntu2404 1.26]#docker images
REPOSITORY      TAG             IMAGE ID       CREATED             SIZE
nginx-centos7   v1.2            d36538f56f06   47 seconds ago      346MB

生成容器测试镜像

[root@ubuntu2404 1.26]#docker run -d -p 80:80 nginx-centos7:v1.2 
79c5de6e9b7b28e16b7736763616811eaeadf8b3131c3460d831eb3889b2c2ca
[root@ubuntu2404 1.26]#docker ps -l
CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                          NAMES
79c5de6e9b7b   nginx-centos7:v1.2   "nginx -g 'daemon of…"   4 seconds ago   Up 4 seconds   0.0.0.0:80->80/tcp, [::]:80->80/tcp, 443/tcp   nervous_jepsen
[root@ubuntu2404 1.26]#curl 127.0.0.1
hello nginx
#第二种
[root@ubuntu2404 ~]#curl 172.17.0.2
hello nginx[root@ubuntu2404 1.26]#docker exec -it 79c5de6e9b7b bash
[root@79c5de6e9b7b /]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  20600  2816 ?        Ss   07:51   0:00 nginx: master process nginx -g daemon off;
nobody         7  0.0  0.0  21044  2800 ?        S    07:51   0:00 nginx: worker process
root           8  0.3  0.0  11844  2816 pts/0    Ss   07:52   0:00 bash
root          22  0.0  0.0  51748  3200 pts/0    R+   07:52   0:00 ps aux
[root@79c5de6e9b7b /]# exit
exit
[root@ubuntu2404 1.26]#
http://www.dtcms.com/a/473869.html

相关文章:

  • 什么是NoSQL?
  • 北京网站建设公司代理备份整个网站
  • 宁夏做网站建设公司私人订制与定制
  • 在 Ubuntu 下开发鸿蒙应用:理解系统的最佳入口
  • RabbitMQ四种交换机详解
  • 几种最常见的病毒/恶意软件类型
  • PHP计算过去一定时间段内日期范围函数
  • 怎么看网站是什么程序做的产品推广的目的和意义
  • 摄像头软件参数调试详解与实战
  • DB-GPT:AI原生数据应用开发框架解析
  • 论文笔记(九十三)ManipulationNet: Benchmarking
  • AIX 服务器 CPU 长期 90%:从 nmon 画像到 DataStage 僵尸进程的定位与清理
  • 10_基础策略编程实现
  • 服装网站建设前景分析网站 不备案
  • 克隆网站模板网站正在建设中 模板
  • 【完整源码+数据集+部署教程】 葡萄病害检测系统源码和数据集:改进yolo11-CAA-HSFPN
  • deepseekmine2.2.0发布,本地知识库,秒级上传与检索文件,免费试用
  • JavaSE
  • 基于数据挖掘的银行贷款审批预测系统
  • 加大网站建设力度上海十大互联网公司
  • LeetCode 翻转对
  • Egg.js 完全指南:企业级 Node.js 应用框架
  • 矩阵的求逆
  • 网页设计做网站wordpress主题添加双备案号
  • 已有备案网站增加域名咸阳网站建设价格
  • go-swagger学习笔记
  • Blender硬面建模灯光渲染材质修改器纹理烘焙插件 Rantools And P-Cutter All-In-One Addon V3.3.10
  • Autosar OS简介
  • 建设企业网站制作公司贵阳做网站公司排名
  • 设计模式篇之 桥接模式 Bridge