目录
| 主机名 | ip地址 | 主要软件 |
| mysql2 | 192.168.11.22 | Docker |
代码示例
- systemctl stop firewalld
- systemctl disable firewalld
- setenforce 0
-
- docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
-
- #部署nginx(容器IP 为 172.18.0.10)
-
- mkdir /opt/nginx
- cd /opt/nginx/
-
- 上传 nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz 到 /opt/nginx/ 目录中
- mkdir /opt/nginx/html
- tar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/nginx/html
-
- vim Dockerfile
-
- FROM centos:7
- MAINTAINER this is nginx image
- RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
- RUN useradd -M -s /sbin/nologin nginx
- ADD nginx-1.12.0.tar.gz /usr/local/src/
- WORKDIR /usr/local/src/nginx-1.12.0
- RUN ./configure \
- --prefix=/usr/local/nginx \
- --user=nginx \
- --group=nginx \
- --with-http_stub_status_module && make && make install
- ENV PATH /usr/local/nginx/sbin:$PATH
- ADD nginx.conf /usr/local/nginx/conf/
- #ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/
- RUN chmod 777 -R /usr/local/nginx/html/
- EXPOSE 80
- EXPOSE 443
- ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
-
-
- docker build -t nginx:lnmp .
-
- docker run -d --name nginx -p 80:80 -v /opt/nginx/html:/usr/local/nginx/html --net mynetwork --ip 172.18.0.10 nginx:lnmp
-
-
- #部署mysql(容器IP 为 172.18.0.20)
- mkdir /opt/mysqld
- cd /opt/mysqld
-
- 上传 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目录中
-
- vim Dockerfile
-
- FROM centos:7
- MAINTAINER this is mysql image
- RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
- ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
- WORKDIR /usr/local/src/mysql-5.7.20/
- RUN cmake \
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
- -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
- -DSYSCONFDIR=/etc \
- -DSYSTEMD_PID_DIR=/usr/local/mysql \
- -DDEFAULT_CHARSET=utf8 \
- -DDEFAULT_COLLATION=utf8_general_ci \
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
- -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
- -DMYSQL_DATADIR=/usr/local/mysql/data \
- -DWITH_BOOST=boost \
- -DWITH_SYSTEMD=1 && make && make install
- ADD my.cnf /etc/
- ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
- RUN useradd -M -s /sbin/nologin mysql
- RUN chown mysql:mysql /etc/my.cnf
- RUN chown -R mysql:mysql /usr/local/mysql/
- RUN /usr/local/mysql/bin/mysqld \
- --initialize-insecure \
- --user=mysql \
- --basedir=/usr/local/mysql \
- --datadir=/usr/local/mysql/data
- EXPOSE 3306
- CMD ["/usr/local/mysql/bin/mysqld"]
-
-
- vim my.cnf
- [client]
- port = 3306
- socket = /usr/local/mysql/mysql.sock
-
- [mysql]
- port = 3306
- socket = /usr/local/mysql/mysql.sock
-
- [mysqld]
- user = mysql
- basedir = /usr/local/mysql
- datadir = /usr/local/mysql/data
- port = 3306
- character_set_server=utf8
- pid-file = /usr/local/mysql/mysqld.pid
- socket = /usr/local/mysql/mysql.sock
- server-id = 1
-
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
-
-
- docker build -t mysql:lnmp .
-
- docker run --name=mysql -d --privileged -v /usr/local/mysql --net mynetwork --ip 172.18.0.20 mysql:lnmp
-
-
- #部署php(容器IP 为 172.18.0.30)
- mkdir /opt/php
- cd /opt/php
-
- 上传 php-7.1.10.tar.bz2 到 /opt/php 目录中
-
- vim Dockerfile
-
- FROM centos:7
- MAINTAINER this is php image
- RUN yum -y install gd \
- libjpeg libjpeg-devel \
- libpng libpng-devel \
- freetype freetype-devel \
- libxml2 libxml2-devel \
- zlib zlib-devel \
- curl curl-devel \
- openssl openssl-devel \
- gcc gcc-c++ make pcre-devel
- RUN useradd -M -s /sbin/nologin nginx
- ADD php-7.1.10.tar.bz2 /usr/local/src/
- WORKDIR /usr/local/src/php-7.1.10
- RUN ./configure \
- --prefix=/usr/local/php \
- --with-mysql-sock=/usr/local/mysql/mysql.sock \
- --with-mysqli \
- --with-zlib \
- --with-curl \
- --with-gd \
- --with-jpeg-dir \
- --with-png-dir \
- --with-freetype-dir \
- --with-openssl \
- --enable-fpm \
- --enable-mbstring \
- --enable-xml \
- --enable-session \
- --enable-ftp \
- --enable-pdo \
- --enable-tokenizer \
- --enable-zip && make && make install
- ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
- ADD php.ini /usr/local/php/lib/
- ADD php-fpm.conf /usr/local/php/etc/
- ADD www.conf /usr/local/php/etc/php-fpm.d/
- EXPOSE 9000
- ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]
-
-
- docker build -t php:lnmp .
- docker run --name=php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.30 php:lnmp
- --volumes-from mysql:这个选项指示容器应该使用从另一个名为 "mysql" 的容器挂载的卷。这是一种通过卷在容器之间共享数据的方式。
-
- --volumes-from nginx:类似地,这个选项指示容器应该使用从另一个名为 "nginx" 的容器挂载的卷。
-
- --net mynetwork:这个选项指定容器应该连接到名为 "mynetwork" 的 Docker 网络。这允许容器在该网络中与其他容器进行通信。
-
- --ip 172.18.0.30:这个选项为容器分配了一个特定的 IP 地址(172.18.0.30)。这样可以确保容器具有固定的 IP 地址。
-
- 总之,这个命令的目的是创建一个名为 "php" 的容器,该容器运行 PHP 服务,并通过端口映射、卷共享和网络连接与其他容器("mysql" 和 "nginx")协同工作,组成一个 LNMP(Linux、Nginx、MySQL、PHP)堆栈。容器 "php" 具有固定的 IP 地址 172.18.0.30,并以后台模式运行。
-
-
-
-
-
- docker exec -it mysql /bin/bash
-
- mysql
- create database wordpress;
- grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
- grant all privileges on *.* to 'root'@'%' identified by 'abc123';
- flush privileges;
-
-
- 浏览器访问:
- http://192.168.80.15/wordpress/index.php





![]()


还有以下步骤:
- 创建镜像
- docker build -t mysql:lnmp .
-
- 创建并启动以mysql:lnmp为镜像基础的容器
- docker run --name=mysql -d --privileged -v /usr/local/mysql --net mynetwork --ip 172.18.0.20 mysql:lnmp



四、验证
浏览器中输入:http://192.168.11.22/wordpress/index.php

- 1、限制Nginx容器最多使用500Mb的内存和1G的Swap
- docker run -d --name nginx -p 80:80 -m 500m --memory-swap 1g --net mynetwork --ip 172.20.0.10 nginx:lamp
-
- 2、限制Mysql容器写 /dev/sda 的速率为 10 MB/s
- docker run --name=mysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 mysql:lnmp