• Dockerfile构建lnmr


    Dockerfile详细使用请参考我上一篇博客

    Dockerfile

    升级docker至最新版本(升级之前请先将当前docker卸载)

    curl -fsSL https://get.docker.com/ | sh

    构建之前请先保证宿主机本地源和epel源以及网络正常

    先看代码

    FROM centos:centos7
    
    MAINTAINER THL
    
    # 准备工作创建文件夹
            RUN \
            mkdir -p /usr/local \
            && mkdir -p /etc/redis \
            && mkdir -p /opt/logs \
            && mkdir -p /data/nginx/conf \
            && mkdir -p /data/nginx/html \
            && mkdir -p /var/log/redis \
            && touch /var/log/redis/redis.log \
            && useradd -r -M -s /sbin/nologin mysql \
            && useradd -r -M -s /sbin/nologin redis \
            && useradd -r -M -s /sbin/nologin nginx
    # 复制文件
    COPY jdk-8u301-linux-x64.tar.gz /usr/local
    COPY redis-6.2.6.tar.gz /usr/local
    COPY redis.conf /usr/local/
    
    
    # 复制数据库文件
    COPY mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz /usr/local
    COPY my.cnf /etc/
    # 复制nginx安装文件
    
    COPY nginx-1.19.7.tar.gz /usr/local
    COPY nginx.conf /usr/local/
    
    # 安装vim编辑器
    RUN yum -y install vim
    
    # 安装sshd修改密码
    RUN \
        yum install passwd openssl openssh-server -y \
        && ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' \
        && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' \
        && sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config \
        && echo 123456 | passwd --stdin root \
        && echo root:123456|chpasswd \
        && rm -rf /var/cache/yum/*
    
    # 安装redis
    RUN \
        yum -y install centos-release-scl scl-utils-build gcc \
        && yum install -y devtoolset-8-toolchain \
        && scl enable devtoolset-8 bash \
        && echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile \
        && cd /usr/local \
        && tar xzf redis-6.2.6.tar.gz \
        && cd redis-6.2.6 \
        && make \
        && make install PREFIX=/usr/local/redis  \
        && mv /usr/local/redis.conf /etc
    # 安装mysql
    RUN \
        yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs libaio libaio-devel.x86_64  numactl\
        && cd /usr/local \
        && tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local \
        && ln -sv /usr/local/mysql-5.7.31-linux-glibc2.12-x86_64/  /usr/local/mysql \
        && cd /usr/local/ \
        && chown -R mysql.mysql mysql* \
        && echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/myslq.sh \
        && source /etc/profile.d/myslq.sh \
        && mkdir  /mydata \
        && chown  -R mysql.mysql  /mydata/ \
        && mysqld  --initialize-insecure  --user=mysql   --datadir=/mydata \
        && cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld \
        && sed -i 's#basedir=#basedir=/usr/local/mysql#g' /etc/init.d/mysqld \
        && rm -rf /var/cache/yum/*
    
    # 安装 nginx
    RUN \
        yum -y install  pcre-devel openssl openssl-devel gd-devel  gcc-c++ make  \
        && cd /usr/local \
        && tar -zxvf nginx-1.19.7.tar.gz \
        && rm -rf nginx-1.19.7.tar.gz \
        && cd nginx-1.19.7 \
        && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-pcre && make && make install \
        && ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ \
        && nginx \
        && rm -rf /usr/local/nginx/conf/nginx.conf \
        && mv /usr/local/nginx.conf /usr/local/nginx/conf/ \
        && nginx -s reload
    # 配置java环境变量
    RUN \
        cd /usr/local \
        && tar -zxvf jdk-8u301-linux-x64.tar.gz \
        && rm -rf jdk-8u301-linux-x64.tar.gz \
        && echo 'export JAVA_HOME=/opt/tools/jdk1.8.0_301' >> /etc/profile \
        && echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile \
        && echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile \
        && source /etc/profile
    
    ENV JAVA_HOME /usr/local/jdk1.8.0_301
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    EXPOSE 22 80 3306 63799
    CMD /sbin/init
    
    # 运行docker命令 docker  run -it --name XXX -p 222:22 -p 880:80 -p 33306:3306 -p 63799:63799  -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true centos:v1.0 /bin/bash
    # 启动mysql命令 /usr/local/mysql/support-files/mysql.server start
    # 启动redis命令 /usr/local/redis/bin/redis-server /etc/redis.conf
    # 启动nginx命令 nginx
    • 主要分为四大快。
    • 1.提前创建需要的目录或者文件用户等。
    • 2.复制文件到docker中
    • 3.编译安装软件包
    • 4.配置环境变量等

    看层级

    # tree ./
    ./
    ├── Dockerfile
    ├── jdk-8u301-linux-x64.tar.gz
    ├── libaio-0.3.109-13.el7.x86_64.rpm
    ├── my.cnf
    ├── mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
    ├── nginx-1.19.7.tar.gz
    ├── nginx.conf
    ├── redis-6.2.6.tar.gz
    └── redis.conf
    
    ##绝对不是因为懒所以才把东西全丢在一起

    看文件,配置文件按照自己需求提前配置好放在目录下,直接通过Dockerfile拷贝进去

    my.cnf

    # vim my.cnf 
    
    [mysqld]
    basedir = /usr/local/mysql
    datadir = /mydata
    socket = /tmp/mysql.sock
    port = 3306
    pid-file = /mydata/mysql.pid
    user = mysql
    skip-name-resolve

    redis.conf

    redis的配置文件内容太长了,就不放出来了,直接从redis的压缩包中Copy一个出来把重要的参数改一下就行,这里贴出另一个博客可以参考配置文件的中文翻译

    redis配置文件详解

    nginx就不贴了。

    上方软件包下载链接

    jdk

    链接:https://pan.baidu.com/s/1gOsZJMgt_4QCS8CS4GNdLg
    
    提取码:qwer

    redis

    https://redis.io/download/

    libaio

    https://centos.pkgs.org/7/centos-x86_64/libaio-0.3.109-13.el7.x86_64.rpm.html

    nginx

    http://nginx.org/en/download.html

    mysql

    https://dev.mysql.com/downloads/mysql/

     使用命令构建docker镜像

    # docker build -t lnmr:v2.0 . 1>& file.conf
    -t指定标签名
    .表示运行当前目录下的Dockerfile 
    1>& 构建过程输出到file.conf

    启动命令

    # 运行docker命令 docker  run -it --name XXX -p 222:22 -p 880:80 -p 33306:3306 -p 63799:63799  -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true centos:v1.0 /bin/bash
    # 启动mysql命令 ./usr/local/mysql/support-files/mysql.server start
    # 启动redis命令 /usr/local/redis/bin/redis-server /etc/redis.conf
    # 启动nginx命令 nginx

    docker run启动之后退出容器会停止工作

    退出之后输入 docker start (你docker run 命令中指定的name名称),重新启动下容器即可。

    运行命令详解

    docker  run -it --name XXX -p 222:22 -p 880:80 -p 33306:3306 -p 63799:63799  -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true centos:v1.0 /bin/bash
    
    --name 指定创建出来的容器名
    
    -p 指定要映射出来的端口,左边为宿主,右边为容器
    
    -v 指定映射的目录
    
    --privileged=true 使用该参数,container内的root拥有真正的root权限。
    否则,container内的root只是外部的一个普通用户权限。
    privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
    甚至允许你在docker容器中启动docker容器。
    
    后面centos:v1.0指定的是镜像名 
  • 相关阅读:
    cout 格式化输出
    CreateEvent的用法
    深入理解CRITICAL_SECTION
    const型类成员
    用 const 限定类的成员函数
    C++文件读写详解(ofstream,ifstream,fstream)
    C++中回调函数(CallBack)的使用
    SetTimer函数的用法
    CString转换成int CString类相应函数
    自己设计并制作了一个自己主动温度控制系统
  • 原文地址:https://www.cnblogs.com/lichouluoyu/p/16053666.html
Copyright © 2020-2023  润新知