利用Dockerfile构建一个基于CentOS 7镜像参考

利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像。

Dockerfile内容如下:

FROM centos
MAINTAINER Victor root@linuxidc.com
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的默认用户名和密码登陆被拒,必须用指定的用户名和密码。

要使用Dockerfile构建CentOS 7镜像,可以按照以下步骤进行操作: 1. 首先,确保已经在系统上安装了Docker环境。可以使用以下命令来检查和安装Docker服务: - 检查CentOS 7内核版本和存储驱动 - 卸载之前安装的Docker服务(如果有) - 安装Docker依赖包 - 安装最新版本的Docker核心服务 2. 创建一个名为Dockerfile文件,用于定义构建镜像的指令和配置。Dockerfile一个文本文件,可以使用编辑器创建。在Dockerfile中,可以使用一些常用的命令来定义构建过程,比如FROM、RUN、COPY等。具体的Dockerfile格式可以参考官方文档。 3. 在Dockerfile所在的目录下,执行以下命令来构建镜像: - 使用docker build命令,指定镜像名称和Dockerfile所在的目录路径。例如:`docker build -t mycentosimage .` 这将在当前目录下使用Dockerfile构建一个名为mycentosimage的镜像。 4. 构建完成后,可以使用docker images命令来查看已构建镜像列表。例如:`docker images` 通过以上步骤,你就可以使用Dockerfile构建CentOS 7镜像了。请注意,在构建过程中要确保Dockerfile的语法正确,并按照需求进行配置和安装所需的软件包。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CentoOS7系统下使用DockerFile构建镜像](https://blog.csdn.net/smxzsp/article/details/110537368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值