掌握CentOS7环境下的Docker使用(三)构建nginx镜像、构建redis镜像

构建nginx镜像

下载nginx压缩包

下载nginx压缩包->地址:http://nginx.org/en/download.html

在这里插入图片描述

宿主机安装并启动nginx

安装gccpcre-develzlib-developenssl-devel

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel

将安装包上传到/root/test目录下,解压缩后进入解压后的文件中,执行:
./configure --prefix=/usr/local/nginx && make && make install

/usr/local/nginx:将nginx安装到的目录

在这里插入图片描述
安装结束

启动nginx
进入安装目录:/usr/local/nginx/sbin,使用:./nginx运行
在这里插入图片描述

检查验证:先关闭防火墙
在这里插入图片描述

dockerfile构建nginx

安装nginx的shell脚本:

#!/bin/bash
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
cd /usr/local/nginx-1.22.1
./configure --prefix=/usr/local/nginx && make && make install

#!/bin/bash:是指此脚本使用/bin/bash来解释执行

dockerfile:

FROM centos:7
ADD nginx-1.22.1.tar.gz /usr/local
COPY nginx_install.sh /usr/local
RUN sh /usr/local/nginx_install.sh
EXPOSE 80

注意:nginx_install.sh(shell脚本要和dockerfile放到同一个目录里)

制作Nginx镜像:
docker build -t mycentos:nginx .

Nginx镜像启动注意:
在容器里nginx是以daemon方式启动,退出容器时,nginx程序也会随着停止:/usr/local/nginx/sbin/nginx
使用前台方式永久运行:/usr/local/nginx/sbin/nginx -g "daemon off;"

docker run -itd -p 80:80 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

检查验证:
在这里插入图片描述

构建redis镜像

下载redis压缩包

官网下载->地址:https://download.redis.io/releases/
在这里插入图片描述

宿主机安装并启动redis

安装gccopenssl-devel

yum install -y gcc gcc-c++ make openssl openssl-devel

将安装包上传到/root/test目录下,进入解压后的redis压缩包
cd redis-5.0.2

安装redis
make && make PREFIX=/usr/local/redis install

注意:使用 yum下载gcc最高只能下载到4.8版本,如果使用redis6.0以后的稳定版本则正常安装会报错,建议使用6.0以前的版本

使用echo $?可以查看上一条命令报错条数,为0即为执行成功
在这里插入图片描述

安装路径中创建conf目录,将解压后的redis-5.0.2目录下的配置文件redis.conf复制到新建的目录中

mkdir -p /usr/local/redis/conf/
cp /root/test/redis-5.0.2/redis.conf /usr/local/redis/conf/

注意:因为安装过程中不会自动产生一个存放配置文件的路径,也没有配置文件,但是启动redis需要配置文件,所以我们要手动创建目录并拷贝配置文件过去

宿主机启动redis(前台启动):
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
在这里插入图片描述

面试注意:redis默认端口是6379

dockerfile构建redis

编写redis编译安装shell脚本redis_install.sh

#!/bin/bash
yum install -y gcc gcc-c++ make openssl openssl-devel
cd /root/test/redis-5.0.2
make && make PREFIX=/usr/local/redis install
mkdir -p /usr/local/redis/conf/
cp /root/test/redis-5.0.2/redis.conf /usr/local/redis/conf/

编写Dockerfile

FROM centos:7
ADD redis-5.0.2.tar.gz /root/test
COPY redis_install.sh /root/test
RUN sh /root/test/redis_install.sh
ENTRYPOINT /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

制作redis镜像:
docker build -t mycentos:redis .
在这里插入图片描述

启动redis容器:
docker run -itd -p 6380:6379 mycentos:redis #6380是宿主机端口,6379是容器的端口
在这里插入图片描述
用宿主机的6380端口映射宿主机的6379端口

进入redis容器:
docker exec -it 72aac1b49ea6 /bin/bash
在这里插入图片描述
端口是6379,默认监听本机(127.0.0.1)不允许任何远程连接

验证容器中redis:
/usr/local/redis/bin/redis-cli:进入redis客户端
在这里插入图片描述
部署成功

宿主机连接容器的redis:

  1. 容器中进入配置文件:vi /usr/local/redis/conf/redis.conf

  2. 修改protected-mode值为no

  3. 注释bind 127.0.0.1
    在这里插入图片描述

  4. 验证(使用映射端口):/usr/local/redis/bin/redis-cli -p 6380
    在这里插入图片描述
    验证成功

  5. 验证(使用容器ip):
    使用docker inspect 72aac1b49ea6找到容器id
    在这里插入图片描述
    /usr/local/redis/bin/redis-cli -h 172.17.0.2 -p 6379
    在这里插入图片描述
    验证成功

注意:使用ip连接容器redis端口要使用6379,因为是以ip地址方式远程连接,不需要映射

在宿主机连接容器的redis的过程中需要手动修改容器中的配置文件,如果不想手动修改,可以在dockerfile中配置,在dockerfile最后添加:

# /usr/local/redis/conf/redis.conf文件匹配69行127.0.0.1改为0.0.0.0(所有人都可以连接)
sed -i '69s/127.0.0.1/0.0.0.0/' /usr/local/redis/conf/redis.conf

# /usr/local/redis/conf/redis.conf文件匹配88行protected-mode yes改为protected-mode no
sed -i '88s/protected-mode yes/protected-mode no/' /usr/local/redis/conf/redis.conf

不建议这样做,很不安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆浆两块钱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值