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