这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像
时间:2022-07-25
本文章向大家介绍这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
文章目录
构建nginxDockerfile镜像
这里的nginx软件包使用nginx-1.12.2.tar.gz需要的私聊
[root@docker ~]# mkdir /nginx
[root@docker ~]# cd /nginx/
[root@docker nginx]# vim Dockerfile
FROM centos:7
RUN yum update -y
RUN yum -y install gcc gcc-c++ make pcre-devel expat-devel perl zlib-devel pcre
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local
WORKDIR /usr/local/nginx-1.12.2
RUN (./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module) && make && make install
ENV PATH /usr/local/nginx/sbin/:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf '关闭nginx自带的守护进程'
CMD ["/usr/local/nginx/sbin/nginx"]
这里指定的是在centos7下安装 要指定版本
[root@docker nginx]# rz -E '//上传nginx源码包'
rz waiting to receive.
[root@docker nginx]# ls
Dockerfile nginx-1.12.2.tar.gz
[root@docker nginx]# docker build -t nginx:test .
[root@docker nginx]# docker run -d -P nginx:test1
885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70
[root@docker nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e34b0521147c nginx:test1 "/usr/local/nginx/sb…" 2 minutes ago Up 2 minutes 0.0.0.0:32784->22/tcp, 0.0.0.0:32783->80/tcp, 0.0.0.0:32782->443/tcp zen_hellman
创建容器,指定端口
[root@docker nginx]# docker run -d -P nginx:test1
885cf9811be57e12690ce352fbd7c5011cefffece8b59a0d7317e12eb8955a70
[root@docker nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e34b0521147c nginx:test1 "/usr/local/nginx/sb…" 2 minutes ago Up 2 minutes 0.0.0.0:32784->22/tcp, 0.0.0.0:32783->80/tcp, 0.0.0.0:32782->443/tcp zen_hellman
[root@docker nginx]# ip addr '//自己IP地址为 192.168.233.133'
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:68:b8:a6 brd ff:ff:ff:ff:ff:ff
inet 192.168.233.133/24 brd 192.168.233.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::35a9:b12:5e2b:c44d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
...省略内容
构建DockerfileTomcat
[root@docker nginx]# mkdir /tomcat
[root@docker nginx]# cd /tomcat/
[root@docker tomcat]# vim Dockerfile
FROM centos
MAINTAINER this is tomcat
ADD jdk-8u201-linux-x64.rpm /usr/local/
WORKDIR /usr/local/
RUN rpm -ivh jdk-8u201-linux-x64.rpm
ENV JAVA_HOME /usr/java/jdk1.8.0_201-amd64
ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-9.0.16.tar.gz /usr/local
WORKDIR /usr/local
RUN mv apache-tomcat-9.0.16/ /usr/local/tomcat9
ENV PATH /usr/local/tomcat9/bin/:$PATH
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat9/bin/catalina.sh","run"]
[root@docker tomcat]# docker build -t tomcat:test . '创建镜像'
[root@docker tomcat]# docker run -d -P tomcat:test '启动镜像'
[root@docker tomcat]# docker ps -a |grep tomcat
f4afd19d14d3 tomcat:test1 "/usr/local/src/tomc…" 25 seconds ago Up 23 seconds 0.0.0.0:32788->22/tcp, 0.0.0.0:32787->8080/tcp lucid_tesla
1、ENRYPOINT指开启容器前镜像就已经执行了括号内的命令
2、CMD是开启容器时,要执行的指令,设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换
3、基于Dockerfile内有CMD或者ENTRYPOINT创建镜像时,docker run 后面就不要加指令(/bin/bash)了,会覆盖掉Dockerfile中的指令或者语法报错
构建Dockerfile MySQL镜像
vim Dockerfile
#编写dockerfile文件
FROM centos:7
#指定基础镜像
RUN yum -y update
#更新yum源
RUN yum -y install
ncurses
ncurses-devel
bison
cmake
make
gcc
gcc-c++
#安装mysql依懒环境包
RUN useradd -s /sbin/nologin mysql
#创建运行用户
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
#将压缩包添加到/usr/local/src目录下面
WORKDIR /usr/local/src/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_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
#cmake和编译
RUN chown -R mysql:mysql /usr/local/mysql/
#给予/usr/local/mysql的属主和属组
RUN rm -rf /etc/my.cnf
#删除原来的/etc/my.cnf文件
ADD my.cnf /etc
#将宿主机的my.cnf文件添加到/etc/目录下面
RUN chown mysql:mysql /etc/my.cnf
#设置权限
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#设置mysql的环境
WORKDIR /usr/local/mysql/
#指定当前工作路径
RUN bin/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/
#将mysql的启动脚本复制到/usr/lib/systemd/system/目录下面,便于systemctl的管理
EXPOSE 3306
#开放容器的端口
RUN echo -e "#!/bin/bash nsystemctl enable mysqld" > /run.sh
#写mysql的启动脚本
RUN chmod 755 /run.sh
#给予权限
RUN sh /run.sh
#执行脚本
CMD ["init"]
#容器启动时执行
vim my.cnf
[root@localhost mysql-5.7.20]#vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
构建mysql:new的镜像
docker build -t centos:mysql .
1
启动容器
docker run --name=mysql_server -d -P --privileged centos:mysql
1
提权
docker exec -it 镜像ID /bin/bash
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
- HDUOJ----1166敌兵布阵(线段树单点更新)
- poj----2155 Matrix(二维树状数组第二类)
- poj------2352 Stars(树状数组)
- HDUOJ-----2852 KiKi's K-Number(树状数组+二分)
- nyoj----522 Interval (简单树状数组)
- HDUOJ-----2838Cow Sorting(组合树状数组)
- HDUOJ---2642Stars(二维树状数组)
- HDUOJ -----Color the ball
- poj-----Ultra-QuickSort(离散化+树状数组)
- HDUOJ---1241Oil Deposits(dfs)
- HDUOJ------2398Savings Account
- HDUOJ-----2399GPA
- HDUOJ----旋转的二进制
- HDUOJ---3743Frosh Week(BIT+离散化)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ZooKeeper 的应用场景
- 在 K8S 部署一个 Spark History Server - 篇3
- Go 学习笔记-1
- Tensorflow-gpu 运行在 cpu 母机的问题
- R语言入门之散点图
- Python函数(一)
- Spark on Kubernetes 动态资源分配
- R语言入门之偏度(skewness)与峰度(kurtosis)
- Spark Operator 是如何提交 Spark 作业
- R语言进阶之聚类分析
- 来 左边 跟我一起画彩虹
- Kubernetes v1.13 对 GPU 的支持
- Spark 3.0 对 GPU 做了什么支持
- Go语言整数值转字符串的效率问题
- R语言进阶之判别分析