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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 三题Docker进阶的题目,能运用到之前学的docker基础命令,拉取docker镜像,使用Dockerfile文件构建镜像,Dockerfile常用指令,以后台运行的方式启动容器,以交互式的方式启动容器,docker build构建镜像,docker build -P分配端口,-d -it 等docker build参数,运用之前所学的基础命令做个总结。


第一题. 基于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内容如下所示:
image.png

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

构建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 .
image.png

使用构建的镜像生成容器: 
使用该镜像创建容器my_nginx,以后台运行的方式启动,并随机分配端口:
docker run -d -P --name my_nginx my_build:nginx
查看启动的容器,并查看容器端口:
docker ps
image.png

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

image.png

第二题:基于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文件内容如下所示:
image.png

开始操作:
创建并进入文件夹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 .
image.png

 使用此镜像构建容器,以后台运行的方式启动,并随机分配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 .
 image.png

进入Docker容器的两个方式:
方式一:
使用该镜像创建容器,并以交互式的方式启动,并随机分配端口:
docker run -it -P my_build:mysql /bin/bash
 方式二:

创建容器并以后台的方式运行:
docker run -d my_build:mysql
 以交互式的方式进入容器:
docker exec -it 07e4b4e9d9f5 /bin/bash
image.png

进入mysql:
mysql -u root -p123456
查看数据库:
show databases;
image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
80 24
|
1月前
|
关系型数据库 MySQL PHP
PHP与MySQL的无缝集成:构建动态网站的艺术####
本文将深入探讨PHP与MySQL如何携手合作,为开发者提供一套强大的工具集,以构建高效、动态且用户友好的网站。不同于传统的摘要概述,本文将以一个生动的案例引入,逐步揭示两者结合的魅力所在,最终展示如何通过简单几步实现数据驱动的Web应用开发。 ####
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
662 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
234 1
|
1月前
|
关系型数据库 MySQL PHP
PHP与MySQL的深度整合:构建高效动态网站####
在当今这个数据驱动的时代,掌握如何高效地从数据库中检索和操作数据是至关重要的。本文将深入探讨PHP与MySQL的深度整合方法,揭示它们如何协同工作以优化数据处理流程,提升网站性能和用户体验。我们将通过实例分析、技巧分享和最佳实践指导,帮助你构建出既高效又可靠的动态网站。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和实用的技能。 ####
22 0
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
39 4
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
57 3
|
7天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
27 3
|
7天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
31 3

推荐镜像

更多