Docker容器 — MySQL和Tomcat 镜像创建实例

news/2024/8/30 22:23:23 标签: centos, docker

目录

    • 实例一、Tomcat 镜像创建
        • (1)创建tomcat文件夹
        • (2)编写Dockerfile文件
        • (3)创建镜像
        • (4)开启容器
        • (5)验证
    • 实例二、MySQL 镜像创建
        • (3)创建镜像
        • (4)开启容器
        • (5)验证

实例一、Tomcat 镜像创建

提前准备好Tomcat、JDK软件包

(1)创建tomcat文件夹

mkdir tomcat
cd /tomcat

(2)编写Dockerfile文件

vim Dockerfile
FROM centos:7
#在centos:7的镜像基础下创建
MAINTAINER xpp
#作者信息
ADD jdk-8u91-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.16.tar.gz /usr/local
#软件包解压切移动
WORKDIR /usr/local
#进入/usr/local目录
RUN mv apache-tomcat-9.0.16 tomcat
RUN mv jdk1.8.0_91 java
#给解压后的文件重命名
ENV JAVA_HOME /usr/local/java
ENV CLASS_PATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH
#添加修改JAVA的变量
EXPOSE 8080
#暴露端口
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
#执行CMD后面命令,开启Tomcat服务

(3)创建镜像

'创建镜像'
docker build -t centos7:tomcat .

(4)开启容器

'开启容器 -p:指定端口'
docker run -d -p 8080:8080 centos7:tomcat 

'查看容器是否启动'
docker ps -a

(5)验证

如果确保服务开启成功,在网页上输入宿主IP:8080可以查看到服务

实例二、MySQL 镜像创建

FROM centos:7
#在centos7镜像基础下创建
MAINTAINER xpp
#作者信息
ADD mysql-boost-5.7.20.tar.gz /usr/local
#解压并移动软件包
RUN useradd -M -s /sbin/nologin  mysql
#创建mysql用户
RUN yum -y install \
ncurses \
ncurses-devel \
bison \
make \
cmake \
gcc \
gcc-c++
#安装mysql依赖环境
WORKDIR /usr/local/mysql-5.7.20/
#进入/usr/local/mysql-5.7.20/目录
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make && make install
#编译安装mysql
WORKDIR /root/mysql
#进入/root/mysql/目录
ADD my.cnf /etc
#把文件my.cnf添加到容器内/etc目录下
RUN chmod -R mysql:mysql /usr/local/mysql/
RUN chown mysql:mysql /etc/my.cnf
#创建属组及宿主
ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
#添加环境变量
WORKDIR /usr/local/bin/
#进入/usr/local/bin/目录
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#初始化数据库
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#执行复制文件命令
EXPOSE 3306
#暴露端口
RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" >/run.sh
#创建脚本文件,用于配置开机自启动mysqld服务
RUN chmod 755 /run.sh
#给脚本文件赋予权限
RUN sh /run.sh
#运行脚本文件
CMD ["init"]
#重启                             

(3)创建镜像

'创建镜像'
docker build -t centos7:mysql .

(4)开启容器

'宿主机后台不降权运行,暴露随机端口'
docker run --privileged -d -P centos7:mysql
#如果不这么开启,root用户进去会降权

'查看容器是否启动,确认端口号'
docker ps -a

(5)验证

'进入mysql容器'
docker exec -it 端口号 bash

'登入数据库'
mysql -uroot -p

'授权可允许root用户在所有终端上对所有库的所有表拥有所有权限'
grant all privileges on *.* to 'root'@'%' identified by '123123';

'授权可允许root用户在本地上对所有库的所有表拥有所有权限'
grant all privileges on *.* to 'root'@'localhost' identified by '123123';

另起终端
'安装mariadb'
yum -y install mariadb

'远程连接mysql容器'
mysql -h 宿主机IP地址 -P 容器端口号 -p123123

http://www.niftyadmin.cn/n/1074610.html

相关文章

Docker容器 — Harbor私有仓库搭建实战

目录一、实验环境二、私有仓库搭建(192.168.90.20)(1)docker安装(2)docker-compose安装(3)Harbor安装(4)验证(5)其他客户端上传镜像到 Harbor(6&a…

java数据类型之间的转换

java的基本数据类型:short, int, long, float, double, char,string 对应的包装类型:Short, Integer, Long, Float, Double, Character, String 基本数据类型和String之间的转换:toString() 1. int to string: String s Integer.toString(in…

Zabbix监控部署实战(基于LNMP架构)

LNMPzabbix实战部署一、服务端配置(提供监控服务)二、代理端配置(被监控服务)一、服务端配置(提供监控服务) 下载包 wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.…

webpack学习(六)打包压缩js和css

打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件, 其命令webpack -p即表示调用UglifyJS来压缩代码,还有不少webpack插件如html-webpack-plugi…

Ansible自动化运维工具(一、基础掌握)

目录一、Ansible概述(1)Ansible模块二、Ansible操作详解(1)安装及查询版本(2)配置文件(3)主配置文件详解(4)主机清单格式(5)可执行文件…

mysql中INSTR函数的用法

测试数据库: MYSQL数据库 INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX); STR 被搜索的字符串 SUBSTR 希望搜索的字符串 结论:在字符串STR里面,字符串SUBSTR出现的第一个位置(INDEX),INDEX是…

Ansible自动化运维工具(二、进阶讲解)

一、Playbook剧本 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 Playbook本身由以下各部分组成: Tasks: 任务,即调用模块完成的某操作Variables: 变量Templates: 模板Handlers: 处理器,当某条件满足时&#xff0c…

安全防护知识学习

长亭博客 长亭知乎 HACK80黑客技术论坛 天启科技黑客技术 转载于:https://www.cnblogs.com/sunbeidan/p/8615572.html