目录
- 实例一、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