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

dockerfile实操案例

dockerfile实操案例

部署nginx案例

[root@hrz3 ~]# vim Dockerfile   
FROM centos:7    # 基础镜像:使用CentOS 7作为基础操作系统
MAINTAINER hrz@example.com   # 维护者信息:标明镜像的作者和联系方式
RUN rm -rf /etc/yum.repos.d/*   # 清理yum源配置:删除系统原有的yum仓库配置文件
ADD Centos-7.repo /etc/yum.repos.d/   # 将本地的Centos-7.repo文件复制到容器中
ADD epel-7.repo /etc/yum.repos.d/  # 添加EPEL扩展源:EPEL源包含更多额外的软件包
RUN yum -y install nginx  # 安装Nginx:使用yum安装nginx软件包
EXPOSE 80  # 暴露80端口:声明容器运行时监听的端口号
# 启动命令:设置容器启动时执行的默认命令
# "/usr/sbin/nginx" - Nginx主程序路径
# "-g" - 全局配置指令
# "daemon off;" - 让Nginx在前台运行(容器要求主进程在前台运行,否则容器会退出)
CMD ["/usr/sbin/nginx","-g","daemon off;"]

构建nginx镜像

[root@hrz3 ~]# docker build -t nginx:v1 .
[+] Building 42.7s (10/10) FINISHED                                          docker:default=> [internal] load build definition from Dockerfile                      0.0s=> => transferring dockerfile: 260B                                      0.0s=> [internal] load metadata for docker.io/library/centos:7               0.0s=> [internal] load .dockerignore                                         0.0s=> => transferring context: 2B                                           0.0s=> [1/5] FROM docker.io/library/centos:7                                 0.0s=> [internal] load build context                                         0.0s=> => transferring context: 66B                                          0.0s=> CACHED [2/5] RUN rm -rf /etc/yum.repos.d/*                            0.0s=> CACHED [3/5] ADD Centos-7.repo /etc/yum.repos.d/                      0.0s=> CACHED [4/5] ADD epel-7.repo /etc/yum.repos.d/                        0.0s=> [5/5] RUN yum -y install nginx                                        42.2s=> exporting to image                                                    0.4s => => exporting layers                                                   0.4s => => writing image sha256:97d5234cd57e20acaeb3b271675d47c1541cd8282b74e0789d2aa48a2 0.0s => => naming to docker.io/library/nginx:v1 

查看是否构建成功

[root@hrz3 ~]# docker images                                                                
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE                                 
nginx        v1        97d5234cd57e   55 seconds ago   536MB

创建nginx镜像的容器测试是否能使用

[root@hrz3 ~]# docker run -itd --name mynginx -p 80:80 nginx:v1 
1e9e1e3162e014c813956f5dd277211eadc1ebe93ea7dcad77117ebe1372b2c8
[root@hrz3 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED          STATUS         PORTS                               NAMES
1e9e1e3162e0   nginx:v1   "/usr/sbin/nginx -g …"   10 seconds ago   Up 9 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   mynginx

访问网站192.168.100.30结果是403
在这里插入图片描述

进入容器查看发现index.html被标红

[root@hrz3 ~]# docker exec -it mynginx /bin/bash
[root@1e9e1e3162e0 /]# cd /usr/share/nginx/
[root@1e9e1e3162e0 nginx]# cd html/
[root@1e9e1e3162e0 html]# ls
404.html  50x.html  en-US  icons  img  index.html  nginx-logo.png  poweredby.png

删除并重新写一个index.html

[root@1e9e1e3162e0 html]# rm -rf index.html 
[root@1e9e1e3162e0 html]# echo "Holle World" > index.html

再次访问

在这里插入图片描述

也可以在Dockerfile中提前写好

[root@hrz3 ~]# vim Dockerfile 
FROM centos:7
MAINTAINER hrz@example.com
RUN rm -rf /etc/yum.repos.d/*
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel-7.repo /etc/yum.repos.d/
RUN yum -y install nginx
RUN rm -rf /usr/share/nginx/html/index.html &&  echo "Holle world" > /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["/usr/sbin/nginx","-g","daemon off;"]

构建镜像并创建容器

[root@hrz3 ~]# docker build -t nginx:v2 .
[root@hrz3 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        v2        69dcbe3cb46e   22 seconds ago   536MB
[root@hrz3 ~]# docker run -itd --name mynginx2 -p 8000:80 nginx:v2   
e83920cda5af0133887637b52fbbefd1fadeff1d01b03831f9ce0a64061dd416

访问网站

在这里插入图片描述

部署扫雷网页小游戏案例

提前准备好扫雷的前端文件

[root@hrz3 ~]# ls
saolei.zip

编写Dockerfile

FROM centos:7
RUN rm -rf /etc/yum.repos.d/*						# 清理原有yum源
# 添加网络yum源
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel-7.repo /etc/yum.repos.d/
RUN yum -y install unzip tomcat						# 安装必要软件
WORKDIR /var/lib/tomcat/webapps/					# 设置工作目录
ADD saolei.zip .									# 添加扫雷游戏文件
RUN unzip saolei.zip && mv saolei ROOT				# 解压并重命名为ROOT(作为默认应用)
ADD init.sh /init.sh								# 添加启动脚本
EXPOSE 8080											
CMD ["/bin/bash","/init.sh"]						# 使用启动脚本运行

构建saolei镜像

[root@hrz3 ~]# docker build -t saolei:v1 .
[+] Building 0.0s (14/14) FINISHED                                           docker:default=> [internal] load build definition from Dockerfile            0.0s=> => transferring dockerfile: 338B                            0.0s=> [internal] load metadata for docker.io/library/centos:7     0.0s=> [internal] load .dockerignore                               0.0s=> => transferring context: 2B                                 0.0s=> [1/9] FROM docker.io/library/centos:7                       0.0s=> [internal] load build context                               0.0s=> => transferring context: 123B                               0.0s=> CACHED [2/9] RUN rm -rf /etc/yum.repos.d/*                  0.0s=> CACHED [3/9] ADD Centos-7.repo /etc/yum.repos.d/            0.0s=> CACHED [4/9] ADD epel-7.repo /etc/yum.repos.d/              0.0s=> CACHED [5/9] RUN yum -y install unzip tomcat                0.0s=> CACHED [6/9] WORKDIR /var/lib/tomcat/webapps/               0.0s=> CACHED [7/9] ADD saolei.zip .                               0.0s=> CACHED [8/9] RUN unzip saolei.zip && mv saolei ROOT         0.0s=> CACHED [9/9] ADD init.sh /init.sh                           0.0s=> exporting to image                                          0.0s=> => exporting layers                                         0.0s=> => writing image sha256:3a4bc4a8f28bd984f80e29f90805a2ee5bfd11b14a1e5c00c2c6b0943  0.0s=> => naming to docker.io/library/saolei:v1 

查看是否构建成功

[root@hrz3 ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
saolei       v1        3a4bc4a8f28b   46 minutes ago      716MB

创建扫雷容器测试

[root@hrz3 ~]# docker run -itd --name saolei -P saolei:v1
a0452dd6abfcfec0d6b080129ee9aae2da7d69f2966eaf476b128572c06fbdad
[root@hrz3 ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED             STATUS             PORTS                                         NAMES
a0452dd6abfc   saolei:v1   "/bin/bash /init.sh"      3 seconds ago       Up 3 seconds       0.0.0.0:32772->8080/tcp, :::32772->8080/tcp   saolei

访问网页http://192.168.100.30:32772/saolei.jsp

在这里插入图片描述

可道云案例

[root@hrz3 ~]# cd /opt
[root@hrz3 opt]# mkdir dockerfile
[root@hrz3 opt]# cd dockerfile/  
[root@hrz3 dockerfile]# mkdir kod  
[root@hrz3 dockerfile]# cd kod/ 
[root@hrz3 kod]# pwd
/opt/dockerfile/kod

将需要的文件下到当前目录下

[root@hrz3 kod]# ls
Centos-7.repo   epel-7.repo  kodexplorer4.40.zip  nginx.conf

nginx.conf核心配置

[root@hrz3 kod]# cat nginx.conf 
worker_processes 1; 
events { worker_connections 1024; 
}
http {include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /code; index index.php index.html index.htm; }location ~ \.php$ { root /code; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name; include fastcgi_params; }} 
}

编写dockerfile

[root@hrz3 kod]# vim dockerfile 
FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
ADD Centos-7.repo /etc/yum.repos.d/
ADD epel-7.repo /etc/yum.repos.d/
RUN yum -y install  nginx php-fpm php-gd php-mbstring unzip
RUN sed -i '/^user/c user=nginx' /etc/php-fpm.d/www.conf
RUN sed -i '/^group/c group=nginx' /etc/php-fpm.d/www.conf
COPY nginx.conf /etc/nginx/nginx.conf
RUN mkdir /code
WORKDIR /code
ADD  kodexplorer4.40.zip .
RUN unzip  kodexplorer4.40.zip
RUN chown -R nginx.nginx .
ADD init.sh /init.sh
EXPOSE 80
CMD ["/bin/bash","/init.sh"]

编写init脚本

[root@hrz3 kod]# vim init.sh 
#!/bin/bash
php-fpm -D
nginx -g 'daemon off;'

创建可道云镜像

[root@hrz3 kod]# docker build -t kod:v1 .             
[+] Building 0.1s (19/19) FINISHED                                           docker:default=> [internal] load build definition from dockerfile                  0.0s=> => transferring dockerfile: 543B                                  0.0s=> [internal] load metadata for docker.io/library/centos:7           0.0s=> [internal] load .dockerignore                                     0.0s=> => transferring context: 2B                                       0.0s=> [ 1/14] FROM docker.io/library/centos:7                           0.0s=> [internal] load build context                                     0.0s=> => transferring context: 163B                                     0.0s=> CACHED [ 2/14] RUN rm -rf /etc/yum.repos.d/*                      0.0s=> CACHED [ 3/14] ADD Centos-7.repo /etc/yum.repos.d/                0.0s=> CACHED [ 4/14] ADD epel-7.repo /etc/yum.repos.d/                  0.0s=> CACHED [ 5/14] RUN yum -y install  nginx php-fpm php-gd php-mbstring unzip         0.0s=> CACHED [ 6/14] RUN sed -i '/^user/c user=nginx' /etc/php-fpm.d/www.conf            0.0s=> CACHED [ 7/14] RUN sed -i '/^group/c group=nginx' /etc/php-fpm.d/www.conf          0.0s=> CACHED [ 8/14] COPY nginx.conf /etc/nginx/nginx.conf              0.0s=> CACHED [ 9/14] RUN mkdir /code                                    0.0s=> CACHED [10/14] WORKDIR /code                                      0.0s=> CACHED [11/14] ADD  kodexplorer4.40.zip .                         0.0s=> CACHED [12/14] RUN unzip  kodexplorer4.40.zip                     0.0s=> CACHED [13/14] RUN chown -R nginx.nginx .                         0.0s=> CACHED [14/14] ADD init.sh /init.sh                               0.0s=> exporting to image                                                0.0s=> => exporting layers                                               0.0s=> => writing image sha256:2c901cc19f0b8943fb6edd1aa1ab04a49faa4bb25f071bf9b2a8f5e9a  0.0s=> => naming to docker.io/library/kod:v1                             0.0s

创建可道云容器

[root@hrz3 kod]# docker run -itd --name kod -P kod:v1 
41b32c31657e46060311b9a424efb83fe64f2762554d5d2b95197db46cf1738e
[root@hrz3 kod]# docker ps
CONTAINER ID   IMAGE       COMMAND                   CREATED         STATUS         PORTS                                         NAMES
41b32c31657e   kod:v1      "/bin/bash /init.sh"      3 minutes ago   Up 3 minutes   0.0.0.0:32775->80/tcp, :::32775->80/tcp       kod

访问192.168.100.30:32775

kod]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41b32c31657e kod:v1 “/bin/bash /init.sh” 3 minutes ago Up 3 minutes 0.0.0.0:32775->80/tcp, :::32775->80/tcp kod


访问192.168.100.30:32775![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/234f2e56308148d08dd5116b9b9ea032.png)
http://www.dtcms.com/a/465377.html

相关文章:

  • linux学习笔记(25)——线程安全
  • ubuntu20.04地平线OE3.2.0 GPU Docker使用
  • [VoiceRAG] Azure | 使用`azd`部署应用 | Dockerfile
  • Docker 环境下 GeoPandas/Fiona 报错
  • Docker简易教程
  • vps 网站发布直播软件app下载免费
  • DORIS 服务器宕机重启后出现的问题
  • 网络安全审计技术原理与应用
  • 手机上做网站南宁品牌网站设计公司
  • 第五部分:VTK高级功能模块(第135章 Imaging模块 - 图像处理类)
  • 如何通过 5 种有效方法同步 Android 和 Mac
  • AJAX 知识篇(2):Axios的核心配置
  • 招商网站建设公司申请注册商标的流程
  • 网页美工课程seo网站优化师
  • 海外关键词规划SEO工具
  • AI学习日记——卷积神经网络(CNN):卷积层与池化层的实现
  • iOS 26 系统流畅度实战指南|流畅体验检测|滑动顺畅对比
  • JS中new的过程发生了什么
  • 系统白名单接口添加自定义验证(模仿oauth2.0),防安全扫描不通过
  • 校园服装网站建设预算手机软件应用市场
  • 【AI论文】ExGRPO:从经验中学习进行推理
  • 连接两个世界:QIR——量子-经典混合计算的编译器桥梁
  • 怎样制作网页链接教程狼雨seo教程
  • 第1章:初识Linux系统——连接网络NAT模式
  • CSS3 动画:从入门到精通
  • 在JavaScript / HTML中,所有转义字符(字符实体)
  • shopnc本地生活o2o网站源码网站开发软件怎么做
  • Vue3+socket.io 项目本地vite配置
  • wangEditor
  • Unity网络开发--超文本传输协议Http(1)