docker构建lnmp

创建nginx容器

拉取镜像

[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
busybox      latest    d23834f29b38   2 days ago     1.24MB
nginx        latest    ea335eea17ab   2 weeks ago    141MB
centos       latest    5d0da3dc9764   2 months ago   231MB

创建运行容器

[root@localhost ~]# docker run --name nginx -it 5d0da3dc9764
[root@88fb4bcabced /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@88fb4bcabced /]# 

在容器里下载wget

[root@88fb4bcabced opt]# yum -y install wget

下载nginx包

[root@88fb4bcabced opt]# wget http://nginx.org/download/nginx-1.20.2.tar.gz
--2021-12-02 13:16:09--  http://nginx.org/download/nginx-1.20.2.tar.gz
Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6, ...
Connecting to nginx.org (nginx.org)|3.125.197.172|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1062124 (1.0M) [application/octet-stream]
Saving to: 'nginx-1.20.2.tar.gz'

nginx-1.20.2 100%   1.01M   471KB/s    in 2.2s     

2021-12-02 13:16:13 (471 KB/s) - 'nginx-1.20.2.tar.gz' saved [1062124/1062124]


创建用户

[root@88fb4bcabced ~]#  useradd -r -M -s /sbin/nologin nginx
[root@88fb4bcabced ~]# id nginx
uid=998(nginx) gid=996(nginx) groups=996(nginx)

解压

[root@88fb4bcabced opt]# tar xf nginx-1.20.2.tar.gz 
[root@88fb4bcabced opt]# ls
nginx-1.20.2  nginx-1.20.2.tar.gz

下载依赖包

[root@88fb4bcabced ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++  make
[root@88fb4bcabced ~]# yum -y groups mark install 'Development Tools'

创建日志目录

[root@88fb4bcabced ~]# mkdir -p /var/log/nginx
[root@88fb4bcabced ~]# chown -R nginx.nginx /var/log/nginx

编译安装

[root@88fb4bcabced nginx-1.20.2]# ./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@88fb4bcabced nginx-1.20.2]# make
[root@88fb4bcabced nginx-1.20.2]# make install

查看

[root@88fb4bcabced local]# ls
bin  games    lib    libexec  sbin   src
etc  include  lib64  nginx    share
[root@88fb4bcabced local]# cd  nginx/
[root@88fb4bcabced nginx]# ls
conf  html  logs  sbin
[root@88fb4bcabced nginx]# 

配置环境变量

[root@88fb4bcabced nginx]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@88fb4bcabced nginx]# source /etc/profile.d/nginx.sh
[root@88fb4bcabced nginx]# which nginx/usr/local/nginx/sbin/nginx

启动服务

[root@88fb4bcabced ~]# 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@88fb4bcabced ~]# ps -ef | grep nginx
root        2964       1  0 13:32 ?        00:00:00 nginx: master process nginx
nginx       2965    2964  0 13:32 ?        00:00:00 nginx: worker process
root        2977       1  0 13:39 pts/0    00:00:00 grep --color=auto nginx
[root@88fb4bcabced ~]# 
 

访问nginx

[root@88fb4bcabced nginx]# curl 172.17.0.3
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

重新进入nginx容器

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS          PORTS     NAMES
88fb4bcabced   5d0da3dc9764   "/bin/bash"   About an hour ago   Up 37 minutes             nginx

[root@localhost ~]# docker exec -it  88fb4bcabced /bin/bash
[root@88fb4bcabced /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@88fb4bcabced /]# ip  a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
20: eth0@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@88fb4bcabced /]# ss -antl
State        Recv-Q        Send-Q               Local Address:Port                Peer Address:Port        Process        
[root@88fb4bcabced /]# nginx
[root@88fb4bcabced /]# 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@88fb4bcabced /]# 

另开一个终端

生成镜像

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED       STATUS       PORTS     NAMES
88fb4bcabced   5d0da3dc9764   "/bin/bash"   2 hours ago   Up 2 hours             nginx
[root@localhost ~]# docker commit -p 88fb4bcabced
sha256:b91efabcfdd75297787afc09c186e643df0a96439af51ff39126e82d3ee148ac
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
<none>       <none>    b91efabcfdd7   34 seconds ago   550MB
busybox      latest    d23834f29b38   2 days ago       1.24MB
nginx        latest    ea335eea17ab   2 weeks ago      141MB
centos       centos8   5d0da3dc9764   2 months ago     231MB
centos       latest    5d0da3dc9764   2 months ago     231MB
[root@localhost ~]# docker tag b91efabcfdd7 sktystwd/nginx:v0.1
[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED              SIZE
sktystwd/nginx   v0.1      b91efabcfdd7   About a minute ago   550MB
busybox          latest    d23834f29b38   2 days ago           1.24MB
nginx            latest    ea335eea17ab   2 weeks ago          141MB
centos           centos8   5d0da3dc9764   2 months ago         231MB
centos           latest    5d0da3dc9764   2 months ago         231MB


编写启动文件

[root@cbaf5ff45ebf conf]# cat /opt/script.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/bin/bash
[root@cbaf5ff45ebf opt]# chmod +x script.sh 
[root@cbaf5ff45ebf opt]# ls
bag  nginx-1.20.2  script.sh

用正在运行的容器重新生成一个镜像

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                 CREATED          STATUS          PORTS                                   NAMES

26982cfa02d7   0e27d2cf1321   "/bin/bash"             18 minutes ago   Up 18 minutes                                           nginx

[root@localhost ~]# docker commit -p -c 'CMD ["/bin/bash","/opt/start-nginx.sh"]' 26982cfa02d7 sktystwd/nginx:v0.5
sha256:5a170055277a2b75565f80068cb919534520a398d9397399244fd7a9a6e1affc
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED              SIZE
sktystwd/nginx   v0.5      5a170055277a   3 seconds ago        619MB
nginx            v0.4      f1de6f785f29   About a minute ago   619MB
sktystwd/nginx   v0.3      0e27d2cf1321   19 hours ago         550MB
busybox          latest    d23834f29b38   3 days ago           1.24MB
centos           centos8   5d0da3dc9764   2 months ago         231MB
centos           latest    5d0da3dc9764   2 months ago         231MB



用这个镜像创建容器

[root@localhost ~]# docker run -it --name nginx2 -p 8080:80 5a170055277a  /opt/start-nginx.sh
[root@9cf28ddb005a /]# 
[root@9cf28ddb005a /]# ls
bin  home   lost+found  opt   run   sys  var
dev  lib    media       proc  sbin  tmp
etc  lib64  mnt         root  srv   usr

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                 CREATED          STATUS          PORTS                                   NAMES
9cf28ddb005a   5a170055277a   "/opt/start-nginx.sh"   10 minutes ago   Up 10 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx2


创建mysql容器

可以用复制到容器里

docker cp  mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz mysql:/usr/src/

安装依赖包

[root@fcf365bc138c ~]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs libaio numactl

创建用户

[root@fcf365bc138c ~]# useradd -r -M -s /sbin/nologin mysql

解压

[root@fcf365bc138c src]# ls
debug    mysql-5.7.34-linux-glibc2.12-x86_64
kernels  mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

[root@fcf365bc138c src]# ln -sv mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql
[root@fcf365bc138c ~]# mkdir /opt/data
[root@fcf365bc138c ~]# chown  -R mysql.mysql /opt/data 
[root@fcf365bc138c ~]# ls -ld /usr/local/mysql/
drwxr-xr-x. 9 root root 129 Dec  3 13:32 /usr/local/mysql/
[root@fcf365bc138c ~]# chown  -R mysql.mysql /usr/local/mysql/
[root@fcf365bc138c ~]# ls -ld /usr/local/mysql/
drwxr-xr-x. 9 mysql mysql 129 Dec  3 13:32 /usr/local/mysql/
[root@fcf365bc138c ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data
2021-12-03T15:54:31.313679Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-12-03T15:54:31.519755Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-12-03T15:54:31.553883Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-12-03T15:54:31.608305Z 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: 4dce26ca-5451-11ec-80a5-0242ac110004.
2021-12-03T15:54:31.608924Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-12-03T15:54:31.977464Z 0 [Warning] CA certificate ca.pem is self signed.
2021-12-03T15:54:32.176172Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.



[root@fcf365bc138c ~]# 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@fcf365bc138c ~]# vim /usr/local/mysql/support-files/mysql.server 
......
basedir=/usr/local/mysql
datadir=/opt/data
.......


启动数据库

[root@fcf365bc138c ~]# /usr/local/mysql/bin/mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@fcf365bc138c tmp]# sudo /usr/local/mysql/support-files/mysql.server start
Starting MySQL.Logging to '/opt/data/fcf365bc138c.err'.
 SUCCESS! 
[root@fcf365bc138c ~]# which mysql
which: no mysql in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
[root@fcf365bc138c ~]# cat /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH
[root@fcf365bc138c ~]# source /etc/profile.d/mysql.sh
[root@fcf365bc138c ~]# 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> exit
Bye

编写一个启动脚本

[root@fcf365bc138c ~]# vim /opt/start-mysql.sh
[root@fcf365bc138c ~]# chmod +x /opt/start-mysql.sh
[root@fcf365bc138c ~]# cat /opt/start-mysql.sh
#!/bin/bash
/etc/init.d/mysqld start
sleep 1
sudo /usr/local/mysql/support-files/mysql.server start


用正在运行的容器创建镜像

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                 CREATED       STATUS       PORTS                                   NAMES
fcf365bc138c   5d0da3dc9764   "/bin/bash"             4 hours ago   Up 4 hours                                           mysql
[root@localhost ~]# docker commit -p -c 'CMD ["/opt/start-mysql.sh"]' fcf365bc138c sktystwd/mysql:v0.3 sha256:fbce51054c17b80ec25ffa558f6ab08a2153c6ccdafc346eb12a66f47bc321dc
[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
sktystwd/mysql   v0.3      fbce51054c17   41 seconds ago   3.88GB

用这个新生成的镜像创建容器

[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
sktystwd/mysql   v0.3      fbce51054c17   3 minutes ago    3.88GB
sktystwd/mysql   v0.2      ea3147f3fb21   10 minutes ago   3.88GB
sktystwd/nginx   v0.5      5a170055277a   5 hours ago      619MB
sktystwd/nginx   v0.3      0e27d2cf1321   24 hours ago     550MB
busybox          latest    d23834f29b38   3 days ago       1.24MB
centos           centos8   5d0da3dc9764   2 months ago     231MB
centos           latest    5d0da3dc9764   2 months ago     231MB

[root@localhost ~]# docker run -it --name mysql5 sktystwd/mysql:v0.3 /opt/start-mysql.sh
Starting MySQL SUCCESS! 
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                 CREATED       STATUS       PORTS                                   NAMES
fcf365bc138c   5d0da3dc9764   "/bin/bash"             4 hours ago   Up 4 hours                                           mysql
9cf28ddb005a   5a170055277a   "/opt/start-nginx.sh"   5 hours ago   Up 5 hours   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx2


创建php容器

[root@localhost ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
sktystwd/mysql   v0.3      fbce51054c17   18 minutes ago   3.88GB
sktystwd/mysql   v0.2      ea3147f3fb21   24 minutes ago   3.88GB
sktystwd/nginx   v0.5      5a170055277a   5 hours ago      619MB
sktystwd/nginx   v0.3      0e27d2cf1321   24 hours ago     550MB
busybox          latest    d23834f29b38   3 days ago       1.24MB
centos           centos8   5d0da3dc9764   2 months ago     231MB
centos           latest    5d0da3dc9764   2 months ago     231MB
[root@localhost ~]# docker run --name php8 -it centos:latest
[root@13319ddbcd7d /]# 

安装依赖包


[root@13319ddbcd7d php-8.0.10]# 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

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
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@13319ddbcd7d /]# cd  /usr/src/
[root@13319ddbcd7d src]# ls
debug  kernels  php-8.0.10.tar.xz
[root@13319ddbcd7d src]# tar xf php-8.0.10.tar.xz 
[root@13319ddbcd7d src]# ls
debug  kernels  php-8.0.10  php-8.0.10.tar.xz
[root@13319ddbcd7d src]# cd  php-8.0.10

编译

./configure --prefix=/usr/local/php8  \
    --with-config-file-path=/etc \
    --enable-fpm \
    --disable-debug \
    --disable-rpath \
    --enable-shared \
    --enable-soap \
    --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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值