構建Nginx+Tomcat+MYSQLDocker容器實戰

Docker在運行一個容器以前,須要以鏡像做爲基礎環境,能夠說鏡像是整個Docker容器建立的關鍵,而建立鏡像的3中方法中基於Dockerfile文件建立最爲靈活。java

Dockerfile能夠看做一個被Docker程序鎖解釋翻譯的腳本,是一組命令集合而成的,每條命令都對應一條操做指令,由Docker翻譯成Linux下的具體命令。用戶能夠經過自定義其內容來快速建立鏡像。mysql

博文大綱:
1、搭建Nginx容器
2、搭建Tomcat容器
3、搭建MySQL容器nginx

1、構建Nginx容器

Nginx是一款輕量級的WEB服務器,也是一款優秀的反向代理服務器。Nginx服務佔用內存少,併發能力強,深受國內外用戶的歡迎。sql

1.下載基礎鏡像

[root@localhost ~]# docker pull docker.io/lvzhenjiang/centos7
//下載一個建立Nginx鏡像的基礎centos鏡像

2.創建工做目錄

[root@localhost ~]# mkdir nginx
[root@localhost ~]# cd nginx/

3.建立並編寫Dockerfile文件

[root@localhost nginx]# vim Dockerfile
FROM lvzhenjiang/centos7              //設置基礎鏡像
MAINTAINER lzj                              //維護者信息
RUN yum -y install wget prce-devel net-tools gcc zlib zlib-devel make openssl-devel                 
//安裝所需依賴包
RUN wget http://nginx.org/download/nginx-1.14.2.tar.gz
//獲取nginx源碼包
RUN tar zxf nginx-1.14.2.tar.gz
WORKDIR nginx-1.14.2
//解壓以後進入解壓後的目錄
RUN ./configure --prefix=/usr/local/nginx && make && make install
//編譯安裝
EXPOSE 80                     //開啓80端口
EXPOSE 443                   //開啓443端口
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
//修改nginx服務配置文件,以非daemon(守護進程)方式啓動
ADD run.sh /run.sh            //上傳本地編寫的腳本到容器中
RUN chmod 775 /run.sh     //賦予腳本執行權限
CMD ["/run.sh"]                 //啓動容器時,執行run.sh腳本

4.編寫執行腳本內容

[root@localhost nginx]# vim run.sh
#!/bin/bash                                          //聲明使用的shell
/usr/local/nginx/sbin/nginx                  //使用nginx自帶的腳本啓動nginx

5.生成鏡像

[root@localhost nginx]# ls                       
//確保Dockerfile文件和啓動腳本在同一目錄下
Dockerfile  run.sh
[root@localhost nginx]# docker build -t nginx:v1 .
//使用當前目錄下的Dockerfile文件生成新的鏡像,名爲nginx:v1

6.啓動容器進行測試

[root@localhost nginx]# docker run -dit -p 12345:80 --name nginx nginx:v1
//使用新生成的鏡像建立一個名爲nginx的容器,並將容器中的80端口映射到宿主機的12345端口
[root@localhost nginx]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
1c73bb591e84        nginx:v1            "/run.sh"           31 minutes ago      Up 31 minutes       443/tcp, 0.0.0.0:12345->80/tcp   nginx
//確認容器已經正常運行並已經映射端口

測試結果:
構建Nginx+Tomcat+MYSQLDocker容器實戰docker

nginx容器搭建完成!shell

2、構建Tomcat容器

Tomcat是一個免費開源的輕量級Web服務器,在中小型企業和併發量不高的場合廣泛使用,是開發和調試JSP程序的首選。數據庫

1.下載基礎鏡像

[root@localhost ~]# docker pull docker.io/lvzhenjiang/centos7
//下載一個建立Nginx鏡像的基礎centos鏡像

2.建立工做目錄

由於tomcat須要java的環境,因此要下載JDK軟件包apache

[root@localhost ~]# mkdir tomcat
[root@localhost ~]# cd tomcat/

3.編寫Dockerfile文件

[root@localhost tomcat]# vim Dockerfile 
FROM lvzhenjiang/centos7              //基礎鏡像
MAINTAINER lzj                               //維護者信息
ADD jdk1.8.0_91 /usr/local/jdk-8u91
ENV JAVA_HOME /usr/local/jdk-8u91
ENV JAVA_BIN /usr/local/jdk-8u91/bin
ENV JRE_HOME /usr/local/jdk-8u91/jre
ENV PATH $PATH:/usr/local/jdk-8u91/bin:/usr/local/jdk-8u91/jre/bin
ENV CLASSPATH /usr/local/jdk-8u91/jre/bin:/usr/local/jdk-8u91/lib:/usr/local/jdk-8u91/jre/lib/charsets.jar
//設置JDK環境變量
RUN yum -y install wget
RUN wget http://us.mirrors.quenda.co/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
//獲取tomcat軟件包
RUN tar zxf apache-tomcat-9.0.27.tar.gz
RUN mv apache-tomcat-9.0.27 /usr/local/tomcat
//解壓以後,並將解壓後的目錄移動到指定的位置
EXPOSE 8080
//開啓8080端口
ADD run.sh /run.sh
RUN chmod 775 /run.sh
CMD ["/run.sh"]                       //啓動容器時,執行腳本

4.編寫啓動腳本

[root@localhost tomcat]# vim run.sh 
#!/bin/bash
/usr/local/tomcat/bin/startup.sh            //使用tomcat服務自帶的腳本啓動服務
tailf /run                  //讓啓動腳本始終運行

5.使用Dockerfile文件生成鏡像

[root@localhost tomcat]# ls
Dockerfile  jdk1.8.0_91  run.sh
//確保Dockerfile文件中所需的東西全在這個目錄下
[root@localhost tomcat]# docker build -t tomcat:v1 .
//使用當前目錄的Dockerfile文件生成名爲tomcat:v1的鏡像

6.運行容器並驗證

[root@localhost tomcat]# docker run -dit -p 12344:8080 --name tomcat tomcat:v1
//使用新生成的進行建立一個名爲tomcat的容器,並將容器中的8080端口映射到宿主機的12344端口
[root@localhost tomcat]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
1ffc46084d84        tomcat:v1           "/run.sh"           10 minutes ago      Up 10 minutes       0.0.0.0:12344->8080/tcp          tomcat
//確保容器已經啓動,並已經映射端口

訪問測試:
構建Nginx+Tomcat+MYSQLDocker容器實戰vim

tomcat容器搭建完成!centos

3、構建MySQL容器

MySQL是當下最流行的關係型數據庫,所使用的SQL語言是用於訪問數據庫的最經常使用標準化語言,MySQL具備體積小、速度快、成本低的優點,成爲中小型企業首選的數據庫。

1.下載基礎鏡像

[root@localhost ~]# docker pull docker.io/lvzhenjiang/centos6
//下載centos6的基礎鏡像做爲構建MySQL的基礎鏡像

2.建立工做目錄

[root@localhost ~]# mkdir mysql
[root@localhost ~]# cd mysql/

3.建立Dockerfile文件

[root@localhost mysql]# vim Dockerfile
FROM lvzhenjiang/centos6           //基礎鏡像
MAINTAINER lzj                      //維護者信息
RUN yum -y install mysql mysql-server                  //安裝mysql
RUN /etc/init.d/mysqld start && \
mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"&&\
mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"
//啓動MySQL服務,並受權用戶
EXPOSE 3306                        //開啓3306端口
CMD ["mysqld_safe"]              //使用MySQL自帶的啓動腳本啓動服務

4.生成鏡像

[root@localhost mysql]# ls
Dockerfile
[root@localhost mysql]# docker build -t mysql:v1 .
//使用當前目錄下的Dockerfile文件生成名爲mysql:v1的鏡像

5.建立容器並測試

[root@localhost mysql]# docker run -dit -p 12343:3306 --name=mysql mysql:v1
//使用mysql:v1的鏡像生成一個名爲mysql的容器,並映射容器中的3306端口都宿主機的12343端口
[root@localhost mysql]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                            NAMES
c356d5b35167        mysql:v1            "mysqld_safe"       4 seconds ago       Up 3 seconds        0.0.0.0:12343->3306/tcp   
//確認容器已經正常運行,並已經啓動端口映射

宿主機進行測試:

[root@localhost ~]# yum -y install mysql                    //首先安裝mysql命令
[root@localhost ~]# mysql -u root -h 127.0.0.1 -P 12343 -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 
//訪問成功

MySQL容器搭建完成!

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索