歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 利用Dockerfile構建一個基於CentOS 7鏡像

利用Dockerfile構建一個基於CentOS 7鏡像

日期:2017/2/28 13:57:34   编辑:Linux教程

利用Dockerfile構建一個基於CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的鏡像。

Dockerfile內容如下:

FROM centos
MAINTAINER Victor [email protected]
WORKDIR /root
RUN rm -f /etc/yum.repos.d/*
RUN echo '[BASE]' > /etc/yum.repos.d/base.repo
RUN echo 'name=base' >> /etc/yum.repos.d/base.repo
RUN echo 'baseurl=http://192.168.244.132/yum/mnt' >> /etc/yum.repos.d/base.repo
RUN echo 'enabled=1' >> /etc/yum.repos.d/base.repo
RUN echo 'gpgcheck=0' >> /etc/yum.repos.d/base.repo
ADD /mysql /mysql
RUN yum -y install java-1.8.0-openjdk wget httpd php php-mysqlnd /mysql/*
RUN mysql_install_db --user=mysql
ENV MYSQL_ROOT_PASSWORD=123456
ENV MYCAT_USER mycat
ENV MYCAT_PASS mycat
RUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gz
RUN tar xvf apache-tomcat-7.0.64.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-7.0.64/ /usr/local/tomcat
RUN wget http://code.taobao.org/svn/openclouddb/downloads/old/MyCat-Sever-1.2/Mycat-server-1.2-GA-linux.tar.gz
RUN mkdir /usr/local/mycat && tar xvf Mycat-server-1.2-GA-linux.tar.gz -C /usr/local/mycat && useradd mycat && \
chown -R mycat.mycat /usr/local/mycat && chmod a+x /usr/local/mycat/bin/*
EXPOSE 8080 8066 9066
COPY startup.sh /root/startup.sh
RUN chmod a+x /root/startup.sh
ENTRYPOINT /root/startup.sh

說明如下

1. 以下用於構建yum源,由於公司網絡有所限制,安裝依賴包的過程讓人淚奔…故果斷利用宿主機的中的系統光盤搭建http yum源。

RUN rm -f /etc/yum.repos.d/*
RUN echo '[BASE]' > /etc/yum.repos.d/base.repo
RUN echo 'name=base' >> /etc/yum.repos.d/base.repo
RUN echo 'baseurl=http://192.168.244.132/yum/mnt' >> /etc/yum.repos.d/base.repo
RUN echo 'enabled=1' >> /etc/yum.repos.d/base.repo
RUN echo 'gpgcheck=0' >> /etc/yum.repos.d/base.repo

2. 因為centos 7 的系統光盤中沒有自帶mysql-server,故需要自己下載,正好,mysql社區也提供了基於mysql-serve的yum源,只需在/etc/yum.repos.d/目錄下添加以下文件mysql-community.repo文件,內容如下:

[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/$basearch/
enabled=1
gpgcheck=0

即便是這種方式,下載過程同樣讓人極度崩潰,無奈,只好自己下載了相關的rpm包,放到本地mysql目錄下,通過ADD命令將該目錄下的文件COPY到鏡像中。注意:/mysql是相對於Dockerfile的相對路徑,因為我的Dockerfile的絕對路徑為/root/Dockerfile,所以,下面中/mysql中絕對路徑實際上也是/root/mysql/。

ADD /mysql /mysql

/root/mysql中的文件如下:

[root@localhost ~]# ls /root/mysql/
mysql-5.6.26-2.el5.x86_64.rpm mysql-community-libs-5.6.26-2.el5.x86_64.rpm
mysql-community-client-5.6.26-2.el5.x86_64.rpm mysql-community-libs-compat-5.6.26-2.el5.x86_64.rpm
mysql-community-common-5.6.26-2.el5.x86_64.rpm mysql-community-server-5.6.26-2.el5.x86_64.rpm

3. 最後一步實際上用腳本進行啟動

腳本內容如下:

[root@localhost ~]# cat /root/startup.sh
#!/bin/bash
sed -i 's/user name="test"/user name=\"'"$MYCAT_USER"'"/' /usr/local/mycat/conf/server.xml
sed -i 's/name="password">test/name="password">'"$MYCAT_PASS"'/' /usr/local/mycat/conf/server.xml
mysqld_safe & /usr/local/mycat/bin/mycat start & httpd & /usr/local/tomcat/bin/catalina.sh run

在該啟動腳本中,利用參數的方式設定mycat的用戶名和密碼,用戶名和密碼有Dockerfile中的以下變量指定:

ENV MYCAT_USER mycat
ENV MYCAT_PASS mycat

注意:在創建基於該鏡像的容器時,也可通過-e參數顯性指定以上兩個參數的值,如果沒有指定,則用戶名和密碼的默認值均為Dockerfile中指定的mycat。

驗證如下:

1. 基於Docker生成鏡像

# docker build -t victor/mycat:v1 .

建議:在利用Dockerfile構建鏡像時,可帶上--rm=false參數,即 docker build -rm=false -t victor/mycat:v1 .意思是不刪除build鏡像過程中產生的中間容器,這樣的話,即便這次構建失敗了,再次構建的時候會直接利用cache容器,會方便快捷很多。

2. 查看生成的鏡像

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
victor/mycat v1 5091cdf7b73a 2 hours ago 1.058 GB

3. 運行容器

# docker run -p 8080:8080 -p 9066:9066 -p 8066:8066 -p 81:80 victor/mycat:v1

首先驗證tomcat是否啟動

再次驗證apache是否正常啟動,為了避免和本地的http yum源沖突,我這邊用的是宿主機的81端口映射容器的80端口

驗證mycat是否能正常使用

不難看出,基於mycat的默認用戶名和密碼登陸被拒,必須用指定的用戶名和密碼。

Ubuntu 15.04下安裝Docker http://www.linuxidc.com/Linux/2015-07/120444.htm

配置 Docker 鏡像下載的本地 mirror 服務 http://www.linuxidc.com/Linux/2015-07/120061.htm

Docker安裝應用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm

在Ubuntu Trusty 14.04 (LTS) (64-bit)安裝Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

Docker安裝應用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04安裝Docker http://www.linuxidc.com/linux/2014-08/105656.htm

阿裡雲CentOS 6.5 模板上安裝 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Docker 的詳細介紹:請點這裡
Docker 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved