Docker镜像构建Tomcat、Mysql、Nginx容器

前言

创建Docket容器,实现在容器中运行tomcat、mysql、nginx等功能

Docker入门

安装
Ubuntu

1
sudo apt-get install docker

Centos

1
sudo yum install docker

docker启停命令

1
2
3
4
5
6
7
8
9
10
// 启动        
systemctl start docker
// 守护进程重启   
sudo systemctl daemon-reload
// 重启docker服务   
systemctl restart  docker
sudo service docker restart
// 关闭docker
service docker stop
systemctl stop docker

基本命令

构建Tomcat镜像

1.准备好Tomcat和JDK

1
2
3
4
5
6
7
8
mkdir /opt/tomcat/
cd /opt/tomcat/
// 将准备的tomcat和jdk移动到此目录
cp jdk-8u191-linux-x64.tar.gz /opt/tomcat/
cp apache-tomcat-8.5.32.tar.gz /opt/tomcat/
// 解压
tar zxvf jdk-8u191-linux-x64.tar.gz
tar zxvf apache-tomcat-8.5.32.tar.gz

2.创建Dockerfile文件

创建文件:vim Dockerfile
内容

1
2
3
4
5
6
7
8
9
10
FROM centos
MAINTAINER this is tomcat image <xxy>
ADD jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
ADD apache-tomcat-8.5.16 /usr/local/tomcat8
EXPOSE 8080

3.生成镜像

1
docker build -t tomcat:centos .

4.运行容器

运行容器,将本地80端口映射到容器的8080端口

1
docker run --name tomcat01 -p 80:8080 -it  tomcat:centos /bin/bash

启动tomcat

1
2
cd /usr/local/tomcat8/bin
./startup.sh

构建MySQL镜像

1.下载镜像,建议使用centos6镜像

1
docker pull guyton/centos6

2.创建工作目录

1
2
mkdir /opt/mysql
cd /opt/mysql

3.创建Dockerfile文件

创建文件:vim Dockerfile
内容

1
2
3
4
5
6
7
8
FROM guyton/centos6
MAINTAINER this is msyql images <mayy@magicsky.com>
RUN yum -y install mysql mysql-server
RUN /etc/init.d/mysqld start &&\
mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'abc123';" &&\
mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'abc123';flush privileges;"
EXPOSE 3306
CMD ["mysqld_safe"]

4.生成镜像

1
docker build -t centos6:mysql .

5.运行容器并验证

运行容器,随机指定本机端口映射容器mysql的端口

1
docker run --name=mysqlserver -d -P centos6:mysql

查看容器

1
docker ps -a

在装有mysql服务的主机上,或者在本机安装mysql服务,登录容器的mysql数据库进行验证

1
mysql -h 192.168.10.157 -u root -P 32770 -pabc123

构建Nginx镜像

1.准备Nginx

1
2
3
mkdir /opt/nginx/
cd /opt/nginx/
mv nginx-1.14.0.tar.gz /opt/nginx/

2.下载基础镜像——centos镜像

1
docker pull centos

3.创建Dockerfile文件

创建文件:vim Dockerfile
内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM centos:latest
#基于centos镜像
LABEL maintainer="Ace zzflace@163.com"
#标注作者联系方式等信息
WORKDIR /usr/local/src/
#当前工作目录
ADD nginx-1.14.0.tar.gz ./
#本地文件在当前目录,ADD则直接解压到当前工作目录
WORKDIR nginx-1.14.0/
#工作目录进入到解压后目录
RUN yum install -y gcc gcc-c++ && \
#运行shell命令
yum install -y pcre pcre-devel && \
yum install -y zlib zlib-devel && \
yum install -y openssl openssl-devel libssl-dev && \
./configure --prefix=/usr/local/nginx && \
make && make install
EXPOSE 80
#暴露端口为80

4.生成镜像

1
docker build -t nginx:new .

5.运行容器并验证

启动

1
docker run -d -P nginx:new

查看当前存在的容器

1
docker container  ps

可以看到刚创建的容器,现在进入到容器中

1
docker exec -it a528460856c4 /bin/bash

容器内启动nginx并确认

1
2
/usr/local/nginx/sbin/nginx
ps -ef | grep nginx

先在容器内测试,我们可以看到nginx欢迎界面的源码

1
# curl http://localhost:80
0%