博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker的搭建和简单应用
阅读量:5115 次
发布时间:2019-06-13

本文共 22601 字,大约阅读时间需要 75 分钟。

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调整cpu122 -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 hub133 挂载容器卷134 分为两种,volume卷放的地方是指定的,没有回自动创建,不特别指定都是volume类型135 命令docker volume ls 查看系统卷(用volume挂载不会顶掉原来有的东西,会直接出现到卷里)136 卷放的地方/var/lib/docker/volumes/137 docker volume create xxx (创建一个卷,会固定放到指定的地方)138 查看自volume的卷的命令139 docker volume ls140 想要挂载卷需要在启动的时候挂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/html146 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 lnmp151 然后启动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=utf8155 想容器里创建一个库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和Nginx161 先创建一个网页目录162 mkdir -p /app/wwwroot163 然后启动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-fpm166 将博客的包解压到自己设置好的挂载目录/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-ens32DEVICE=ens32TYPE=EthernetONBOOT=yesBRIDGE=br0# vim /etc/sysconfig/network-scripts/ifcfg-br0DEVICE=br0TYPE=BridgeONBOOT=yesBOOTPROTO=staticIPADDR=192.168.3.10NETMASK=255.255.255.0GATEWAY=192.168.3.1DNS=144.144.144.144[临时配置]#网桥的名称br_name=br0#添加网桥brctl addbr $br_name#给网桥设置ipip 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.serviceExecStart=/usr/bin/docker -b=br0#systemctl restart docker永久的配置我们重启网路systemctl restart network指定网桥需要工具pipework工具下载地址https://github.com/jpetazzo/pipwork.git有zip包需要装unzip解压软件yum -y install unzippipework 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:7MAINTAINER 镜像的作者或者邮箱地址,例如:MAINTTAINER SUGERUN 构建镜像是的shell命令,例如:RUN ["yum","install,""http"]或者写成RUN yum install httpCMD 运行容器时的shell名,可以被参数俯瞰,例如CMD ["-c","start.sh"]或者CMD ["/usr/sbin/sshd","-D"]或者CMD /usr/sbin/sshd -DEXPOSE 声明容器运行的服务端口,不声明,运行的时候没办法开启,例如EXPOSE 80 443ENV 设置容器内环境变量,例如ENV MYSQL_ROOT_PASSWORD 123456ADD 拷贝文件或目录到镜像里边,如果是压缩包会自动解压的,例如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.shENTRYPOINT 运行容器时的shell命令不能被运行是传递的参数覆盖,例如:ENTRYPOINT [“/bin/bash”,“-c”.“/start.sh”]或者ENTRYPOINT /bin/bash -c "start.sh"VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器,例如:VOLUME [“/var/lib/mysql”]USER 是RUN,CMD,ENTRYPOINT执行命令指定的运行用户,例如:USER SUGEWORKDIR 为RUN ,CMD,ENTRYPOINT,COPY,ADD设置工作目录,(指定进入容器中默认的目录),例 如:WORKDIR /dataHEALTHCHECK 健康检查。例如:HEALTHCHECK --interval=5m --timeout=3s --retries=3 CMD curl -f http://localhost/ || exit 1ARG 在构建镜像时指定一下参数,例如:ARG user

 

编译一个简单的Dockerfile首先开启ip转发echo "net.ipv4.ip_forward=1" >> /etc/sysctl.confsysctl -p 建立一个nginx的镜像,我们要在/root/dockerfile/library/下建立Nginx的目录,Dokerfile的内容FROM centos:7MAINTAINER www.aliangedu.comRUN yum install -y gcc gcc-c++ make openssl-devel pcre-develADD nginx-1.12.1.tar.gz /tmpRUN cd /tmp/nginx-1.12.1 && \./configure --prefix=/usr/local/nginx && \make -j 2 && \ #(-j 是启动即个核来编译)make installRUN rm -rf /tmp/nginx-1.12.1* && yum clean allCOPY nginx.conf /usr/local/nginx/confWORKDIR /usr/local/nginxEXPOSE 80CMD ["./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:7MAINTAINER www.aliangedu.comRUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg- devel libpng-devel openssl-develADD 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.confCOPY php.ini /usr/local/php/etcRUN rm -rf /tmp/php-5.6.31* && yum clean allWORKDIR /usr/local/phpEXPOSE 9000CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]将php的配置文件php.ini,也放到Dockerfile所在的目录里

 

一键打包安装镜像

需要先安装命令docker-composedocker-compose的接口文件的命令build 下级字段dockerfile:指定Dockerfile文件名,下级字段context;构建镜像上下文路径images 指定镜像command 执行命令,覆盖默认命令container_name 指定容器名称deploy 指定部署和运行服务相关配置,只能在Swarm模式使用environment 添加环境变量networks 加入网络,引用顶级networks下条目ports 暴露端口,与-p相同,但端口不能低于60volumes 挂载宿主机路径或命名卷。如果是命名卷在顶级volumes定义卷名称restart 撑起策略,默认no,always| on-failure|unless-stoppedhostname 容器主机名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.php9 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: user123networks:  lnmp:

lnmp的mysql的配置文件

[root@localhost compose_lnmp]# vim my.cnf  [mysqld]user=mysqlport=3306datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockpid-file=/var/run/mysql/mysql.pidlog_error=/var/log/mysql/error.logcharacter_set_server = utf8max_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:7MAINTAINER www.Mr_chen.comRUN yum install -y gcc gcc-c++ make openssl-devel pcre-develADD nginx-1.12.1.tar.gz /tmpRUN cd /tmp/nginx-1.12.1 && \    ./configure --prefix=/usr/local/nginx && \    make -j 2 && \    make installRUN rm -rf /tmp/nginx-1.12.1* && yum clean allCOPY nginx.conf /usr/local/nginx/confWORKDIR /usr/local/nginxEXPOSE 80CMD ["./sbin/nginx", "-g", "daemon off;"]~                                                                                                                 ~

lnmp里的php目路里的Dockerfile文件

FROM centos:7MAINTAINER www.Mr_chen.comRUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-develADD 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.confCOPY php.ini /usr/local/php/etcRUN rm -rf /tmp/php-5.6.31* && yum clean allWORKDIR /usr/local/phpEXPOSE 9000CMD ["./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: user123networks:  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:7MAINTAINER www.Mr_chen.comRUN yum install -y gcc gcc-c++ make openssl-devel pcre-develADD nginx-1.12.1.tar.gz /tmpRUN cd /tmp/nginx-1.12.1 && \    ./configure --prefix=/usr/local/nginx && \    make -j 2 && \    make installRUN rm -rf /tmp/nginx-1.12.1* && yum clean allCOPY nginx.conf /usr/local/nginx/confWORKDIR /usr/local/nginxEXPOSE 80CMD ["./sbin/nginx", "-g", "daemon off;"]

Nginx-Tomcat里的Tomcat的Dockerfile

[root@localhost tomcat]# cat Dockerfile FROM centos:7MAINTAINER www.Mr_chen.comENV JAVA_HOME /usr/local/jdk1.8.0_45ADD apache-tomcat-8.0.46.tar.gz /usr/localCOPY server.xml /usr/local/apache-tomcat-8.0.46/confRUN 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.gzWORKDIR /usr/local/apache-tomcat-8.0.46EXPOSE 8080ENTRYPOINT ["./bin/catalina.sh", "run"]

 

Nginx-Tomcat里的mysql的配置文件

[root@localhost conf]# cat my.cnf [mysqld]user=mysqlport=3306datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockpid-file=/var/run/mysql/mysql.pidlog_error=/var/log/mysql/error.logcharacter_set_server = utf8max_connections=3600

 

 

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

转载于:https://www.cnblogs.com/cash-su/p/10058011.html

你可能感兴趣的文章
集合体系
查看>>
vi命令提示:Terminal too wide
查看>>
引用 移植Linux到s3c2410上
查看>>
MySQL5.7开多实例指导
查看>>
[51nod] 1199 Money out of Thin Air #线段树+DFS序
查看>>
poj1201 查分约束系统
查看>>
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>
个人对vue生命周期的理解
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>