文章目录
构建nginx镜像
下载nginx压缩包
下载nginx压缩包->地址:http://nginx.org/en/download.html
宿主机安装并启动nginx
安装gcc
、pcre-devel
、zlib-devel
、openssl-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
安装gcc
、openssl-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:
-
容器中进入配置文件:
vi /usr/local/redis/conf/redis.conf
-
修改
protected-mode
值为no -
注释
bind 127.0.0.1
-
验证(使用映射端口):
/usr/local/redis/bin/redis-cli -p 6380
验证成功 -
验证(使用容器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
不建议这样做,很不安全