06-使用dockerfile构建nginx、redis镜像

news2024/11/24 15:00:55

7edb7a58ba324275dcc206da72e1919f.jpeg

主旨

本文使用上一篇文章中说到的dockerfile方式,分别构建一个nginx,一个redis镜像。

环境

linux环境
docker环境

nginx镜像构建

创建目录,并切换至对应目录:

[yunweijia@localhost ~]$ mkdir -pv docker/nginx
mkdir: 已创建目录 "docker"
mkdir: 已创建目录 "docker/nginx"
[yunweijia@localhost ~]$ cd docker/nginx/

nginx安装脚本:

[yunweijia@localhost nginx]$ pwd
/home/yunweijia/docker/nginx
[yunweijia@localhost nginx]$ vim install.s
yum install -y wget tar gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
cd /usr/local/src
wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'
tar -zxf nginx-1.14.2.tar.gz
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx && make && make install
\rm -rf /usr/local/src/*
[yunweijia@localhost nginx]$

nginx启动脚本,记得添加可执行权限:

[yunweijia@localhost nginx]$ pwd
/home/yunweijia/docker/nginx
[yunweijia@localhost nginx]$ vim nginx
#!/bin/bash
/usr/local/nginx/sbin/nginx -g "daemon off;"
[yunweijia@localhost nginx]$ chmod +x nginx
[yunweijia@localhost nginx]$

dockerflie文件:

[yunweijia@localhost nginx]$ pwd
/home/yunweijia/docker/nginx
[yunweijia@localhost nginx]$ vim Dockerfile
FROM centos:7
COPY install.sh /tmp/install.sh
RUN sh /tmp/install.sh
COPY nginx /usr/bin/nginx
ENTRYPOINT ["nginx"]
[yunweijia@localhost nginx]$

    构建nginx镜像:

[yunweijia@localhost nginx]$ sudo docker build -t yunweijia:nginx /home/yunweijia/docker/nginx/
# 直至出现如下提示
Successfully built e46b589abaed
Successfully tagged yunweijia:nginx
[yunweijia@localhost nginx]$ sudo docker images  # 新建了一个nginx镜像
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
yunweijia    nginx     e46b589abaed   About a minute ago   461MB
centos       7         eeb6ee3f44bd   4 months ago         204MB
[yunweijia@localhost nginx]$

    测试nginx镜像:

[yunweijia@localhost nginx]$ sudo docker run -d yunweijia:nginx
cde16676029bf114bb4226c6aeeed8b3cd1f0b45c90b5a3ca5c488cf6315635a
[yunweijia@localhost nginx]$ sudo docker ps 
CONTAINER ID   IMAGE             COMMAND   CREATED         STATUS         PORTS     NAMES
cde16676029b   yunweijia:nginx   "nginx"   4 seconds ago   Up 4 seconds             beautiful_ganguly
[yunweijia@localhost nginx]$ 
[yunweijia@localhost nginx]$ sudo docker exec -it cde16676029b /bin/bash
[root@cde16676029b /]# ps -ef | grep nginx
root          1      0  0 14:23 ?        00:00:00 /bin/bash /usr/bin/nginx
root          7      1  0 14:23 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -g daemon off;
nobody        8      7  0 14:23 ?        00:00:00 nginx: worker process
root         24      9  0 14:23 pts/0    00:00:00 grep --color=auto nginx
[root@cde16676029b /]# exit
[yunweijia@localhost nginx]$
[yunweijia@localhost nginx]$ sudo docker stop cde16676029b
cde16676029b
[yunweijia@localhost nginx]$

redis镜像构建

创建目录,并切换至对应目录:

[yunweijia@localhost ~]$ pwd
/home/yunweijia
[yunweijia@localhost ~]$ mkdir -pv docker/redis
mkdir: 已创建目录 "docker/redis"
[yunweijia@localhost ~]$ cd docker/redis/
[yunweijia@localhost redis]$

redis安装脚本:

[yunweijia@localhost redis]$ pwd
/home/yunweijia/docker/redis
[yunweijia@localhost redis]$ vim install.sh
yum install -y wget gcc gcc-c++ make tar openssl openssl-devel cmake
cd /usr/local/src
wget 'http://download.redis.io/releases/redis-4.0.9.tar.gz'
tar -zxf redis-4.0.9.tar.gz
cd redis-4.0.9
make && make PREFIX=/usr/local/redis install
mkdir -pv /usr/local/redis/conf/
cp redis.conf /usr/local/redis/conf/
\rm -rf /usr/local/src/*
[yunweijia@localhost redis]$

redis启动脚本,记得添加可执行权限:

[yunweijia@localhost redis]$ pwd
/home/yunweijia/docker/redis
[yunweijia@localhost redis]$ vim redis
#!/bin/bash
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
[yunweijia@localhost redis]$ 
[yunweijia@localhost redis]$ chmod +x redis

Dockerfile文件:

[yunweijia@localhost redis]$ pwd
/home/yunweijia/docker/redis
[yunweijia@localhost redis]$ vim Dockerfile
FROM centos:7
COPY install.sh /tmp/install.sh
RUN sh /tmp/install.sh
COPY redis /usr/bin/redis
ENTRYPOINT ["redis"]
[yunweijia@localhost redis]$

构建redis镜像:

[yunweijia@localhost redis]$ sudo docker build -t yunweijia:redis /home/yunweijia/docker/redis/
# 直至出现如下提示
Successfully built 117c9de3eb27
Successfully tagged yunweijia:redis
[yunweijia@localhost redis]$ sudo docker images  # 新建了一个redis
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
yunweijia    redis     117c9de3eb27   20 seconds ago   509MB
yunweijia    nginx     553baf668d3f   7 minutes ago    461MB
centos       7         eeb6ee3f44bd   4 months ago     204MB
[yunweijia@localhost redis]$

测试redis镜像:

[yunweijia@localhost redis]$ sudo docker run -d yunweijia:redis
4d73e5af06132f5d477b1e3ba55bbba7e6390fea66952daefc355509a4366511
[yunweijia@localhost redis]$ sudo docker ps
CONTAINER ID   IMAGE             COMMAND   CREATED         STATUS         PORTS     NAMES
4d73e5af0613   yunweijia:redis   "redis"   7 seconds ago   Up 6 seconds             focused_swirles
[yunweijia@localhost redis]$ sudo docker exec -it 4d73e5af0613 /bin/bash
[root@4d73e5af0613 /]# ps -ef | grep redis
root          1      0  0 14:30 ?        00:00:00 /bin/bash /usr/bin/redis
root          7      1  0 14:30 ?        00:00:00 /usr/local/redis/bin/redis-server 127.0.0.1:6379
root         26     11  0 14:30 pts/0    00:00:00 grep --color=auto redis
[root@4d73e5af0613 /]# exit
exit
[yunweijia@localhost redis]$ sudo docker stop 4d73e5af0613
4d73e5af0613
[yunweijia@localhost redis]$

    至此,使用dockerfile构建nginx、redis镜像完毕。下一篇我们将介绍下使用dockerfile构建python、jenkins镜像。

1e85c63e3fac8d74671e380429223429.jpeg

如果本文内容对你有所帮助,请关注并分享我的公众号【运维家】。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis 缓存设计

1. 前言 学习redis 缓存,可以是为了技术面试;可以是为了应用实践,在开发设计过程中引入缓存,提高性能。比如常见的面试题: 2. 什么是缓存预热、击穿、穿透和雪崩 2.1 缓存预热 缓存预热就是系统上线后,…

Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用(四) Puppeteer结合测试工具jest使用(四)一、简介二、与jest结合使用,集成到常规测试三、支持其他的几种四、总结 一、简介 Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node…

09. 机器学习- 逻辑回归

文章目录 线性回归回顾逻辑回归 Hi,你好。我是茶桁。 上一节课,在结尾的时候咱们预约了这节课一开始对上一节课的内容进行一个回顾,并且预告了这节课内容主要是「逻辑回归」,那我们现在就开始吧。 线性回归回顾 在上一节课中&a…

【Linux】基本指令-入门级文件操作(二)

目录 基本指令 7 cp指令(重要) 8 mv指令(重要) 9 nano指令 10 cat指令 11 echo指令与重定向(重要) 12 more指令 13 less指令 基本指令 7 cp指令(重要) 功能:复…

React高级特性之context

例1&#xff1a; createContext // 跨组件通信Context引入createContext import React, { createContext } from react// App传数据给组件C App -- A -- C// 1. 创建Context对象 const { Provider, Consumer } createContext()function SonA () {return (<div>我是…

分布式存储系统Ceph应用详解

Ceph的应用 一、Ceph 存储池(Pool)1.1 Ceph存储池的基本概念1.2 原理1.3 一个Pool资源池应该包含多少PG数&#xff1f;1.4 Ceph 存储池相关管理命令1.4.1 创建1.4.2 查看1.4.3 修改1.4.4 删除 二、 CephFS文件系统MDS接口三、创建CephFS文件系统MDS接口3.1 服务端操作Step1 在管…

【Java学习之道】线程的概念与作用

引言 今天我们将探索多线程编程的基础概念和作用。对于初学者来说&#xff0c;掌握多线程编程是迈向Java高级技能的重要一步。通过本章的学习&#xff0c;你将了解线程是什么以及它在程序开发中的重要性&#xff0c;为你进一步深入学习和实际工作打下坚实的基础。让我们一起来…

学信息系统项目管理师第4版系列27_项目集管理和项目组合管理

1. 项目集发起人 1.1. 负责承诺将组织的资源应用于项目集&#xff0c;并致力于使项目集取得成功的人 1.2. 典型职责 1.2.1. 为项目集提供资金&#xff0c;确保项目集目标与战略愿景保持一致&#xff1b; 1.2.2. 使效益实现交付 1.2.3. 消除项目集管理与交付的困难和障碍 …

单目3D自动标注

这里介绍两种 1. 基于SAM的点云标注 Seal&#xff1a;是一个多功能的自监督学习框架&#xff0c;能够通过利用视觉基础模型的现成知识和2D-3D的时空约束分割自动驾驶数据集点云 Scalability&#xff1a;可拓展性强&#xff0c;视觉基础模型蒸馏到点云中&#xff0c;避免2D和…

应对互联网用户激增与IP地址短缺的挑战

互联网用户激增 随着互联网技术的飞速发展&#xff0c;互联网已经深刻改变了我们的生活方式和商业模式。无论是个人用户还是企业&#xff0c;都越来越依赖互联网进行沟通、娱乐、工作和学习。这一现象导致了互联网用户数量的快速激增。 IP地址的有限性 然而&#xff0c;与此…

码蹄集2230--square 高精度乘低精度,组合数

有种走法&#xff0c;因为需要向上走m步&#xff0c;向右走n步。 显然分子分母分别算出&#xff0c;再相除不太可能&#xff0c;那么分别求出分子和分母的质因子相乘的形式。分子存入up数组中&#xff0c;分母存入down数组中&#xff0c;数组中的元素对应之差final_数组即代表…

OJ项目——用户的登录拦截,我是如何实现的?

目录 前言 1、关于Session该如何处理 简单session回顾&#xff1a; 回顾session的setAttribute、getAttribute : 项目中如何做&#xff1f; 2、登陆拦截器实现 自定义拦截器&#xff1a; 自定义拦截&#xff1a; 前言 博主之前也有出过一期关于拦截器的&#xff0c;大…

STL容器适配器以及仿函数的简单认识

在学c的过程中&#xff0c;我们必不可少的一大工具就是STL&#xff0c;并且要一定程度的了解STL背后的原理。 今天我们来探讨一下STL中stack和queue的容器适配器&#xff0c;以及priority_queue是什么&#xff0c;以及一点仿函数的知识。1.容器适配器 1). 容器适配器 在我们了…

React添加文件路径时使用@符号代替src目录(非creae-react-app)

在其它项目中看到的可以用符号来代替src目录&#xff0c;那么在自己的react项目中也必须得尝试一下。本人的项目不是通过create-react-app脚手架来创建的&#xff0c;无法使用craco或者的方案来实现。 jsconfig.json配置 用的vscode进行开发&#xff0c;查看项目当中是否存在js…

与HTTP相关的各种协议

TCP/IP TCP/IP协议是目前网络世界“事实上”的标准通信协议&#xff0c;实际上是一系列网络通信协议的统称&#xff0c;其中最核心的两个协议是 TCP和IP&#xff0c;其他的还有 UDP、ICMP、ARP 等等&#xff0c;共同构成了一个复杂但有层次的协议栈。 这个协议栈有四层&#x…

Nginx:动静分离(示意图+配置讲解)

示意图&#xff1a; 动静分离 动静分离是指将动态内容和静态内容分开处理的一种方式。通常&#xff0c;动态内容是指由服务器端处理的&#xff0c;例如动态生成的网页、数据库查询等。静态内容是指不需要经过服务器端处理的&#xff0c;例如图片、CSS、JavaScript文件等。通过…

C++之make_unique、namespace、class类总结(二百四十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

React-Router-6学习笔记

一、新建react项目 1、新建项目命令&#xff1a; yarn create vite react-router --template react 2、在vsCode中打开项目 3、在vsCode打开命令终端&#xff0c;输入 yarn 4、执行yarn dev启动当前项目 yarn dev 5、删除多余的东西&#xff0c;保留app.jsx和main.jsx文…

高校教务系统登录页面JS分析——皖西学院

高校教务系统密码加密逻辑及JS逆向 本文将介绍皖西学院教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密…

NLP算法面经 | 腾讯 VS 美团

作者 | 曾同学 编辑 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 后台回复『面试』加入讨论组交流噢 lz从3月初脚因打球扭伤了开始&#xff0c;投递简历&#xff0c;接二连三的面试鞭尸又面试&#xff0c;昨天才终于上岸了&#xff0c;分享经验~ 腾讯PCG看点&…