通过docker容器搭建lamp架构的流程
目录
1. 拉取centos镜像
[root@localhost ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 2 months ago 231MB [root@localhost ~]#
2. 构建nginx镜像
[root@localhost ~]# docker run --name nginx -it centos [root@522006030d19 /]# useradd -r -M -s /sbin/nologin nginx [root@522006030d19 /]# yum -y install pcre-devel pcre gcc gcc-c++ openssl-devel zlib zlib-devel make vim wget openssl openssl-devel gd-devel [root@522006030d19 /]# mkdir -p /var/log/nginx [root@522006030d19 /]# chown -R nginx.nginx /var/log/nginx [root@522006030d19 /]# cd /usr/src/ [root@522006030d19 src]# wget https://nginx.org/download/nginx-1.20.1.tar.gz [root@522006030d19 src]# tar xf nginx-1.20.1.tar.gz [root@522006030d19 src]# cd nginx-1.20.1 [root@522006030d19 nginx-1.20.1]# ./configure \ > --prefix=/usr/local/nginx \ > --user=nginx \ > --group=nginx \ > --with-debug \ > --with-http_ssl_module \ > --with-http_realip_module \ > --with-http_image_filter_module \ > --with-http_gunzip_module \ > --with-http_gzip_static_module \ > --with-http_stub_status_module \ > --http-log-path=/var/log/nginx/access.log \ > --error-log-path=/var/log/nginx/error.log [root@522006030d19 nginx-1.20.1]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install [root@522006030d19 nginx-1.20.1]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh[root@522006030d19 nginx-1.20.1]# source /etc/profile.d/nginx.sh [root@522006030d19 nginx-1.20.1]# nginx [root@522006030d19 nginx-1.20.1]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:80 0.0.0.0:* [root@522006030d19 nginx-1.20.1]# [root@522006030d19 nginx-1.20.1]# echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf [root@522006030d19 nginx-1.20.1]# tail -1 /usr/local/nginx/conf/nginx.conf daemon off; [root@522006030d19 nginx-1.20.1]#
//打开另外一个终端 [root@localhost ~]# docker commit -c 'CMD ["/usr/local/nginx/sbin/nginx"]'-p nginx pengyudong/nginx:v1 sha256:2153a12060f6cca88646f285a1ae2af2a94c0d489ad8393f931d29c8fdd8af6e [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pengyudong/nginx v1 2153a12060f6 27 seconds ago 576MB centos latest 5d0da3dc9764 2 months ago 231MB [root@localhost ~]#
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 522006030d19 centos "/bin/bash" 14 minutes ago Exited (0) 38 seconds ago nginx [root@localhost ~]# docker rm 522006030d19 522006030d19 [root@localhost ~]# docker run pengyudong/nginx:v1 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9c129a20e7c7 pengyudong/nginx:v1 "/usr/local/nginx/sb…" About a minute ago Up 2 seconds blissful_perlman
[root@localhost ~]# docker inspect 9c129a20e7c7 ......省略N行 "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", .....省略N行 [root@localhost ~]# curl 172.17.0.2Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
[root@localhost ~]#
3. 构建mysql镜像
[root@localhost ~]# docker run --name mysql -it centos [root@16256ee64b9e /]# cd /usr/src/ [root@16256ee64b9e src]# ls debug kernels [root@16256ee64b9e src]#
//开启另外一个终端 [root@localhost src]# ls debug kernels mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz [root@localhost ~]# cd /usr/src/ [root@localhost src]# docker cp mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz mysql:/usr/src/
[root@16256ee64b9e src]# ls debug kernels mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz [root@16256ee64b9e src]# [root@16256ee64b9e src]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs libaio numactl [root@16256ee64b9e src]# useradd -r -M -s /sbin/nologin mysql [root@16256ee64b9e src]# tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz [root@16256ee64b9e src]# mv mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql [root@16256ee64b9e src]# cd /usr/local/ [root@16256ee64b9e local]# ls bin etc games include lib lib64 libexec mysql sbin share src [root@16256ee64b9e local]# chown -R mysql.mysql /usr/local/mysql [root@16256ee64b9e local]# mkdir /opt/data [root@16256ee64b9e local]# chown -R mysql.mysql /opt/data [root@16256ee64b9e local]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data 2021-12-06T02:53:34.095554Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2021-12-06T02:53:35.482793Z 0 [Warning] InnoDB: New log files created, LSN=45790 2021-12-06T02:53:35.506011Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2021-12-06T02:53:35.562063Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b4aa24d8-563f-11ec-80a8-0242ac110003. 2021-12-06T02:53:35.562798Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2021-12-06T02:53:35.979249Z 0 [Warning] CA certificate ca.pem is self signed. 2021-12-06T02:53:36.217615Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. [root@16256ee64b9e local]# [root@16256ee64b9e local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@16256ee64b9e local]# . /etc/profile.d/mysql.sh [root@16256ee64b9e local]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [root@16256ee64b9e local]# cat > /etc/my.cnf <[mysqld] > basedir = /usr/local/mysql > datadir = /opt/data > socket = /tmp/mysql.sock > port = 3306 > pid-file = /opt/data/mysql.pid > user = mysql > skip-name-resolve > EOF [root@16256ee64b9e local]# cat /etc/m machine-id modprobe.d/ motd my.cnf makedumpfile.conf.sample modules-load.d/ mtab my.cnf.d/ [root@16256ee64b9e local]# cat /etc/my.cnf [mysqld] basedir = /usr/local/mysql datadir = /opt/data socket = /tmp/mysql.sock port = 3306 pid-file = /opt/data/mysql.pid user = mysql skip-name-resolve [root@16256ee64b9e local]# [root@16256ee64b9e local]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /usr/local/mysql/support-files/mysql.server [root@16256ee64b9e local]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /usr/local/mysql/support-files/mysql.server [root@16256ee64b9e local]# sed -n '46,1p' /usr/local/mysql/support-files/mysql.server basedir=/usr/local/mysql [root@16256ee64b9e local]# sed -n '47,1p' /usr/local/mysql/support-files/mysql.server datadir=/opt/data [root@16256ee64b9e local]# sed -n '46,47p' /usr/local/mysql/support-files/mysql.server basedir=/usr/local/mysql datadir=/opt/data [root@16256ee64b9e local]# [root@16256ee64b9e ~]# /usr/local/mysql/support-files/mysql.server start Starting MySQL.Logging to '/opt/data/16256ee64b9e.err'. SUCCESS! [root@16256ee64b9e ~]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 80 *:3306 *:* [root@16256ee64b9e ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.34 MySQL Community Server (GPL) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> set password = password('123'); Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> exit Bye [root@16256ee64b9e ~]# [root@16256ee64b9e ~]# mkdir /scripts [root@16256ee64b9e ~]# vi /scripts/start.sh [root@16256ee64b9e ~]# sed -n '1,3p' /scripts/start.sh #!/bin/bash /usr/local/mysql/support-files/mysql.server start /bin/bash [root@16256ee64b9e ~]# chmod +x /scripts/start.sh [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pengyudong/nginx v1 2153a12060f6 28 minutes ago 576MB centos latest 5d0da3dc9764 2 months ago 231MB [root@localhost ~]# docker commit -c 'CMD ["/scripts/start.sh"]' -p mysql pengyudong/mysql:v1 sha256:9c8b9aa2d9177e737138f7a42976210fd6e7b039cb543c306281be72c351806e [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pengyudong/mysql v1 9c8b9aa2d917 4 seconds ago 3.81GB pengyudong/nginx v1 2153a12060f6 30 minutes ago 576MB centos latest 5d0da3dc9764 2 months ago 231MB
[root@localhost ~]# docker run --name mysql-1 -dit --net=container:97c5a3076d39 pengyudong/mysql:v1
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ade839dc292e pengyudong/mysql:v1 “/scripts/start.sh” 12 minutes ago Up 12 minutes mysql-1
29007b1a67a8 pengyudong/nginx:v1 “/usr/local/nginx/sb…” 2 hours ago Up About an hour
[root@localhost ~]# docker exec -it mysql-1 /bin/bash
[root@29007b1a67a8 /]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 80 *:3306 :
4. 构建php镜像
[root@localhost ~]# cd /usr/src/ [root@localhost src]# ls debug kernels mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz php-8.0.10.tar.gz [root@localhost src]# docker cp php-8.0.10.tar.gz php8:/usr/src/ [root@a116c2a489fe src]# ls debug kernels php-8.0.10.tar.gz [root@a116c2a489fe src]# yum -y install epel-release [root@a116c2a489fe src]# yum -y install sqlite-devel libzip-devel libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel oniguruma gcc gcc-c++ make libcurl-devel [root@a116c2a489fe src]# yum -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm [root@a116c2a489fe src]# tar xf php-8.0.10.tar.gz [root@a116c2a489fe src]# cd php-8.0.10 [root@a116c2a489fe php-8.0.10]# ./configure --prefix=/usr/local/php8 \ > --with-config-file-path=/etc \ > --enable-fpm \ > --disable-debug \ > --disable-rpath \ > --enable-shared \ > --enable-soap \ nable-exif \ --enable-ftp \ --enable-gd \ --with-jpeg \ --with-zlib-dir \ --with-freetype \ --with-gettext \ --enable-mbstring \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-readline \ --enable-shmop \ --enable-simplexml \ --en> --with-openssl \ > --enable-bcmath \ > --with-iconv \ > --with-bz2 \ > --enable-calendar \ > --with-curl \ > --enable-exif \ > --enable-ftp \ > --enable-gd \ > --with-jpeg \ > --with-zlib-dir \ > --with-freetype \ > --with-gettext \ > --enable-mbstring \ > --enable-pdo \ > --with-mysqli=mysqlnd \ > --with-pdo-mysql=mysqlnd \ > --with-readline \ > --enable-shmop \ > --enable-simplexml \ > --enable-sockets \ > --with-zip \ > --enable-mysqlnd-compression-support \ > --with-pear \ > --enable-pcntl \ > --enable-posix [root@a116c2a489fe php-8.0.10]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install [root@a116c2a489fe php-8.0.10]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php.sh [root@a116c2a489fe php-8.0.10]# source /etc/profile.d/php.sh [root@a116c2a489fe php-8.0.10]# cp -f /usr/src/php-8.0.10/php.ini-production /etc/php.i cp: overwrite '/etc/php.i'? yes [root@a116c2a489fe php-8.0.10]# cp -f /usr/src/php-8.0.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@a116c2a489fe php-8.0.10]# chmod +x /etc/init.d/php-fpm [root@a116c2a489fe php-8.0.10]# cp -f /usr/local/php8/etc/php-fpm.conf.default /usr/local//php8/etc/php-fpm.conf [root@a116c2a489fe php-8.0.10]# cp -f /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf [root@a116c2a489fe php-8.0.10]# mkdir /scripts [root@a116c2a489fe php-8.0.10]# vi /scripts/start.sh [root@a116c2a489fe php-8.0.10]# cat /scripts/start.sh #!/bin/bash /etc/init.d/php-fpm start /bin/bash [root@a116c2a489fe php-8.0.10]# chmod +x /scripts/start.sh [root@a116c2a489fe php-8.0.10]# /etc/init.d/php-fpm start Starting php-fpm done [root@a116c2a489fe php-8.0.10]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* [root@a116c2a489fe php-8.0.10]#
[root@0e6298ebe47d php-8.0.10]#
[root@0e6298ebe47d php-8.0.10]# mkdir -p /var/www/html
[root@0e6298ebe47d php-8.0.10]# vi /var/www/html/index.php
[root@0e6298ebe47d php-8.0.10]# cat /var/www/html/index.php
<?php phpinfo(); ?>
[root@0e6298ebe47d php-8.0.10]#
[root@localhost src]# docker commit -c 'CMD ["/bin/bash","/scripts/start.sh"]' -p php8 pengyudong/php8:v1 sha256:8ee4d3fb7bd27b0242cf096464932ff98fbc42d641d1f6b9cac7ddccb429f450 [root@localhost src]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pengyudong/php8 v1 8ee4d3fb7bd2 22 seconds ago 1.52GB pengyudong/mysql v1 9c8b9aa2d917 30 minutes ago 3.81GB pengyudong/nginx v1 2153a12060f6 About an hour ago 576MB centos latest 5d0da3dc9764 2 months ago 231MB [root@localhost src]#
5. 配置lnmp
//配置nginx [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a116c2a489fe centos "/bin/bash" 28 minutes ago Up 28 minutes php8 16256ee64b9e centos "/bin/bash" 55 minutes ago Up 29 minutes mysql 9c129a20e7c7 pengyudong/nginx:v1 "/usr/local/nginx/sb…" 59 minutes ago Up 57 minutes blissful_perlman [root@localhost ~]# docker exec -it 9c129a20e7c7 /bin/bash [root@9c129a20e7c7 ~]# vi /usr/local/nginx/conf/nginx.conf ... location / { root html; index index.php index.html index.htm; //加入index.php } ... location ~ \.php$ { root /var/www/html; //修改 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $Document_root$fastcgi_script_name; //修改 include fastcgi_params; } ...
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a116c2a489fe centos "/bin/bash" 35 minutes ago Up 35 minutes php8 16256ee64b9e centos "/bin/bash" About an hour ago Up 36 minutes mysql 9c129a20e7c7 pengyudong/nginx:v1 "/usr/local/nginx/sb…" About an hour ago Up 46 seconds blissful_perlman [root@localhost ~]# docker commit -c 'CMD ["/usr/local/nginx/sbin/nginx"]'-p 9c129a20e7c7 pengyudong/nginx:v2 sha256:8ca4733bb94edf9dac98982610e626b663052000d2c165127e257eeebec34027 [root@localhost ~]# sha256:dd9ec3401a3df247bc19cb792a076cfa915e67cb88fdbdfbf2284bbda6ac9a78 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pengyudong/nginx v2 dd9ec3401a3d 7 seconds ago 576MB pengyudong/php8 v1 8ee4d3fb7bd2 8 minutes ago 1.52GB pengyudong/mysql v1 9c8b9aa2d917 38 minutes ago 3.81GB pengyudong/nginx v1 2153a12060f6 About an hour ago 576MB centos latest 5d0da3dc9764 2 months ago 231MB [root@localhost ~]#
//配置php [root@localhost ~]# docker exec -it php8 /bin/bash [root@a116c2a489fe /]# mkdir -p /var/www/html [root@a116c2a489fe /]# vi /var/www/html/index.php [root@a116c2a489fe /]# cat /var/www/html/index.php <?php phpinfo(); ?> [root@a116c2a489fe /]# [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a116c2a489fe centos "/bin/bash" 37 minutes ago Up 37 minutes php8 16256ee64b9e centos "/bin/bash" About an hour ago Up 38 minutes mysql 9c129a20e7c7 pengyudong/nginx:v1 "/usr/local/nginx/sb…" About an hour ago Up 3 minutes blissful_perlman [root@localhost ~]# docker commit -c 'CMD ["/bin/bash","/scripts/start.sh"]' -p php8 pengyudong/php8:v2 sha256:6e582cd9d5e8ce4b91addb12e6a53a6e3f5cf762aabe2ce24e5f6396ec3f15ed [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE pengyudong/php8 v2 6e582cd9d5e8 8 seconds ago 1.52GB pengyudong/nginx v2 dd9ec3401a3d 2 minutes ago 576MB pengyudong/php8 v1 8ee4d3fb7bd2 10 minutes ago 1.52GB pengyudong/mysql v1 9c8b9aa2d917 40 minutes ago 3.81GB pengyudong/nginx v1 2153a12060f6 About an hour ago 576MB centos latest 5d0da3dc9764 2 months ago 231MB [root@localhost ~]#
//使用container模式使容器间通信 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a116c2a489fe centos "/bin/bash" 38 minutes ago Up 38 minutes php8 16256ee64b9e centos "/bin/bash" About an hour ago Up 40 minutes mysql 9c129a20e7c7 pengyudong/nginx:v1 "/usr/local/nginx/sb…" About an hour ago Up 4 minutes blissful_perlman [root@localhost ~]# docker rm -f a116c2a489fe 16256ee64b9e 9c129a20e7c7 a116c2a489fe 16256ee64b9e 9c129a20e7c7 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# [root@localhost ~]# docker run --name nginx -dit -p 80:80 pengyudong/nginx:v2 f64441e51181b9dc41806a9b1363a22ce28fd83f4cbd7f85df6eed88774a4197 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f64441e51181 pengyudong/nginx:v2 "/usr/local/nginx/sb…" 7 seconds ago Up 7 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx [root@localhost ~]# [root@localhost ~]# docker run --name mysql -dit --net=container:f64441e51181 pengyudong/mysql:v1 96530de34b37a5fc6af1564df64f423321b04641f6aea5a3dd5be199f02a8510 [root@localhost ~]# docker run --name php8 -dit --net=container:f64441e51181 pengyudong/php8:v2 27834149fc66f007ba1cca5d298351d39f7d819af3f1ec6fcf8e12bbdc39fb4d [root@localhost ~]# [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 27834149fc66 pengyudong/php8:v2 "/bin/bash /scripts/…" 29 seconds ago Up 28 seconds php8 96530de34b37 pengyudong/mysql:v1 "/scripts/start.sh" About a minute ago Up About a minute mysql f64441e51181 pengyudong/nginx:v2 "/usr/local/nginx/sb…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx [root@localhost ~]# docker exec -it nginx /bin/bash [root@f64441e51181 /]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* LISTEN 0 128 0.0.0.0:80 0.0.0.0:* LISTEN 0 80 *:3306 *:* [root@f64441e51181 /]#
到此这篇关于docker容器搭建lamp架构的文章就介绍到这了,更多相关docker搭建lamp内容请搜索潘少俊衡以前的文章或继续浏览下面的相关文章希望大家以后多多支持潘少俊衡!
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:/jtjc/Linux/104494.html