Docker 基于centos构建nginx镜像 构建MySQL镜像

2023-05-16

第一题. 基于centos镜像构建nginx:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx1。首先创建目录dockerfile-nginx1,保存Dockerfile文件。具体要求如下:

(1)基于镜像centos:7

(2)安装Nginx

a.安装相关依赖

b.下载并解压Nginx

(3)工作目录设为:nginx-1.9.7

(4)编译安装Nginx

(5)对外暴露80,443端口

(6)修改Nginx配置文件,以非daemon方式启动

(7)复制服务启动脚本并设置权限

(8)启动容器时执行脚本run.sh

run.sh内容如下所示:

题目要求如上,可先自行尝试。下面开始操作:

构建Dockerfile文件,并生成镜像:

创建并进入dockerfile_nginx1文件夹:

mkdir dockerfile_nginx1
cd dockerfile_nginx1

 在文件夹内编写Dockerfile文件并查看:

vim Dockerfile
cat Dockerfile

Dockerfile文件内容:

FROM centos:7
RUN yum install -y proc-devel gcc gcc-c++ zlib zlid-devel make openssl-devel wget
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz
RUN tar -zxvf nginx-1.9.7.tar.gz
WORKDIR nginx-1.9.7
RUN ./configure --prefix=/usr/local/nginx && make && make install
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
COPY run.sh /
RUN chmod 777 /run.sh
CMD ["sh","-c","/run.sh"]

编写run.sh启动脚本内容并查看:

vim run.sh
cat run.sh

run.sh文件内容:

#!/bin/bash
/usr/local/nginx/sbin/nginx

将Dockerfile文件build成镜像,并取名my_build:nginx:

docker build -t my_build:nginx .

使用构建的镜像生成容器: 

使用该镜像创建容器my_nginx,以后台运行的方式启动,并随机分配端口:

docker run -d -P --name my_nginx my_build:nginx

查看启动的容器,并查看容器端口:

docker ps

 在浏览器访问nginx容器:

我们根据随机分配到的端口,在浏览器访问nginx,访问方法是 虚拟机IP地址:端口号。

第二题:基于centos7构建nginx镜像,并修改主页内容:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx2。首先创建目录dockerfile-nginx2,保存Dockerfile文件。具体要求如下:

(1)基于镜像centos:7

(2)将nginx.repo复制到容器中的yum源定义文件位置/etc/yum.repo

(3)安装Nginx

(4)修改Nginx首页信息为“Hello!This is nginx server”

(5)对外暴露80端口

(6)启动Nignx,启动命令:Nginx -g daemon off;

yum.repo文件内容如下所示:

开始操作:

创建并进入文件夹dockerfile_nginx2:

mkdir dockerfile_nginx2
cd dockerfile_nginx2

编写Dockerfile文件:

vim Dockerfile

Dockerfile文件内容:

FROM centos:7
COPY ./nginx.repo /etc/yum.repos.d/nginx.repo
RUN yum install -y nginx
RUN sed -i 's/Welcome to nginx!/Hello!This is nginx server/g' /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

编写nginx.repo文件:

vim nginx.repo

nginx.repo文件内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

将Dockerfile文件构建成镜像:

docker build -t my_build:Nginx2 .

 使用此镜像构建容器,以后台运行的方式启动,并随机分配ip地址:

docker run -d -P my_build:Nginx2

查看启动的容器:

docker ps

第三题:基于centos7构建mysql镜像:

编写Dockerfile制作mysql镜像,生成镜像名为my_build:mysql,具体要求如下:

(1)基于镜像guyton/centos6

(2)开放端口3306

(3)设置root密码为123456

开始操作:

创建并进入mysql文件夹:

mkdir mysql
cd mysql

编写mysql_file文件:

vim mysql_file

mysql_file文件内容:

FROM centos:7
RUN yum localinstall -y https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
RUN yum install -y yum-utils
RUN sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community.repo && sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community-source.repo
RUN yum install -y mysql-server mysql mysql-devel
COPY run.sh /run.sh
RUN chmod 777 /run.sh && /run.sh
EXPOSE 3386
CMD ["mysqld","--user=root"]

编写run.sh文件:

vim run.sh
cat run.sh

run.sh文件内容: 

#! /bin/bash
rm -rf /var/lib/mysql
mysqld --initialize-insecure
chown -R mysql:mysql /var/lib/mysql
mysqld --user root &
sleep 5
mysqladmin -u root password 123456

使用mysql_file文件构建镜像:

docker build -f ./mysql_file -t my_build:mysql .

 

进入Docker容器的两个方式:

方式一:

使用该镜像创建容器,并以交互式的方式启动,并随机分配端口:

docker run -it -P my_build:mysql /bin/bash

 方式二:

创建容器并以后台的方式运行:

docker run -d my_build:mysql

 以交互式的方式进入容器:

docker exec -it 07e4b4e9d9f5 /bin/bash

进入mysql:

mysql -u root -p123456

查看数据库:

show databases;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 基于centos构建nginx镜像 构建MySQL镜像 的相关文章

  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • MySQL 全文搜索不适用于某些单词,例如“house”

    我已经在 3 个字段中的一小部分记录上设置了全文索引 也尝试了 3 个字段的组合 并得到了相同的结果 有些单词返回结果很好 但某些单词如 house 和 澳大利亚 不这样做 有趣的是 澳大利亚 和 家乡 这样做 这似乎是奇怪的行为 如果我添
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 使用按位函数查询 BIT 字段时,MySQL 不使用索引

    我的 MySQL 表中有一个 BIT 类型的字段 我想使用位值存储记录的状态 例如 1 status1 2 status2 4 status3 8 status4 每条记录可以同时具有多种状态 对于 status1 和 status3 该值
  • 强制 nginx 立即关闭连接

    如何让nginx在请求完成后立即关闭tcp连接 我刚刚找到了解决方案 location ip keepalive timeout 0
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • MySQL 存储过程将值分配给 select 语句中的多个变量

    这是我的存储过程 我在为声明的变量赋值时遇到问题 当我执行它时 插入和更新命令工作正常 但声明变量的值保持为 0 但我在数据库中有一些价值 我怎样才能正确地做到这一点 BEGIN DECLARE PaidFee INT DEFAULT 0
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • 如何在 phpmyadmin 中创建 MySQL 触发器

    我想在 MySQL 中创建一个触发器 我运行以下命令 mysql gt delimiter mysql gt CREATE TRIGGER before insert money BEFORE INSERT ON money gt FOR
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c

随机推荐

  • Python之循环语句while

    使用 while 循环 xff0c 只要条件为真 xff0c 我们就可以执行一组语句 场景 1 用户名和密码 反复输入 2 计算1 100 where 条件 要循环执行的代码 1 打印1 xff5e 10之间的数字 2 打印1 50之间能被
  • vue3-devtools安装

    开始使用vue3后 xff0c 发现浏览器上安装的vue devtool不支持vue3 xff0c 但是不翻墙的话无法通过webstore安装 xff0c 所以就只能通过下载源码自行打包来安装 xff0c 折腾了很久 xff0c 记录一下
  • 移动端布局——flex布局下的居中对齐方式(1+X Web前端开发初级 例题)

    题目要求 html代码 lt DOCTYPE html gt lt html gt lt head gt lt title gt 第三题 lt title gt lt meta charset 61 34 utf 8 34 gt lt lt
  • 在redhat8中安装ansible

    文章目录 一 确保有下载软件的仓库二 挂载三 安装 EPEL 源四 下载ansible五 查看是否安装好补充 xff1a 一 确保有下载软件的仓库 如果没有需要写一个 二 挂载 root 64 haha yum repos d mount
  • 【bat批处理】手把手教你批量打开软件、文件、网页等

    bat批处理 打开软件 文件等 0 前言1 start 命令用法1 0 注释1 1 start 命令说明1 2 启动软件1 3 打开文件1 4 打开文件夹1 5 打开网页 2 实战2 0 怎么创建bat批处理文件2 1 打开软件 文件 网页
  • rust的现状和未来发展

    rust现状 Stack Overflow 的开发者调研显示只有 7 的开发者在使用 Rust xff0c 对比 JavaScript Python 等语言 xff0c 使用 Rust 的开发者占比并不高 xff1b 但从 2016 年开始
  • collect2:fatal error: ld terminated with signal 11 [Segmentation fault] 问题的解决

    问题产生 今天gcc编译C文件的时候遇到一个始终无法解决的问题 collect2 fatal error ld terminated with signal 11 Segmentation fault 问题原因 首先我们看到编写程序最眼熟的
  • YAPI宕掉,重启

    因为公司需要 xff0c 一周前 xff0c 安装部署了YAPI的接口服务 安装的时候也是莫名其妙 xff0c 根据很多博客教程 xff0c 下载 node js 下载 mongdb 及对以上进行配置 xff0c 安装YAPI xff0c
  • Linux和Windows间的远程桌面访问

    版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 https blog csdn net u011054333 article details 79905102 在Windows上面 xff0c 我们都用过系统自带的远程
  • c语言排序(选择排序,冒泡排序)

    c语言的排序方式 一 冒泡排序1 基本思路 2 demo 二 选择排序1 基本思路 2 demo 一 冒泡排序 每次将相邻两个数比较 xff0c 将小的调到前头 1 基本思路 将9 8 5 4 2 0六个数字按冒泡排序的方式排序 第一趟比较
  • Haproxy相关概念解析

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http jerry12356 blog 51cto com 4308715 1857973 一 Haproxy概
  • Openstack环境部署(T版)

    文章目录 一 环境配置二 基础环境配置1 修改添加NAT网卡配置2 关闭防火墙和系统安全机制 修改主机名3 安装基础环境依赖包4 VMnet1网卡配置参数5 配置主机映射文件6 三台节点做免交互7 配置DNS xff0c 配置控制节点时间同
  • springboot项目启动时,提示启动命令过长的问题

    启动时提示启动命令过长的问题 解决办法 96 96 96 java span class token operator lt span property span class token assign left variable name
  • Jetbrains/IDEA系列产品无限重置大法!!!

    工欲善其事必先利其器 概述 Jetbrains家的产品有一个很良心的地方 xff0c 他会允许你试用30天 xff08 这个数字写死在代码里了 xff09 以评估是否你真的需要为它而付费 事实上有一款插件可以实现这个功能 xff0c 你或许
  • 彻底解决uniapp发布为H5的跨域问题

    一 uniapp发布成网站 PC Web或手机H5跨域 用HBuilder开发时 用内置浏览器预览没有跨域的问题 当发布为H5时 调用后台接口就会出现跨域问题 如下图 二 什么是跨域 当一个请求url的协议 域名 端口三者之间任意一个与当前
  • 阿里巴巴开发手册最新版、码出高效、性能调优实战、成神之路

    清幽现云山 虚静出内功 阿里巴巴Java开发手册 是阿里内部Java工程师所遵循的开发规范 xff0c 涵盖编程规约 单元测试规约 异常日志规约 MySQL规约 工程规约 安全规约等 xff0c 这是近万名阿里Java技术精英的经验总结 x
  • ARM架构服务器安装docker

    我的服务器信息为 Linux ecs 1bc7 0001 4 19 90 17 5 ky10 aarch64 1 SMP Fri Aug 7 13 35 33 CST 2020 aarch64 aarch64 aarch64 GNU Lin
  • ARM服务器安装docker-compose

    我的服务器信息为 Linux ecs 1bc7 0001 4 19 90 17 5 ky10 aarch64 1 SMP Fri Aug 7 13 35 33 CST 2020 aarch64 aarch64 aarch64 GNU Lin
  • git删除已push的commit记录

    Git删除已经push的commit记录或者合并commit记录 问题 xff1a 1 commit注释写错 2 发版时 xff0c 只允许有一条commit记录 xff0c 但代码还push到远程了 3 没拉最新代码 xff0c 提交后合
  • Docker 基于centos构建nginx镜像 构建MySQL镜像

    第一题 基于centos镜像构建nginx xff1a 编写Dockerfile制作镜像 xff0c 生成镜像名为my build Nginx1 首先创建目录dockerfile nginx1 xff0c 保存Dockerfile文件 具体