zoukankan      html  css  js  c++  java
  • docker的搭建和简单应用

      1 dockerserver端安装
      2 先下载docker的yum源
      3 wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      4 然后安装
      5 yum -y install docker-ce
      6 在/etc/docker/里修改daemon.json文件,修改成如下
      7 {
      8 "registry-mirrors":[ "https://registry.docker-cn.com" ]
      9 }
     10 重启守护进程
     11 systemctl daemon-reload
     12 启动docker命令
     13 systemctl start docker
     14 查看版本号的命令
     15 docker --version
     16 查看公网上的镜像
     17 docker search centos:7 (名字,冒号后边的是版本不写默认是latest版本)
     18 查看公网镜像也可以加详细的参数,比如100星级以上
     19 docker search centos -f stars=100
     20 在公网上下载镜像,pull
     21 docker pull centos:7 (名字,冒号后边是版本号不写默认是latest)
     22 查看镜像命令
     23 docker images
     24 想要自己建立镜像需要偶先创建文件目录
     25 mkdir -p /root/dockerfile/library/centos/7
     26 cd /root/dockerfile/library/centos/7/
     27 在目录里创建容器里的简单执行脚本
     28 vim docker.sh
     29 #!/bin/bash
     30 while true 
     31 do 
     32 echo "苏哥"
     33 sleep 5
     34 done
     35 然后写镜像文件Dockerfile名字一定不能错
     36 FROM centos #是基于那个镜像创建,没有的话会去公网下载
     37 LABEL MAINTATNER="SU"#标签,创建者名字
     38 RUN ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime#创建之前修改时区
     39 COPY docker.sh /home/test/#将脚本复制到镜像里的test下,路径是相对Dockerfile的文件
     40 RUN chmod +x /home/test/docker.sh#给镜像里边的脚本加执行权限
     41 CMD ["/home/test/docker.sh"]#执行脚本,启动容器时,必须要有一个进程在执行,要不启不 
     42  43 建立镜像
     44 docker build -t su/centos7:1 . (注意需要在有Dockerfile的目录里输入命令)
     45 启动容器
     46 docker run -dit su/centos7:1 /bin/bash(可以加/bin/bash,也可以不加)
     47 docker run -dit --name sunan su/centos7:1 (启动的时候给容器器个名字叫sunan)
     48 -d :放在后天运行
     49 -i:可以交互输入命令
     50 -t:启动一个伪终端
     51 -c:指定几个cpu来运行内存
     52 -m:指定几个内容。
     53 隐形参数--name 给容器起名。
     54 看容器的日志
     55 docker logs sunan(可以是名字,也可以是id)
     56 看启动的容器
     57 docker ps -a(加a是看所有)
     58 开始运行容器
     59 docker start xxx(可以是容器的名字,也可以是容器的id)
     60 重启一个容器
     61 docker restart xxx(可以是容器的名字,也可以是id)
     62 停止运行容器
     63 时时的输出容器的资源使用状况
     64 docker stats xxx --no-stream(容器的名字或者id,类似top命令)
     65 加参数--no-stream是只输出一次就可
     66 docker stop xxx(可以是容器的名字,也可以是容器的id)
     67 切进容器的命令
     68 docker attach xxx(可以是容器的名字,也可以是容器的id)
     69 exit是退出容器
     70 杀容器
     71 docker kill xxx (容器的名字,或者容器的id,直接删掉容器的进程,使其处于停止。)
     72 删除容器
     73 docker rm xxx(容器的名字,或者容器的id,必须先停止容器以后才能删,)
     74 -f 强删
     75 删除镜像
     76 docker rmi xxx (容器的名字,或者容器的id)
     77 -f强删
     78 将一个更改过的容器封装成一给性的镜像(先进去一个容器,搭建个项目,退出从封装)
     79 docker commit xxx(原来的容器,更改过的) xxx/xxx(新的镜像叫什么名字)
     80 不进容器,直接发布命令
     81 docker exec (-dit) xxx(容器的名字,或者id) ls /(想要执行的命令)
     82 参数
     83 -dit直接可以切进去
     84 容器和属主机直接的复制文件命令
     85 docker cp /tmp/dockerfile(文件的路径)xxx:/tmp(容器的名字或者ip,冒号后面是地址)( 
     86 也是吧什么复制到哪里的格式)
     87 创建一个新的容器,
     88 docker create -it xxx(镜像的名字或者id)(用法跟run一样,只是create不启动容器,想要 
     89 启动还需要用start命令启动下)
     90 查看容器进程与源镜像做对比看哪里不一样
     91 docker diff xxx(容器的名字或者id)
     92 返回的结果C是多了什么 
     93 A是少了什么
     94 监控容器的变化
     95 docker events
     96 导出容器
     97 docker export xxx(容器的名字或者id) > yyyy.tar(导出来的容器叫什么名字)
     98 将导出的容器创建为一个镜像
     99 docker import yyy.tar(导出来的容器的名字)zzz(导入要创建的镜像叫什么名字)
    100 查看镜像的历史记录
    101 docker history xxx (镜像的名字或者id)
    102 查看镜像的详细信息
    103 docker inspect xxx(镜像的民族或者id)
    104 导出镜像
    105 docker save xxx(要导出的镜像的名字或者id) > yyy.tar(导出来叫什么明教)
    106 导入镜像
    107 docker load < yyy.tar (需要导入的镜像的名字。有相同的镜像是不让导入的)
    108 暂停容器的命令(unpause是回复暂停的容器)
    109 docker pause xxx(容器的名字或者id)
    110 查看容器的端口映射协议
    111 docker port xxx(容器的名字或者id)
    112 想要在启动的时候添加容器的映射端口
    113 docker run -dit --name xx -p 80:80 yy(xx容器起名叫,80:80将属主机的80端口映射到容器 
    114 里的80端口,yy要启动的镜像的名字)
    115 给容器改名
    116 docker rename xxx yyy(xxx原来的名字,yyy想要叫的名字)
    117 用于克隆镜像的
    118 docker tag xxx xxx1(将什么,克隆成什么,可以当场软连接,要删一起删)
    119 调整启动以后的容器的cpu和内存
    120 docker update -c 2 xxx(需要调整的)
    121 -c调整cpu
    122 -m调整内存。需要多少直接在后边写就可以了
    123 监控容器的的退出状态
    124 docker wait xxx(容器的名字或者id)
    125 创建一个自定义网路
    126 docker network creat lnmp (创建个自定义网路叫lnmp)
    127 查看docker网络
    128 docker network ls查看所有网桥网路
    129 brctl show同上
    130 login用于登陆docker hub官方公有的仓库
    131 logout用于登出官方公有的仓库
    132 push将本地的镜像提交到docker hub
    133 挂载容器卷
    134 分为两种,volume卷放的地方是指定的,没有回自动创建,不特别指定都是volume类型
    135 命令docker volume ls 查看系统卷(用volume挂载不会顶掉原来有的东西,会直接出现到卷里)
    136 卷放的地方/var/lib/docker/volumes/
    137 docker volume create xxx (创建一个卷,会固定放到指定的地方)
    138 查看自volume的卷的命令
    139 docker volume ls
    140 想要挂载卷需要在启动的时候挂
    141 docker run -dit --name nginx-test -p 80:80 --mount src=xxx,dst=/usr/share/nginx/html 
    142 nginx(src后边直接写卷的名字,系统会到指定的地方去找,dst写挂到哪里,事例写的是挂到 
    143 Nginx的网页目录下)
    144 第二种自己创建的目录挂载
    145 mkdir -p /www/html
    146 docker run -dit --name nginx-test2 -p 81:80 --mount 
    147 type=bind,src=/www/html/,dst=/usr/shar/nginx/html (用自己创建的挂在会顶掉原理有的) 
    148 用docker搭建一个lnmp的环境
    149 首先要自己创建一个叫lnmp的网路
    150 docker network create lnmp
    151 然后启动mysql的镜像
    152 [root@localhost ~]# docker run -dit --name lnmp_mysql --network lnmp -p 3306:3306 
    153 --mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123123 mysql:5.6 -- 
    154 character-set-server=utf8
    155 想容器里创建一个库
    156 [root@localhost ~]# docker exec lnmp_mysql sh -c 'exec mysql -uroot - 
    157 p"$MYSQL_ROOT_PASSWORD" -e "create database wp"'
    158 提示一下创建成功
    159 mysql: [Warning] Using a password on the command line interface can be insecure.
    160 然后开始部署php和Nginx
    161 先创建一个网页目录
    162 mkdir -p /app/wwwroot
    163 然后启动php和ngin的镜像(前题需要下载好richarvey/nginx-php-fpm这个镜像)
    164 [root@localhost ~]# docker run -dit --name lnmp_web --net lnmp -p 88:80 --mount 
    165 type=bind,src=/app/wwwroot,dst=/var/www/html richarvey/nginx-php-fpm
    166 将博客的包解压到自己设置好的挂载目录/app/wwwroot/167 [root@localhost ~]# tar xf wordpress-4.7.4-zh_CN.tar.gz -C /app/wwwroot/
    168 [root@localhost ~]# cd /app/wwwroot/
    169 然后打开浏览器去访问你的ip地址的88端口就可以了

     

     

    docker的网桥搭建
    容器网路有5种模式
    bridge 网桥模式
    host仅主机模式(跟属主机一个网路)
    none 不给容器配置任何的网路环境,专门用来陪桥接的
    container 连个容器用以个网卡
    自定义模式,就跟网桥一样,就是自己起个名字

    需要安装支持包
    [root@localhost ~]# yum -y install bridge-utils
    创建启动一个host模式的容器
    [root@localhost ~]# docker run -dit --name suge --net host centos:latest /bin/bash
    创建一个none模式的容器
    [root@localhost ~]# docker run -dit --name suge --net none centos:latest /bin/bash
    桥接属主机需要的配置(想要桥接容器必须是none的模式,最后在指定网桥)
    [永久配置]
    #vim /etc/sysconfig/network-scripts/ifcfg-ens32
    DEVICE=ens32
    TYPE=Ethernet
    ONBOOT=yes
    BRIDGE=br0
    
    
    # vim /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.3.10
    NETMASK=255.255.255.0
    GATEWAY=192.168.3.1
    DNS=144.144.144.144
    
    [临时配置]
    #网桥的名称
    br_name=br0
    #添加网桥
    brctl addbr $br_name
    #给网桥设置ip
    ip addr add 192.168.1.120/24 dev $br_name
    #删除已经存在的网卡配置
    ip addr del 192.168.1.120/24 dev ens32
    #激活网桥
    ip link set $br_name up
    #添加ens32到网桥
    brctl addif $br_name ens32
    #添加路由
    ip route add default via 192.168.1.1 dev br0
    
    还需要在docker启动是桥接这个网桥
    #vim /usr/lib/systemd/system/dcker.service
    ExecStart=/usr/bin/docker -b=br0
    #systemctl restart docker
    永久的配置我们重启网路
    systemctl restart network
    
    指定网桥需要工具pipework
    工具下载地址https://github.com/jpetazzo/pipwork.git
    有zip包需要装unzip解压软件
    yum -y install unzip
    pipework br0 test2 192.168.200.199/24@192.168.200.2(指定网桥br0给test2容器,ip是 
    192.168.200.199掩码24位网关是192.168.200.2)

    docker的重点镜像制作

    常用的指令
    FROM 构建新的镜像是基于那个镜像的,例如:FROM centos:7
    MAINTAINER 镜像的作者或者邮箱地址,例如:MAINTTAINER SUGE
    RUN 构建镜像是的shell命令,例如:RUN ["yum","install,""http"]或者写成RUN yum install 
    http
    CMD 运行容器时的shell名,可以被参数俯瞰,例如CMD ["-c","start.sh"]或者CMD 
    ["/usr/sbin/sshd","-D"]或者CMD /usr/sbin/sshd -D
    EXPOSE 声明容器运行的服务端口,不声明,运行的时候没办法开启,例如EXPOSE 80 443
    ENV 设置容器内环境变量,例如ENV MYSQL_ROOT_PASSWORD 123456
    ADD 拷贝文件或目录到镜像里边,如果是压缩包会自动解压的,例如ADD ["src","dest"]或者 
    ADD http://xxx.com/html.tar.gz /var/www/html,或者ADD html.tar.gz /var/www/html(源文 
    件的相对路径是想对Dockerfile这个文件的)
    COPY 复制文件或者目录到镜像,不自动解压,例如COPY ./start.sh /start.sh
    ENTRYPOINT 运行容器时的shell命令不能被运行是传递的参数覆盖,例如:ENTRYPOINT 
    [“/bin/bash”,“-c”.“/start.sh”]或者ENTRYPOINT /bin/bash -c "start.sh"
    VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器,例如:VOLUME 
    [“/var/lib/mysql”]
    USER 是RUN,CMD,ENTRYPOINT执行命令指定的运行用户,例如:USER SUGE
    WORKDIR 为RUN ,CMD,ENTRYPOINT,COPY,ADD设置工作目录,(指定进入容器中默认的目录),例 
    如:WORKDIR /data
    HEALTHCHECK 健康检查。例如:HEALTHCHECK --interval=5m --timeout=3s --retries=3 CMD 
    curl -f http://localhost/ || exit 1
    ARG 在构建镜像时指定一下参数,例如:ARG user
    编译一个简单的Dockerfile首先开启ip转发
    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    sysctl -p 
    建立一个nginx的镜像,我们要在/root/dockerfile/library/下建立Nginx的目录,
    Dokerfile的内容
    FROM centos:7
    MAINTAINER www.aliangedu.com
    RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
    ADD nginx-1.12.1.tar.gz /tmp
    
    RUN cd /tmp/nginx-1.12.1 && 
    ./configure --prefix=/usr/local/nginx && 
    make -j 2 &&  #(-j 是启动即个核来编译)
    make install
    
    RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
    
    COPY nginx.conf /usr/local/nginx/conf
    
    WORKDIR /usr/local/nginx
    EXPOSE 80
    CMD ["./sbin/nginx", "-g", "daemon off;"]
    相关的Nginx的配置文件和压缩包都放置着个目录下,
    Nginx的配置文件
    user root;
    worker_processes auto;
    
    error_log logs/error.log info;
    
    pid logs/nginx.pid;
    
    
    events {
    use epoll;
    }
    
    http {
    
    include mime.types;
    default_type application/octet-stream;
    
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log logs/access.log main;
    sendfile on;
    keepalive_timeout 65;
    
    server {
    listen 80;
    server_name localhost;
    root html;
    index index.html index.php;
    
    location ~ .php$ {
    root html;
    fastcgi_pass lnmp_php:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }
    }
    然后构建开始 
    docker build -t su/Nginx 
    编写php的镜像
    要在/root/dockerfile/library/建立php的目录
    Dockerfile的内容 
    FROM centos:7
    MAINTAINER www.aliangedu.com
    RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg- 
    devel libpng-devel openssl-devel
    ADD php-5.6.31.tar.gz /tmp/
    
    RUN cd /tmp/php-5.6.31 && 
    ./configure --prefix=/usr/local/php 
    --with-config-file-path=/usr/local/php/etc 
    --with-mysql --with-mysqli 
    --with-openssl --with-zlib --with-curl --with-gd 
    --with-jpeg-dir --with-png-dir --with-iconv 
    --enable-fpm --enable-zip --enable-mbstring && 
    make -j 4 && 
    make install && 
    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && 
    sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && 
    sed -i "21a daemonize = no" /usr/local/php/etc/php-fpm.conf
    COPY php.ini /usr/local/php/etc
    
    RUN rm -rf /tmp/php-5.6.31* && yum clean all
    
    WORKDIR /usr/local/php
    EXPOSE 9000
    CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]
    将php的配置文件php.ini,也放到Dockerfile所在的目录里

    一键打包安装镜像

    需要先安装命令docker-compose
    docker-compose的接口文件的命令
    build 下级字段dockerfile:指定Dockerfile文件名,下级字段context;构建镜像上下文路径
    images 指定镜像
    command 执行命令,覆盖默认命令
    container_name 指定容器名称
    deploy 指定部署和运行服务相关配置,只能在Swarm模式使用
    environment 添加环境变量
    networks 加入网络,引用顶级networks下条目
    ports 暴露端口,与-p相同,但端口不能低于60
    volumes 挂载宿主机路径或命名卷。如果是命名卷在顶级volumes定义卷名称
    restart 撑起策略,默认no,always| on-failure|unless-stopped
    hostname 容器主机名
    
    docker-compose的命令
    build 重新构建服务
    ps 列出容器
    ip 创建和启动容器
    exec 在容器里执行命令
    scale 指定一个服务器启动数量
    top 显示容器进程
    logs 查看容器输出
    down 删除容器,网路,数据卷,和镜像
    stop/start/restart 停止/启动/重启服务
    一键启动一个部署lnmp的文件。
    命令docker-compose -f docker-compose.yml up (-f指定接口文件在哪,必须要指定文件) 

     放置入口文件在/root/dockerfile/library/下的树形结构

    [root@localhost library]# tree compose_nginx_tomcat/
    compose_nginx_tomcat/
    ├── docker-compose.yml
    ├── mysql
    │   ├── conf
    │   │   └── my.cnf
    │   └── data
    ├── nginx
    │   ├── Dockerfile
    │   ├── nginx-1.12.1.tar.gz
    │   └── nginx.conf
    ├── tomcat
    │   ├── apache-tomcat-8.0.46.tar.gz
    │   ├── Dockerfile
    │   └── server.xml
    └── webapps
        └── ROOT
            └── index.html
    [root@localhost library]# tree compose_lnmp/(为在构建的时候系统在mysql里写东西的树形结构)
    compose_lnmp/
    ├── docker-compose.yml
    ├── mysql
    │   ├── conf
    │   │   └── my.cnf
    │   └── data
    │       ├── auto.cnf
    │       ├── ibdata1
    │       ├── ib_logfile0
    │       ├── ib_logfile1
    │       ├── mysql
    │       │   ├── columns_priv.frm
    │       │   ├── columns_priv.MYD
    │       │   ├── columns_priv.MYI
    │       │   ├── db.frm
    │       │   ├── db.MYD
    │       │   ├── db.MYI
    │       │   ├── event.frm
    │       │   ├── event.MYD
    │       │   ├── event.MYI
    │       │   ├── func.frm
    │       │   ├── func.MYD
    │       │   ├── func.MYI
    │       │   ├── general_log.CSM
    │       │   ├── general_log.CSV
    │       │   ├── general_log.frm
    │       │   ├── help_category.frm
    │       │   ├── help_category.MYD
    │       │   ├── help_category.MYI
    │       │   ├── help_keyword.frm
    │       │   ├── help_keyword.MYD
    │       │   ├── help_keyword.MYI
    │       │   ├── help_relation.frm
    │       │   ├── help_relation.MYD
    │       │   ├── help_relation.MYI
    │       │   ├── help_topic.frm
    │       │   ├── help_topic.MYD
    │       │   ├── help_topic.MYI
    │       │   ├── innodb_index_stats.frm
    │       │   ├── innodb_index_stats.ibd
    │       │   ├── innodb_table_stats.frm
    │       │   ├── innodb_table_stats.ibd
    │       │   ├── ndb_binlog_index.frm
    │       │   ├── ndb_binlog_index.MYD
    │       │   ├── ndb_binlog_index.MYI
    │       │   ├── plugin.frm
    │       │   ├── plugin.MYD
    │       │   ├── plugin.MYI
    │       │   ├── proc.frm
    │       │   ├── proc.MYD
    │       │   ├── proc.MYI
    │       │   ├── procs_priv.frm
    │       │   ├── procs_priv.MYD
    │       │   ├── procs_priv.MYI
    │       │   ├── proxies_priv.frm
    │       │   ├── proxies_priv.MYD
    │       │   ├── proxies_priv.MYI
    │       │   ├── servers.frm
    │       │   ├── servers.MYD
    │       │   ├── servers.MYI
    │       │   ├── slave_master_info.frm
    │       │   ├── slave_master_info.ibd
    │       │   ├── slave_relay_log_info.frm
    │       │   ├── slave_relay_log_info.ibd
    │       │   ├── slave_worker_info.frm
    │       │   ├── slave_worker_info.ibd
    │       │   ├── slow_log.CSM
    │       │   ├── slow_log.CSV
    │       │   ├── slow_log.frm
    │       │   ├── tables_priv.frm
    │       │   ├── tables_priv.MYD
    │       │   ├── tables_priv.MYI
    │       │   ├── time_zone.frm
    │       │   ├── time_zone_leap_second.frm
    │       │   ├── time_zone_leap_second.MYD
    │       │   ├── time_zone_leap_second.MYI
    │       │   ├── time_zone.MYD
    │       │   ├── time_zone.MYI
    │       │   ├── time_zone_name.frm
    │       │   ├── time_zone_name.MYD
    │       │   ├── time_zone_name.MYI
    │       │   ├── time_zone_transition.frm
    │       │   ├── time_zone_transition.MYD
    │       │   ├── time_zone_transition.MYI
    │       │   ├── time_zone_transition_type.frm
    │       │   ├── time_zone_transition_type.MYD
    │       │   ├── time_zone_transition_type.MYI
    │       │   ├── user.frm
    │       │   ├── user.MYD
    │       │   └── user.MYI
    │       ├── performance_schema
    │       │   ├── accounts.frm
    │       │   ├── cond_instances.frm
    │       │   ├── db.opt
    │       │   ├── events_stages_current.frm
    │       │   ├── events_stages_history.frm
    │       │   ├── events_stages_history_long.frm
    │       │   ├── events_stages_summary_by_account_by_event_name.frm
    │       │   ├── events_stages_summary_by_host_by_event_name.frm
    │       │   ├── events_stages_summary_by_thread_by_event_name.frm
    │       │   ├── events_stages_summary_by_user_by_event_name.frm
    │       │   ├── events_stages_summary_global_by_event_name.frm
    │       │   ├── events_statements_current.frm
    │       │   ├── events_statements_history.frm
    │       │   ├── events_statements_history_long.frm
    │       │   ├── events_statements_summary_by_account_by_event_name.frm
    │       │   ├── events_statements_summary_by_digest.frm
    │       │   ├── events_statements_summary_by_host_by_event_name.frm
    │       │   ├── events_statements_summary_by_thread_by_event_name.frm
    │       │   ├── events_statements_summary_by_user_by_event_name.frm
    │       │   ├── events_statements_summary_global_by_event_name.frm
    │       │   ├── events_waits_current.frm
    │       │   ├── events_waits_history.frm
    │       │   ├── events_waits_history_long.frm
    │       │   ├── events_waits_summary_by_account_by_event_name.frm
    │       │   ├── events_waits_summary_by_host_by_event_name.frm
    │       │   ├── events_waits_summary_by_instance.frm
    │       │   ├── events_waits_summary_by_thread_by_event_name.frm
    │       │   ├── events_waits_summary_by_user_by_event_name.frm
    │       │   ├── events_waits_summary_global_by_event_name.frm
    │       │   ├── file_instances.frm
    │       │   ├── file_summary_by_event_name.frm
    │       │   ├── file_summary_by_instance.frm
    │       │   ├── host_cache.frm
    │       │   ├── hosts.frm
    │       │   ├── mutex_instances.frm
    │       │   ├── objects_summary_global_by_type.frm
    │       │   ├── performance_timers.frm
    │       │   ├── rwlock_instances.frm
    │       │   ├── session_account_connect_attrs.frm
    │       │   ├── session_connect_attrs.frm
    │       │   ├── setup_actors.frm
    │       │   ├── setup_consumers.frm
    │       │   ├── setup_instruments.frm
    │       │   ├── setup_objects.frm
    │       │   ├── setup_timers.frm
    │       │   ├── socket_instances.frm
    │       │   ├── socket_summary_by_event_name.frm
    │       │   ├── socket_summary_by_instance.frm
    │       │   ├── table_io_waits_summary_by_index_usage.frm
    │       │   ├── table_io_waits_summary_by_table.frm
    │       │   ├── table_lock_waits_summary_by_table.frm
    │       │   ├── threads.frm
    │       │   └── users.frm
    │       └── wordpress
    │           └── db.opt
    ├── nginx
    │   ├── Dockerfile
    │   ├── nginx-1.12.1.tar.gz
    │   └── nginx.conf
    ├── php
    │   ├── Dockerfile
    │   ├── php-5.6.31.tar.gz
    │   └── php.ini
    └── wwwroot
        └── index.php
    
    9 directories, 146 files

    lnmp的入口文件

    [root@localhost compose_lnmp]# vim docker-compose.yml 
    
    version: '3'
    services:
      nginx:
        hostname: nginx
        build:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 81:80
        networks:
          - lnmp
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    
      php:
        hostname: php
        build:
          context: ./php
          dockerfile: Dockerfile
        networks:
          - lnmp
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    
      mysql:
        hostname: mysql
        image: mysql:5.6
        ports:
          - 3306:3306
        networks:
          - lnmp
        volumes:
          - ./mysql/conf:/etc/mysql/conf.d
          - ./mysql/data:/var/lib/mysql
        command: --character-set-server=utf8
        environment:
          MYSQL_ROOT_PASSWORD: 123456
          MYSQL_DATABASE: wordpress
          MYSQL_USER: user
          MYSQL_PASSWORD: user123
    
    networks:
      lnmp:
               

    lnmp的mysql的配置文件

    [root@localhost compose_lnmp]# vim my.cnf 
    [mysqld] user
    =mysql port=3306 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock pid-file=/var/run/mysql/mysql.pid log_error=/var/log/mysql/error.log character_set_server = utf8 max_connections=3600

    lnmp的Nginx的配置文件

    user  root;
    worker_processes  auto;
    
    error_log  logs/error.log  info;
    
    pid        logs/nginx.pid;
    
    
    events {
        use epoll;
    }
    
    http {
    
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log logs/access.log main;
        sendfile        on;
        keepalive_timeout  65;
    
        server {
            listen 80;
            server_name localhost;
            root html;
            index index.html index.php;
    
            location ~ .php$ {
                root html;
                fastcgi_pass php:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
            }
        }
    }

    lnmp的Nginx目录下的Dockerfile文件

    FROM centos:7
    MAINTAINER www.Mr_chen.com
    RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
    ADD nginx-1.12.1.tar.gz /tmp
    
    RUN cd /tmp/nginx-1.12.1 && 
        ./configure --prefix=/usr/local/nginx && 
        make -j 2 && 
        make install
    
    RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
    
    COPY nginx.conf /usr/local/nginx/conf
    
    WORKDIR /usr/local/nginx
    EXPOSE 80
    CMD ["./sbin/nginx", "-g", "daemon off;"]
    ~                                                                                                                 
    ~                                               

    lnmp里的php目路里的Dockerfile文件

    FROM centos:7
    MAINTAINER www.Mr_chen.com
    RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel
    ADD php-5.6.31.tar.gz /tmp/
    
    RUN cd /tmp/php-5.6.31 && 
        ./configure --prefix=/usr/local/php 
        --with-config-file-path=/usr/local/php/etc 
        --with-mysql --with-mysqli 
        --with-openssl --with-zlib --with-curl --with-gd 
        --with-jpeg-dir --with-png-dir --with-iconv 
        --enable-fpm --enable-zip --enable-mbstring && 
        make -j 4 && 
        make install && 
        cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && 
        sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && 
        sed -i "21a daemonize = no" /usr/local/php/etc/php-fpm.conf
    COPY php.ini /usr/local/php/etc
    
    RUN rm -rf /tmp/php-5.6.31* && yum clean all
    
    WORKDIR /usr/local/php
    EXPOSE 9000
    CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]

    Nginx-Tomcat的接口文件

    [root@localhost compose_nginx_tomcat]# cat docker-compose.yml 
    version: '3'
    services:
      nginx:
        hostname: nginx
        build:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 82:80
        networks:
          - lnmt
        volumes:
          - ./webapps:/opt/webapps
    
      tomcat01:
        hostname: tomcat01
        build: ./tomcat
        networks:
          - lnmt
        volumes:
          - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
          - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
    
      tomcat02:
        hostname: tomcat02
        build: ./tomcat
        networks:
          - lnmt
        volumes:
          - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
          - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
    
      mysql:
        hostname: mysql
        image: mysql:5.6
        ports:
          - 3307:3306
        networks:
          - lnmt
        volumes:
          - ./mysql/conf:/etc/mysql/conf.d
          - ./mysql/data:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: 123456
          MYSQL_DATABASE: db
          MYSQL_USER: user
          MYSQL_PASSWORD: user123
    
    networks:
      lnmt:

    Nginx-Tomcat里的Nginx配置文件

    [root@localhost nginx]# cat nginx.conf 
    user  root; 
    worker_processes  auto; 
    
    error_log  logs/error.log  info;
    
    pid        logs/nginx.pid; 
    
    
    events {
        use epoll; 
    }
    
    http {
    
        include       mime.types;
        default_type  application/octet-stream;
    
        log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log logs/access.log main;
        sendfile        on;
        keepalive_timeout  65;
        
        upstream www.example.com {
            #ip_hash;
            server tomcat01:8080;
        server tomcat02:8080;
        }
    
        server {
            listen 80;
            server_name localhost;
        
        location / {
            proxy_pass http://www.example.com;
        }
    
            location ~ .(html|css|js|jpg|png|gif)$ {
                root /opt/webapps/ROOT;
            }
        }
    }

    Nginx-Tomcat的Nginx里的Dockerfile

    [root@localhost nginx]# cat Dockerfile 
    FROM centos:7
    MAINTAINER www.Mr_chen.com
    RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
    ADD nginx-1.12.1.tar.gz /tmp
    
    RUN cd /tmp/nginx-1.12.1 && 
        ./configure --prefix=/usr/local/nginx && 
        make -j 2 && 
        make install
    
    RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
    
    COPY nginx.conf /usr/local/nginx/conf
    
    WORKDIR /usr/local/nginx
    EXPOSE 80
    CMD ["./sbin/nginx", "-g", "daemon off;"]

    Nginx-Tomcat里的Tomcat的Dockerfile

    [root@localhost tomcat]# cat Dockerfile 
    FROM centos:7
    MAINTAINER www.Mr_chen.com
    
    ENV JAVA_HOME /usr/local/jdk1.8.0_45
    
    ADD apache-tomcat-8.0.46.tar.gz /usr/local
    COPY server.xml /usr/local/apache-tomcat-8.0.46/conf
    RUN sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/apache-tomcat-8.0.46/bin/catalina.sh 
    
    RUN rm -f /usr/local/*.tar.gz
    
    WORKDIR /usr/local/apache-tomcat-8.0.46
    EXPOSE 8080
    ENTRYPOINT ["./bin/catalina.sh", "run"]

    Nginx-Tomcat里的mysql的配置文件

    [root@localhost conf]# cat my.cnf 
    [mysqld]
    user=mysql
    port=3306
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    pid-file=/var/run/mysql/mysql.pid
    log_error=/var/log/mysql/error.log
    character_set_server = utf8
    max_connections=3600

     

    没有的配置文件就直接从安装的号的Tomcat,php里的配置文件复制一份过来即可

  • 相关阅读:
    ios数据处理 简单文件处理
    ios硬件开发 照相机图像选取器(UIImagePickerController)的用法
    ios UI设计与开发 卷动视图
    ios数据处理 使用SQLite保存学生信息
    ios数据处理 Application preferfences
    ios数据处理 SQLite基本知识
    GDI+ 为了阴影和透明,使用双层窗口遇到的一些问题
    MFC CToolTipCtrl 总是显示
    遍历删除文件夹及文件
    WebService远程调试
  • 原文地址:https://www.cnblogs.com/cash-su/p/10058011.html
Copyright © 2011-2022 走看看