博文大綱:java
- 1、構建Nginx容器
- 2、構建Tomcat容器
- 3、構建MySQL容器
注意:必定要配置宿主機能夠鏈接Internet,由於在構建容器的過程當中,不少資源須要去互聯網找。mysql
Nginx是一款輕量級的web服務器,也是一個優秀的反向代理服務器。Nginx服務佔用內存少,併發能力強,下面是構建Nginx容器的具體操做:linux
[root@localhost ~]# docker pull centos #下載centos 7的基礎鏡像,該鏡像也將會被後面構建的Tomcat和MySQL容器所使用。 [root@localhost ~]# mkdir nginx #建立工做目錄 [root@localhost ~]# cd nginx/ [root@localhost nginx]# vim Dockerfile #編寫dockerfile文件,用來實現Nginx安裝過程 #寫入如下內容 FROM centos #設置基礎鏡像 MAINTAINER the centos project #維護該鏡像的用戶信息 RUN yum -y install wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel #安裝相關依賴包 RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz #下載Nginx源碼包 RUN tar zxf nginx-1.9.7.tar.gz #解壓下載的源碼包 WORKDIR nginx-1.9.7 #指定容器中的工做路徑 RUN ./configure --prefix=/usr/local/nginx && make && make install #配置及編譯安裝 #開啓容器的80/443端口 EXPOSE 80 EXPOSE 443 RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf #修改配置文件,以非daemon方式啓動 ADD run.sh /run.sh #上傳運行腳本 RUN chmod 775 /run.sh #賦予腳本權限 CMD ["/run.sh"] #啓動容器時執行腳本,編輯完成後,保存退出便可 [root@localhost nginx]# vim run.sh #編輯運行腳本,寫入如下內容 #!/bin/bash /usr/local/nginx/sbin/nginx [root@localhost nginx]# ls #肯定當前目錄下有如下文件 Dockerfile run.sh [root@localhost nginx]# docker build -t nginx:ljz . #生成鏡像,千萬不要忽略命令末尾的點「.」號,不然會報錯 .............................#省略部份內容 Successfully built cd6ac93f3680 #出現這行提示信息,則表示建立成功 [root@localhost nginx]# docker run -d -P nginx:ljz #啓動該容器,「-d」表示持久化運行,「-P」表示將容器的端口映射到宿主機 895c19da98f3256acb20939dcc7abb4d26273287ddfc0810efc0940a55d04c10 [root@localhost nginx]# docker ps -a #查看容器,其中3276九、32768就是容器映射到宿主機的端口 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 895c19da98f3 nginx:ljz "/run.sh" 6 seconds ago Up 5 seconds 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp nervous_brahmagupta
訪問容器進行測試,Nginx是否運行成功!以下(訪問宿主機的32769端口,就至關於訪問了容器的80端口):nginx
Tomcat是一個免費開源的輕量級web服務器,在中小型企業和併發量不高的場合廣泛使用,是開發和調試JSP程序的首選。下面使用Dockerfile文件的方式來建立帶有Tomcat服務的docker鏡像。web
準備工做:點擊下載JDK源碼包,並放置Linux宿主機的Tomcat工做目錄。sql
[root@localhost ~]# mkdir tomcat #建立Tomcat的工做目錄 [root@localhost ~]# cd tomcat/ #切換至Tomcat目錄 [root@localhost tomcat]# rz #我這裏將本地的JDK源碼包上傳了上來(我這裏使用的是xshell鏈接的) [root@localhost tomcat]# ls #查看 jdk-8u91-linux-x64.tar.gz [root@localhost tomcat]# tar zxf jdk-8u91-linux-x64.tar.gz #解包 [root@localhost tomcat]# vim Dockerfile #編寫dockerfile文件 FROM centos #基礎鏡像centos MAINTAINER The centos project ljz916551516@163.com #維護該鏡像的用戶信息 ADD jdk1.8.0_91 /usr/local/jdk-8u91 #將本地的JDK文件上傳至容器 #如下是設置JDK環境變量 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 RUN yum -y install wget #安裝wget工具 RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz #下載Tomcat源碼包 RUN tar zxf apache-tomcat-8.5.38.tar.gz #解壓Tomcat源碼包 RUN mv apache-tomcat-8.5.38 /usr/local/tomcat #移至安裝目錄 EXPOSE 8080 #開啓8080端口 ADD run.sh /run.sh #添加運行腳本 RUN chmod 775 /run.sh #賦予腳本執行權限 CMD ["/run.sh"] #運行腳本,編寫完畢後,保存退出便可。 [root@localhost tomcat]# vim run.sh #編寫執行腳本內容 #!/bin/bash /usr/local/tomcat/bin/startup.sh tailf /run [root@localhost tomcat]# ls #確保當前目錄下有如下文件 Dockerfile jdk1.8.0_91 jdk-8u91-linux-x64.tar.gz run.sh [root@localhost tomcat]# docker build -t tomcat:ljz . #生成鏡像,千萬不要忽略命令末尾的點「.」號,不然會報錯 .............................#省略部份內容 Successfully built 94c59c9239ec #出現這行提示信息,則表示建立成功 [root@localhost tomcat]# docker run -d --name tomcat -p 8080:8080 tomcat:ljz #運行剛剛建立的Tomcat容器,並指定容器的名字爲Tomcat,映射到宿主機的8080端口。 5d8a5714166ef63208511bb1123c5568d0562b1b3734db4eec2aed733d8a733d [root@localhost tomcat]# docker ps -a | grep tomcat #查看Tomcat容器的狀態是否正常 5d8a5714166e tomcat:ljz "/run.sh" 20 seconds ago Up 19 seconds 0.0.0.0:8080->8080/tcp tomcat
客戶端訪問Linux宿主機的8080端口,測試是否可以訪問到Tomcat容器提供的web服務,以下:docker
看到以上頁面,則表示Tomcat容器構建成功。shell
這裏簡單說一下Tomcat和apache的區別:它們都是Aache開源組織開發的用於處理HTTP服務的項目。二者都免費,也均可以做爲獨立的web服務器運行。Apache是C語言實現的,主要解析靜態文本,併發性高,側重於HTTP服務,Tomcat是java開發的一個符合JavaEES的JSP服務器,屬於Apache的擴展,主要用於解析JSP/Servlet,側重於Servlet引擎。數據庫
MySQL是當下最流行的關係型數據庫,所使用的SQL語言是用於訪問數據庫的最經常使用標準化語言,MySQL具備體積小、速度快、成本低的優點,是中小型企業首選的數據庫。apache
開始構建MySQL容器:
[root@localhost ~]# docker pull docker.io/guyton/centos6 #下載centos 6做爲基礎鏡像 [root@localhost ~]# mkdir mysql #建立工做目錄 [root@localhost ~]# cd mysql/ #切入工做目錄 [root@localhost mysql]# vim Dockerfile #編輯dockerfile文件 FROM guyton/centos6 MAINTAINER the centos project-mysql RUN yum -y install mysql mysql-server 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';" EXPOSE 3306 CMD ["mysqld_safe"] [root@localhost mysql]# docker build -t mysql:ljz . #生成鏡像,千萬不要忽略命令末尾的點「.」號,不然會報錯 .............................#省略部份內容 Successfully built 30414dc7bc02 #出現這行提示信息,則表示建立成功 [root@localhost ~]# docker run -d --name mysql -P mysql:ljz #運行容器,並定義容器名稱爲mysql ea1a8aa2d1f18e0d06c4bdf47a6b743f3763247f13c6335b3fc7b785baf7332f [root@localhost ~]# docker ps -a | grep mysql #確認容器處於運行狀態 ea1a8aa2d1f1 mysql:ljz "mysqld_safe" 41 seconds ago Up 40 seconds 0.0.0.0:32770->3306/tcp mysql [root@localhost ~]# mysql -h 192.168.1.1 -u root -P 32770 -p123456 #對容器中的數據庫進行訪問測試,若沒法使用mysql命令,請自行執行「yum -y install mysql」進行安裝 Welcome to the MariaDB monitor. Commands end with ; or \g. .............................#省略部份內容 MySQL [(none)]> #命令提示符發生變化,登陸到了容器中的數據庫 MySQL [(none)]> show databases; #查看數據庫的數據 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) MySQL [(none)]> exit #退出 Bye
———————— 本文至此結束,感謝閱讀 ————————