创建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