基于容器搭建lnmp架构
在docker环境中拉取最新的centos镜像,基于centos镜像来制作nginx、mysql、php镜像
[root@docker ~]# 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@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 2 months ago 231MB
构建nginx镜像
基于centos镜像创建一个新容器命名为nginx
[root@docker ~]# docker run --name nginx -it centos
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9be839be5ed centos "/bin/bash" 17 seconds ago Up 16 seconds nginx
在容器中编译安装nginx
[root@docker src]# docker cp nginx-1.20.2.tar.gz nginx:/usr/src
[root@e9be839be5ed /]# useradd -r -M -s /sbin/nologin nginx
[root@e9be839be5ed /]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
[root@e9be839be5ed /]# mkdir -p /var/log/nginx
[root@e9be839be5ed /]# chown -R nginx.nginx /var/log/nginx
[root@e9be839be5ed /]# cd /usr/src/
[root@e9be839be5ed src]# ls
debug kernels nginx-1.20.2.tar.gz
[root@e9be839be5ed src]# tar xf nginx-1.20.2.tar.gz
[root@e9be839be5ed src]# cd nginx-1.20.2
[root@e9be839be5ed nginx-1.20.2]# ls
CHANGES CHANGES.ru LICENSE README auto conf configure contrib html man src
[root@e9be839be5ed 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@e9be839be5ed nginx-1.20.2]# make && make install
再开一个终端制作nginx镜像并用该镜像运行容器测试
[root@docker ~]# docker commit -c 'CMD ["/bin/bash","/opt/nginx-start.sh"]' -p nginx 93quan/nginx:v1
sha256:c6c354211762480e4b501a0c401f065e6987910f536c3efd77d300e8c562e45f
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
93quan/nginx v1 c6c354211762 38 seconds ago 549MB
93quan/php8 v1 8470c6b46097 57 seconds ago 1.52GB
93quan/mysql v1 f7f5cd3137f3 2 hours ago 3.81GB
centos latest 5d0da3dc9764 2 months ago 231MB
[root@docker ~]# docker run --name test -d 93quan/nginx:v1
b048cca10c08802082dabcd682da4b8e4e67bddf98d50c3305afa882d0763f0c
构建mysql镜像
基于centos镜像创建一个新容器命名为mysql
[root@docker ~]# docker run --name mysql -it centos
[root@docker src]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS