dockerfile容器的实战安装nginx和mysql服务

第三章
实验:docker容器的实战
一. 基础环境
安装docker服务
1)配置网络yum源
[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# rm -rf *
[[email protected] yum.repos.d]# ls
[[email protected] yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
[[email protected] yum.repos.d]# ls
CentOS7-Base-163.repo
dockerfile容器的实战安装nginx和mysql服务
2)安装docker服务
[[email protected] ~]# yum -y install docker
dockerfile容器的实战安装nginx和mysql服务
3)启动docker服务设置开机自动启动
[[email protected] ~]# systemctl start docker
[[email protected] ~]# systemctl enable docker
dockerfile容器的实战安装nginx和mysql服务
4)检查版本
[[email protected] ~]# docker version
dockerfile容器的实战安装nginx和mysql服务
5)rz导入镜像
[[email protected] ~]# rz
dockerfile容器的实战安装nginx和mysql服务
6)导入镜像两种方式
[[email protected] ~]# docker load --input ./centos6.7.tar
[[email protected] ~]# docker load < centos6.7.tar
dockerfile容器的实战安装nginx和mysql服务
二. dockerfile安装nginx

  1. 创建存储dockerfile目录
    [[email protected] ~]# mkdir nginx
    dockerfile容器的实战安装nginx和mysql服务
  2. 移动源代码存储到dockerfile目录
    [[email protected] ~]# cp /mnt/nginx-1.6.0.tar.gz ./nginx/
    dockerfile容器的实战安装nginx和mysql服务
  3. 创建dockerfile
    [[email protected] nginx]# touch dockerfile
    dockerfile容器的实战安装nginx和mysql服务
  4. 编辑dockerfile文件安装nginx
    [[email protected] ~]# vim ./nginx/dockerfile

FROM hub.c.163.com/public/centos:6.7-tools //基础镜像
MAINTAINER [email protected] //作者信息

RUN rm -rf /etc/yum.repos.d/Centos-* //删除系统yum源
RUN wget -o wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo//更新阿里云源
RUN yum -y install epel-release pcre-devel zlib-devel gcc //安装nginx依赖程序

ADD nginx-1.6.0.tar.gz /usr/src/ //添加解压程序到/usr/src/目录
RUN useradd -M -s /sbin/nologin nginx //创建用户

WORKDIR /usr/src/nginx-1.6.0/ //进入目录

RUN ./configure --user=nginx --prefix=/usr/local/nginx --with-http_stub_status_module && make && make install //配置安装nginx
RUN echo “daemon off;” >> /usr/local/nginx/conf/nginx.conf //配置nginx保持运行
ENV PATH /usr/local/nginx/sbin:$PATH //优化nginx命令

EXPOSE 80 //发布80端口

CMD [“nginx”] //启动nginx服务
dockerfile容器的实战安装nginx和mysql服务
5. 构建nginx镜像并验证
[[email protected] nginx]# docker build -t nginx:v1.0 .
dockerfile容器的实战安装nginx和mysql服务
dockerfile容器的实战安装nginx和mysql服务
[[email protected] nginx]# docker images
dockerfile容器的实战安装nginx和mysql服务
映射验证服务
[[email protected] nginx]# docker run -it -d -p 80:80 nginx:v1.0
dockerfile容器的实战安装nginx和mysql服务
客户端访问192.168.100.10验证
dockerfile容器的实战安装nginx和mysql服务
三. dockerfile安装mysql

  1. 创建存储dockerfile目录
    [[email protected] ~]# mkdir mysql
    dockerfile容器的实战安装nginx和mysql服务
  2. 移动源代码存储到dockerfile目录
    [[email protected] ~]# cp /mnt/mysql -5.5.22.tar.gz /mnt/cmake-2.8.6.tar.gz ./nginx/
    dockerfile容器的实战安装nginx和mysql服务
  3. 创建dockerfile文件和mysqld.sh启动服务文件编辑安装mysql
    [[email protected] mysql]# vim dockerfile

FROM hub.c.163.com/public/centos:6.7-tools //基础镜像
MAINTAINER [email protected] //作者信息

RUN rm -rf /etc/yum.repos.d/Centos-* //删除本地yum源
RUN wget -o wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo //更新阿里云源
RUN yum -y install epel-release ncurses-devel libstdc+±deve gcc-c++ //安装依赖程序

RUN groupadd mysql //创建mysql组
RUN useradd -M -s /sbin/nologin -g mysql mysql //创建mysql用户

ADD cmake-2.8.6.tar.gz /usr/src/ //添加解压程序到/usr/src/目录
ADD mysql-5.5.22.tar.gz /usr/src/ //添加解压程序到/usr/src/目录

WORKDIR /usr/src/cmake-2.8.6 //进入目录
RUN ./configure && gmake && gmake install //编译安装
WORKDIR /usr/src/mysql-5.5.22 //进入目录
RUN cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc && make && make install //编译安装mysql服务

RUN chown -R mysql:mysql /usr/local/mysql/ //设置目录所有者mysql
RUN cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf //生成主配置文件
RUN ln -s /usr/local/mysql/bin/* /usr/local/bin //优化命令
RUN cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //生成服务控制文件
RUN chmod u+x /etc/init.d/mysqld //添加执行权限
RUN chkconfig --add mysqld //设置开机自动启动
RUN chkconfig mysqld on
RUN /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //初始化mysql服务
COPY mysqld.sh /usr/src/ //运行服务启动脚本
RUN chmod +x /usr/src/mysqld.sh //设置执行权限
EXPOSE 3306 //端口发布3306
CMD “/usr/src/mysqld.sh” && tail -f /dev/null //启动服务报的信息显示到/dev/null回收站
dockerfile容器的实战安装nginx和mysql服务
[[email protected] mysql]# vim mysqld.sh

#!/bin/bash
/etc/init.d/mysqld start //启动mysql服务
dockerfile容器的实战安装nginx和mysql服务
4. 构建mysql镜像验证
[[email protected] mysql]# docker build -t mysql:v1.0 .
dockerfile容器的实战安装nginx和mysql服务
5. 端口映射验证是否能监听到3306mysql端口
[[email protected] ~]# docker run -it -d -p 3306:3306 mysql:v1.0
[[email protected] ~]# netstat -anptu | grep 3306
dockerfile容器的实战安装nginx和mysql服务